Web协议详解与抓包实战学习系列(四)长短连接

217 阅读2分钟


.

(a)串行段短连接

并不是所有的客户端和服务器都支持长链接

需要connection:keep-alive来开启长连接

connect:close来关闭长连接,发起短连接

connect的其他含义:代理服务器在转发请求的时候,不要转发connection列出的头伏

扩展 hop-by-hop 逐跳首部

blog.csdn.net/u010369338/…

(b)长连接

1、长连接只是将TCP连接的特性暴露出来;
2、客户端和服务器,需要在完成1次request/response后,继续保持TCP连接不要关闭,留待下次复用。
3、客户端和服务器都有定时器,空闲时间过长后,就会关闭。

4. 客户端和服务器谁先超时,谁就先关闭连接。比如,Nginx的默认超时时间是65秒。当然可以通过配置文件修改。
5. 打开一个网页,Chrome当前默认最多打开6个连接。



下图说明的问题是:代理服务器不支持长连接,把客户端发来是长连接直接转送到原始服务器,原始服务器误以为代理服务器支持长连接,就返回一个长连接,因此客户端也收到了长连接的报文。但是代理服务器不支持长连接,在客户端复用该连接的时候会意外断开,或直接收不到响应

应对方法:使用Proxy-Connection


(c)长短连接使用场景

如浏览器访问页面通常用长连接,因为WEB页面有上百个对象,复用连接减少了TCP握手次数、解决了拥塞控制问题。
如agent通过HTTP上报数据可用短连接,因为间隔时间久,服务器不用浪费内存、CPU等资源来维护使用率很低的连接。