什么是长连接?
在经过三次握手之后,如果再进行请求,不需要再次进行三次握手。
HTTP连接分为两个:长连接、短连接
- 长连接:客户端和服务端建立连接后不进行断开,之后客户端再次访问这个服务器上的内容时,继续使用这一条连接通道。
- 短连接:客户端和服务端建立连接,发送完数据后立马断开连接。下次要取数据,需要再次建立连接。
- HTTP/1.0:默认使用短连接
- HTTP/1.1:默认使用长连接
- HTTP的长连接和短连接就是TCP(传输协议)的长连接和短连接
三次握手
seq:序列号,是一个随机值
ack:确认序号,只有当ACk=1的时候有效,值=seq+1
标志位:
SYN:发起一个连接,用来做同步。
ACK:确认序号有效
状态:
CLOSED:关闭
LISTEN:监听
SYN_SENT:在发送连接请求后等待连接
SYN_RCVD:在发送和收到一个连接请求后等待连接的确认
ESTABLISHED:建立连接。表示两台机器正在通信
TCP进行三次握手的根本原因
- 第一次握手:客户端发送连接请求,服务端收到了。
服务端得出结论:客户端的发送没有问题,服务端的接收没有问题。 - 第二次握手:服务端发包,客户端收到了。
客户端得出结论:服务端的接收,发送没有问题,客户端的发送和接收也没有问题。此时,服务端并不能确认客户端的接收是否正常。 - 第三次握手:客户端发包,服务端收到。
服务端得出结论:客户端的接收、发送以及服务器的接收、发送没有问题。