Http请求头当中,经常看到Connection: keep-alive。开发人员基本都知道,这是客户端和服务器协商保持长连接需要发送的请求头。Http 1.1后,浏览器默认使用了长连接。
Http长连接是靠Http协议协议来保持的吗?并不是。我们知道,http协议是应用层协议,Http是运行在TCP之上的。本质上Http长连接底层是TCP长连接。
验证
如下,我们来抓包验证一下。 如下图,开启wireshark抓包,使用postman填写Connection为close模拟短连接,点击几次多次访问百度网页。
什么时候会复用tcp连接
tcp协议在编程语言上的封装就是socket套接字,所以什么时候会复用tcp连接其实就是socket的复用。一个socket绑定了ip和端口,所以如果本地的ip和端口、对接的远程的ip和端口是一样的,这时候就可以复用tcp连接了。如访问百度首页时keep-alive了,你再访问一遍则复用了tcp,但你这时访问必应那也是要重新建tcp连接的。
参考资料
以上。