HTTP——网关、隧道、中继、Agent代理

http://blog.csdn.net/bjyfb/article/details/20565015

随着时间流逝,人们已经从网上浏览静态资源,发展到共享更复杂的资源,比如数据库内容或动态生成的页面,因此,本篇文章介绍几种用HTTP访问不同资源的方法。

网关

网关是资源和应用程序之间的粘合剂,可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应。严格来说,代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点,扮演“协议转换器”的角色,并以此对网关进行描述:<客户端协议>/<服务器端协议>,服务器通过HTTP与客户端对话,通过其他协议协与服务器通信(HTTP/*),反之(*/HTTP)。

将HTTP流量导向网关时所使用的方式与将流量导向代理的方式相同。一般网关分为协议网关和资源网关,先来谈谈协议网关:

HTTP/*:服务器端Web网关:请求流入原始服务器时,服务器端Web网关会将客户端HTTP请求转换为其他协议。

 

HTTP/HTTPS:服务器端安全网关:通过网关对所有输入Web请求加密,提供额外的隐私和安全性保护。

 

HTTPS/HTTP客户端安全加速网关:HTTPS/HTTP网关位于Web服务器之前,通常作为不可见的拦截网关或反向代理。

 

资源网关,上面讨论的都是通过网络连接客户端和服务器的网关,但最常见的网关会将目标服务器与网关结合在一个服务器中实现。应用程序服务器是服务器端网关,与客户端通过HTTP通信,并与服务器端的应用程序相连,如下图:

 

两个客户端通过HTTP连接到应用程序服务器,应用程序服务器将请求通过一个网关应用编程接口(ApplicationProgramming Interface,API)发送给运行在服务器上的应用程序。第一个流行的应用程序网关API就是通用网关接口(CommonGateway Interface,CGI)。CGI是一个标准的接口集,Web服务器用它来状态程序以响应对特定URL的HTTP请求,并收集程序的输出数据,将其放在HTTP响应中回送。GCI应用程序是独立于服务器的,这个简单的协议(输入请求,转交,响应)就是最古老,也是最常用的服务器扩展接口CGI的本质。

随着Web应用程序提供的服务类型越来越多,还存在两个应用程序之间需要进行数据交换,可以通过构建在HTTP的POST方法之上的RPC,他把RPC的方法及其相关的变量嵌入在POST请求的主体中。还可以想HTTP首部添加XML,SOAP是向HTTP报文添加XML信息的标准方式。

隧道

隧道可以通过HTTP应用程序访问使用非HTTP协议的应用程序,WEB隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上捎带其他协议数据了,使用WEB隧道最常见原因就是要在HTTP连接中嵌入非HTTP流量,这样,这类流量就可以穿过只允许Web流量通过的防火墙了。

CONNECT方法请求隧道网关创建一条到达任意目的服务器和端口的TCP连接,并对客户端和服务器之间的后继数据进行盲转发。隧道最初是为了SSL流量准备的,因为SSL流量是无法通过现存的代理防火墙,因此,会用隧道将非HTTP流量封装到一条HTTP报文中,发送到目的服务器。总得来说,隧道网关无法验证目前使用协议是否就是它原本打算经过隧道传输的协议,因此,恶意用户会通过隧道打开Telnet会话,绕过公司的E-mail扫描器发送E-mail。

中继

中继是没有完全遵循HTTP规范的简单HTTP代理,中继负责处理HTTP中建立连接的部分,然后对字节进行盲转发。HTTP很复杂,所以实现基本的代理功能对流量进行忙转发,而且不执行任何首部和方法逻辑,有时很有用。某些简单盲中继实现中存在的一个常见的问题是,由于他们无法正确处理Connection首部,所以有潜在挂起keep-alive连接的可能,如下图:

 

Agent代理

发起自动HTTP请求的半智能Web客户端,比如搜索引擎用的最多的“网络蜘蛛”,可以在无人监视的情况下发布HTTP事务并获取内容。这里面的动态太庞杂,大家百度吧。

posted @ 2014-09-03 16:12  pesserger  阅读(744)  评论(0编辑  收藏  举报