Http长连接、短连接原理实践

3,888 阅读1分钟

Http请求头当中,经常看到Connection: keep-alive。开发人员基本都知道,这是客户端和服务器协商保持长连接需要发送的请求头。Http 1.1后,浏览器默认使用了长连接。 Http长连接是靠Http协议协议来保持的吗?并不是。我们知道,http协议是应用层协议,Http是运行在TCP之上的。本质上Http长连接底层是TCP长连接。

验证

如下,我们来抓包验证一下。 如下图,开启wireshark抓包,使用postman填写Connection为close模拟短连接,点击几次多次访问百度网页。

postman
wireshark抓包情况如下,每一个点击访问百度,都会三次握手简历TCP连接,在服务端返回后又立即关闭了连接。
三次握手

关闭连接

什么时候会复用tcp连接

tcp协议在编程语言上的封装就是socket套接字,所以什么时候会复用tcp连接其实就是socket的复用。一个socket绑定了ip和端口,所以如果本地的ip和端口、对接的远程的ip和端口是一样的,这时候就可以复用tcp连接了。如访问百度首页时keep-alive了,你再访问一遍则复用了tcp,但你这时访问必应那也是要重新建tcp连接的。

参考资料

  1. blog.zhanglun.me/2017/10/10/…
  2. juejin.cn/post/684490…
  3. www.xinghaixu.com/archives/67…

以上。