- 作者: 雪山肥鱼
- 时间:20211204 22:08
- 目的: 网关、隧道、中继
1. 网关
网关:可以作为某种翻译器使用。
网关是资源和应用之间的粘合剂。应用程序可以请求网关处理某条请求,网关可以提供一条响应。
网关可以向数据库发送查询语句,或者生成动态的内容。就像一个门一样,进去一条请求,出来一个响应。
网关置于数据库前.png image.png
a. 网关收到了对FTP,URL 的http 请求。然后网关打卡FTP 连接。并向FTP 服务器发布合适的命令。将文档和正确的http 首部通过http回送
b. 网关通过SSL 收到一条加密的web 请求,网关会对请求进行解密,然后向目标服务器转发一条普通的http请求。可以将这些安全加速器直接放在web服务器前面。以便为原始服务器提供高性能的加密机制。
c. 网关通过应用程序服务器网关API,将http客户端连接到服务器的应用程序上去。在网上购物,查看太难起,或者获取股票报价,访问的就是应用程序服务器网关。
客户端和服务器网关
<客户端协议>/<服务器协议>
比如将 Http 客户端连接到 NNTP 新闻服务器的网关,就是一个HTTP/NNTP 玩骨干。
- 服务器端网关: 通过HTTP 与 客户端对话,通过其他协议服务器通信 (HTTP/*)
- 客户端网关,通过其他协议与客户端对话,通过HTTP与服务器通信(*/HTTP)
2.协议网关
将HTTP 流量导向网关时锁使用的方式与将流量导向代理的方式相同。最常见的方式,显示的配置浏览器使用的网关,对流量进行同名拦截,或者将网关配置为替代者(反向代理)。
服务器网关.png2.1 HTTP/* 服务器Web网关
image.png网关做了以下几件事:
- 发送user 和pwd 命令登录到服务器上
- 发布CWD 命令,转移到服务器合适的目录中去
- 将下载类型设置为ASCII
- 用MDTM获取文档的最后修改时间
- 打开ftp 服务器的数据连接,服务器端口由控制信道返回,一旦数据信道打开,就将对象内容回送给网关。
完成获取后,会将对象放在http响应中回送给客户端。
2.2. HTTP/HTTPS 服务器端安全网关
image.png注意: 发送的各首部全部时加密过的
2.3 HTTPS/HTTP 客户端安全加速器网关
image.png这些HTTPS/HTTP 网关位于Web 服务器之前,通常作为不可见的拦截网关或反向代理使用。他们接受安全的https 流量,对安全流量进行解密,并向web服务器发送普通的http请求。
这些网关中通常都包含专用的解密硬件,以比原始服务器有效得多得方式来解密,减小服务器符合。
这些网关在网关和原始服务器之间发送得时未加密得流量,所以要谨慎使用,确保网关和原始服务器之间得网络时安全得。
3. 资源网关
image.png应用程序服务器是服务器网关,与客户端通过http进行通信,并与服务器端的应用程序相连。
请求通过一个API 发送给运行在服务器上的应用程序。
- 客户端A:
网关收到A 的请求,根据URI 将其通过API 发送给一个数码摄像机应用程序。将得到的图片绑定到一条HTTP响应报文中,再回送给客户端,在客户端浏览器中显示 - 客户端B:
URI 请求的是一个电子上午应用程序。
第一个流行的应用程序网关API 是通用网关接口CGI(Common GateWay Interface).
Web 服务器可以用它来装在程序,以响应对特定URL 的HTTP 请求。并收集程序的输出数据。将其放在HTTP响应中回送。
image.png
3.1 CGI
CGI应用程序时独立于服务器的。所以可以用任意语言实现。CGI 的处理对用户来说不可见。URL中出现的字符cgi,和可能出现的? 是客户端发现使用了CGI 应用程序的唯一线索。
为每条CGI 请求引发一个新进程的开销是很高的,会限制那些使用CGI的服务器性能。加重服务端机器资源的负担。
4.应用程序接口和web服务
http可以作为一种连接应用程序的基础软件来使用。引发一个问题,在两个应用程序之间进行协议接口的协商,以便这些应用程序可以进行数据的交换。
应用程序之间配合工作,所要交互的信息比HTTP 首部所能表达的信息要复杂的多。
5. 隧道
这种方式可以通过HTTP应用程序访问使用非HTTP协议的应用程序。
Web隧道允许用户通过http连接发送非HTTP流量。这样就可以在http上捎带其他协议数据了。
Web隧道是用HTTP的Connect方法建立起来的。
image.png
Connect 方法 请求隧道网关创建一条到达任意目的服务器和端口的TCP连接,并对客户端和服务器之间的数据进行盲转发。
- 客户端发送一条 Connect 请求给隧道网关,客户端的CONNECT方法请求隧道网关打开一条TCP连接。(主机oders.joes-hardware.com的标准SSL端口443的连接)。
- b,c 建立tcp连接
- 连接建立后,网关返回客户端200, connect established.
- 隧道建立,客户端通过http隧道发送的所有数据会直接转发给输出tcp连接,服务器发送的所有数据都会通过http隧道转发给客户端。
5.1 数据隧道、定时、连接管理
管道化后,网关不能对分组的顺序,分组流做任何假设。不操控数据流。
性能优化:
- 客户端允许发送了connect 请求后,接受响应之前,发送隧道数据,这样可以更快的将数据发送给服务器。
- 但是这意味着网关必须能够正确处理跟在请求后的数据。尤其是,网关不能假设网络I/O请求只会返回首部数据,网关必须确保在连接准备就绪时,将首部一同读进来的数据,发送给服务器。(就是 后续数据立刻发送)。
- 在任意时刻,隧道的任意一个端点断开了连接,那个端点发出的所有未传输数据,都会被传送给另一个断电,之后,到另一个端点的连接也会被代理终止。如果还有数据要传输给关闭的端点,数据会被丢弃。
5.2 SSL 隧道
最初开发web隧道时为了通过防火墙来传输加密的SSL流量。因为SSL信息是加密的,无法通过传统的代理服务器转发,隧道会通过一条HTTP连接来传输SSL流量,以穿过端口的80的http 防火墙。
image.png
通常会用隧道将非http流量穿过端口过滤防火墙。比如通过防火墙传输安全的ssl流量。但是这一特性可能会被滥用。谁都通过http隧道流入到组织内部。
5.3 ssl隧道与http/https网关对比
由网关(非客户端)初始化与远端HTTPS 服务器的SSL 会话,然后代表客户端执行https事务。响应会由代理接受并解密,然后通过 不安全的 http传送给客户端。这是网关处理ftp 的方式。
注意:
对于SSL 隧道机制来说,无需在代理中实现SSL。SSL会话是建立在产生请求的客户端和目的web服务器之间。中间的代理服务器只是将加密数据经过隧道传输,并不会在安全事务中扮演其他角色。
5.4 隧道认证
在适当的情况下,也可以将HTTP 的 其他特性与隧道配合使用。尤其是,可以将代理的认证支持与隧道配合使用,对客户端使用隧道的权利进行认证。
打开隧道之前需要认证
6. 中继
中级 relay. 是没有完全遵循http 规范的简单http代理。中继负责处理http中建立连接的部分,然后对字节进行盲转发。
如果盲中继不认识 connect 首部,则会出现哑代理的情况。
image.png
- web 客户端发出 connection:keep-alive 首部报文。
- 中继收到http 请求,但不理解 connection,转发给服务器。Connection 是逐条首部,转发出去后,理应删除掉。但这里没删,且这个盲中继不认识 connection 首部。
- web 服务器收到后,错误的认为 其与盲中继建立长连接。
- 中继 继续盲转发,将来自服务器的数据,转发回客户端,同时等待服务器的关闭。
- 客户端 认为其与服务器建立了长连接,发送数据,但简单中继不会期待同一条连接上还有另一条请求到达,就会挂起请求。浏览器在不停的打转,重发,没有任何进展。
所以尽量使用完全遵循http 的代理服务器
网友评论