HTTP隧道
来自维基百科,自由的百科全书
Remove ads
来自维基百科,自由的百科全书
HTTP隧道用于在被限制的网络连接(包括防火墙、NAT和ACL)以及其他限制的情况下在两台计算机之间建立网络链接。该隧道通常由位于DMZ中的代理服务器中介创建。
隧道还可以使用受限网络通常不支持的协议进行通信。
HTTP隧道的常见形式是标准HTTP CONNECT方式。[1][2][3]在这种机制下,客户端要求HTTP代理服务器将TCP连接转发到所需的目的地。然后服务器继续代表客户端进行连接。服务器建立连接后,代理服务器将继续代理与客户端之间的TCP流。只有初始连接请求是HTTP,之后服务器将仅代理建立的TCP连接。
客户端连接到代理服务器,并通过指定端口和要连接的主机建立隧道。 该端口用于指示请求的协议。[4]
CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials
如果代理允许连接,并且代理已连接到指定的主机,则代理将返回2XX成功响应。[4]
HTTP/1.1 200 OK
现在客户端将通过代理访问远程主机。 发送到代理服务器的所有数据都将原样转发到远程主机[4],并且客户端可以使用远程主机支持的任何协议进行通信。
在下面的示例中,客户端在初始CONNECT请求中通过端口号开始SSH通信。
SSH-2.0-OpenSSH_4.3\r\n ... ggg
HTTP隧道也可以仅使用常用的HTTP请求方法(如POST,GET,PUT和DELETE)来实现。这类似于同步HTTP上的双向流(BOSH)中使用的方法。
如示例程序,特殊的HTTP服务器在受保护的网络外部运行,而客户端程序在受保护的网络内部的计算机上运行。
当客户端发送任何网络流量时,客户端都会将流量数据重新打包为HTTP请求,并将数据发送到外部服务器,该外部服务器会提取并执行客户端的原始网络请求。
外部服务器收到此请求的响应后,将其重新打包为HTTP响应,并发送回客户端。
由于所有流量都封装在常规的GET和POST请求和响应中,因此该方法适用于大多数代理、防火墙及内网。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.