最近看了不少博客了解http协议,记录一下长连接与短连接。
HTTP的长连接和短连接本质上是TCP长连接和短连接。
- 短连接: 每次请求新建立一个tcp连接,请求结果返回后立马关闭连接,客户端和服务端都可关闭连接。每次请求都经过“创建tcp连接->请求资源->响应资源->释放连接”这样的过程
- 长连接:只建立一次tcp连接,多次资源请求都复用该连接,完成后关闭。经过心跳机制保持连接。
tcp连接 3次握手 和 4次挥手
网络通信时采用TCP协议时,客户端和服务器端通过tcp连接进行请求响应,当一个请求响应完成后,双方不再需要这个连接时可以释放这个连接。连接的建立依靠“三次握手”,而释放则需要“四次挥手”。
HTTP Connection: Keep-Alive 启用长连接
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用长连接;http 1.1中默认启用Keep-Alive,如果加入"Connection: close ",才关闭。目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求。
接口抓包的形式模拟长连接与短连接(Wireshark)
GET请求 port: 8010, /cslp/user/jkc01
1、长连接 Connection: Keep-Alive
首次请求 三次握手建立tcp连接
再次请求直接使用tcp连接
连接时间结束,四次挥手 关闭连接
2、短连接 Connection: close