文章目录
握手的流程
- 一开始,客户端和服务端都处于CLOSE状态,先是服务端监听某个端口,处于LISTEN状态。
- 然后客户端主动发起连接SYN,之后处于SYN-SEND状态。
- 服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RECV状态。
- 客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处于ESTABLISHED状态,因为它一发一收成功了。
- 服务端收到ACK的ACK之后,处于ESTABLISHED状态,因为它也一发一收成功了。
常考考点
- 为什么是三次握手而不是两次?
答:因为当接收到的包中不止有ack,那么需要回复一个ack,否则会产生超时重传,服务端需要接收到发送ACK的ACK才能建立连接。
- 为什么是三次握手而不是四次?
答:因为服务端在发送ACK包的同时也可以发送SYN包,原因是这两个标志位在逻辑上不产生冲突。