天天看点

代理、网关、隧道、中继

代理、网关、隧道、中继

1、代理

代理有很多种解释,而我们常常提到的代理,从计算机专业角度来说就是指代理服务器,代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。更重要的是:Proxy Server (代理服务器)是 Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI) 模型的对话层。

代理服务器(Proxy Server)就是个人网络和因特网服务商之间的中间代理机构,它负责转发合法的网络信息,并对转发进行控制和登记。在使用网络浏览器浏览网络信息的时候,如果使用代理服务器,浏览器就不是直接到Web服务器去取回网页,而是向代理服务器发出请求,由代理服务器取回浏览器所需要的信息。目前使用的因特网是一个典型的客户机/服务器结构,当用户的本地机与因特网连接时,通过本地机的客户程序比如浏览器或者软件下载工具发出请求,远端的服务器在接到请求之后响应请求并提供相应的服务。

代理服务器处在客户机和服务器之间,对于远程服务器而言,代理服务器是客户机,它向服务器提出各种服务申请;对于客户机而言,代理服务器则是服务器,它接受客户机提出的申请并提供相应的服务。也就是说,客户机访问因特网时所发出的请求不再直接发送到远程服务器,而是被送到了代理服务器上,代理服务器再向远程的服务器提出相应的申请,接收远程服务器提供的数据并保存在自己的硬盘上,然后用这些数据对客户机提供相应的服务。

2、网关

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

将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信息的标准方式。

3、隧道

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

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

4、中继

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

参考:

http://www.tuicool.com/articles/ERFJni

https://zhidao.baidu.com/question/4047758.html

继续阅读