HttpTunnel技术介绍

1. 概述

HttpTuunnel(也叫Http隧道,Http穿梭),是这样一种技术: 它用HTTP协议在要通信的Client和Server建立起一条”Tunnel”,然后Client和Server之间的通信,都是在这条Tunnel的基础之上。

HttpTunnel通常被用在受限的网络环境中,比如在NAT环境中的Client,受防火墙限制的环境中的Client等,在这样的环境中,Client不能直接连接到公网(WAN)的Server,这时候就可以通过HttpTunnel技术,来解决上述问题。
2. 原理

上图是HttpTunnel技术的基本原理,它基本的工作过程主要分为以下几个步骤:
(1)Client向ProxyServer发送要连接到Server的请求(Http协议)
(2)Proxy Server向实际的Server发送连接请求(Http协议)
(3)上述两步成功后,就相当于在Client和Server之间存在了一条连通的Tunnel(如上图中的蓝色虚线所示)
(4)后续Client和Server就可以直接进行数据的收发,协议由Client和Server自己约定,与HttpTunnel无关

3. 实现方法
(1) 用Http CONNECT方法的实现
Http协议支持一种叫CONNECT的方法,在上面的原理介绍的第一个步骤中,Client告诉Proxy Server来连接Server的过程中,用的就是Http的CONNECT。下面是一个示例:

注意,Http的CONNECT并不是所有的Proxy Server都实现了,所在这里选择Proxy Server的时候需要注意一下。通常所用到的Proxy Server如Squid和Nginx,Squid是支持Http CONNECT,而Nginx就是不支持的。
(2) 不用Http CONNECT的实现
前面也讲到了,并不是所有的Proxy Server都支持Http CONNECT方法的。这时候就可能需要做一些额外的工作。需要在Client和Proxy之间再增加一个TunnelClient, 在Server和Proxy之间再增加一个Tunnel Server,由TunnelClient/TunnelServer来完成实际的Tunnel的建立和数据的转发。具体的做法可以参考一下GNU HttpTunnel(http://www.nocrew.org/software/httptunnel.html )。

相关日志

 

 

Yes, this is expected.

If you click on Tunnel to Host:443 you'll see the following on the Statistics tab:

The selected session is a HTTP CONNECT Tunnel. This tunnel enables a client to 
send raw traffic (e.g. HTTPS-encrypted streams or WebSocket messages) through 
a HTTP Proxy Server (like Fiddler).

You can automatically hide these tunnels if you like by clicking Rules > Hide Connects.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值