中国科教创新导刊fiddler抓包中的tunnelto和connect请求⽅法
http tunnel和connect现象
在fiddler抓包时,出现了很多 tunnel to,图标是把锁,看右侧的详情,发现使⽤的http connect⽅法。如下图
查了很多资料后,总结如下
connect是为了建⽴http tunnel,connect是http众多⽅法中的其中⼀种,它跟post、get、put、options⽅法是并列的。但是它的使⽤场景很特殊。只有在受限制的⽹络环境中(防⽕墙、NAT、代理器)并且是https通信时,客户端使⽤http connect请求代理服务器,代理服务器使⽤connect⽅法与⽬标服务器建⽴http tunnel,通道建⽴后,客户端与服务器进⾏通信,代理服务器就像透明⼀样,只是接收、转发tcp stream。 为什么要建⽴http tunnel呢?
这是因为,⽹络环境受限,客户端⽆法直接访问某些⽹络,所以只能通过代理服务器访问⽹络,然后,将内容转发给客户端,从宏观上看,客户端与服务器端就像建⽴了⼀条隧道⼀样。 健康之路杂志但是由于http tunnnel可控性不强,所以,服务器通常会限制”可connect的端⼝”(⼀般只开放SSL的443端⼝)
关于NAT(network address translation)环境如下图
fiddler抓包出现⼤量connect tunnel连接
质量管理信息系统
如果理解了上边的话,那么也就明⽩了为什么fiddler抓包时,出现⼤量connect连接?
因为fiddler是代理,访问百度⽹页(使⽤了https协议),满⾜了使⽤connect条件,所以客户端会使⽤connect⽅法与⽬标服务器建⽴http tunnel,⼀旦connection建⽴完成,后续fiddler会转发、接收所有的tcp stream。 江苏教育学院附属小学
当然,并不是所有的受限⽹络(restricted network),https通信时,都会使⽤connect建⽴http tunnel,如果⽬标服务器限制connect⽅法,那么就会使⽤其它⽅法来建⽴通道(post/get);如果服务器不⽀持http tunnel,那么就需要安装http tunnel server端的程序,客户端不⽀持http tunnel,那么客户端就需要安装http tunnel client程序;http tunnel程序包含两部分,server端程序和client端程序; 课外阅读的重要性
《图解HTTP》⼀书中,关于connect⽅法的描述
connect:要求⽤隧道协议连接代理
connect⽅法要求在与代理服务器通信时建⽴隧道,实现⽤隧道协议进⾏tcp通信。主要使⽤SSL和TLS协议把通信内容加密后经⽹络隧道传输。
>www.kepu