网关
1、网关可以作为某种翻译器使用,它抽象除了一种能够到达资源的方法。网关是资源和应用程序之间的粘合剂。应用程序可以(通过HTTP或其他已定义的结构)请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应。有些网关会自动地将HTTP流量转换为其他协议,这样HTTP客户端无需了解其他协议,就可以与其他应用程序进行交互了。
2、将HTTP流量导向网关时所使用的方式与将流量导向代理的方式相同。最常见的方式是显式地配置浏览器使用网关,对流量进行透明的拦截,或者将网关配置为反向代理。
3、HTTP/*:服务器端Web网关
请求流入原始服务器时,服务器端Web网关会将客户端HTTP请求转换为其他协议,传入服务器。完成获取之后,会将对象放在一条HTTP响应中回送给客户端。
4、HTTPS/HTTP:这些网关位于Web服务器之前,通常作为不可见的拦截网关或反向代理使用,它们接收安全的HTTPS流量,对安全流量进行解密,并向Web服务器发送普通的HTTP请求。
5、资源网关:客户端通过HTTP连接到应用程序服务器,但应用程序服务器并没有回送文件,而是将请求通过一个网关应用编程接口(API)发送给运行在服务器上的应用程序。
第一个流行的应用程序网关API就是通用网关接口(CGI)。CGI是一个标准接口集,Web服务器可以用它来装载程序以响应对特定URL的HTTP请求,并收集程序的输出数据,将其放在HTTP响应中回送。
请求需要使用网关的资源时,Web服务器会请应用程序来处理请求。服务器会将应用程序所需的数据数据传送给它。通常就是整条请求。然后应用程序会向服务器返回一条响应或响应数据,服务器则会将其转发给客户端。服务器和网关是相互独立的应用程序,因此它们的责任是分得很清楚的。这种简单的协议(输入请求,转交,响应)就是最古老,也最常用的服务器扩展接口CGI的本质。
6、CGI应用程序是独立于服务器的,所以几乎可以用任意语言来事先。CGI的处理对用户来说是不可见的。客户端完全不清楚服务器和CGI应用程序之间的转接过程。URL中出现字符cgi和可能出现的“?“是客户端发现使用了CGI的唯一线索。
隧道
1、Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上捎带其他协议数据了,这类流量就可以穿过只允许Web流量通过的防火墙了。
2、Web隧道是用HTTP的CONNECT方法建立的。CONNECT方法请求隧道网关创建一条到达任意目的服务器和端口的TCP连接,并对客户端和服务器之间的后继数据进行盲转发。具体建立隧道方法看P218
3、CONNECT请求报文和HTTP报文一样,只不过起始行的方法为CONNECT。响应报文不需要包含Content-Type首部,因为此时连接只是对原始字节进行转接,不再是报文的承载者,所以不需要。
4、对于SSL隧道机制来说,无需在代理中实现SSL。SSL会话是建立在产生请求的客户端和目的Web服务器之间的,中间的代理服务器只是将加密数据经过隧道传输。
中继
1、HTTP中继是没有完全遵循HTTP规范的简单HTTP丹利。中继负责处理HTTP中建立连接的部分,然后对字节进行盲转发。
2、某些简单盲中继实现中存在的一个更常见问题是,由于它们无法正确处理Conneciton首部,所以有潜在的挂起keep-alive连接的可能。