首先我们来回顾一下tcp建立连接的过程
1、为什么不是2次握手呢?
防止客户端失效的连接请求报文段突然又传到服务器
例如以下情况如果使用两次握手:
- 如果客户端向服务器发送第一次连接请求在网络节点上滞留了,没有收到服务器的确认,于是又重新发送了一次连接请求
- 服务器收到客户端的第二次请求发送确认,则连接建立完成
- 服务器客户端进行数据传输,传输完成断开连接。
- 此时,在网络上滞留的客户端第一次连接请求到达服务器,服务器发送确认连接但是客户端实际上并没有发送请求,因此不会理睬服务器发送的请求。但是服务器认为连接已完成,并等待客户端进行数据传输。这样会造成资源的浪费
如果采用三次握手的话:
-
滞留在网络上的客户端第一次请求到达服务器之后,服务器发送确认,但实际上服务器并没有发送请求,因此不会理睬服务器的确认,故不会发送确认,服务器等不到客户端的确认则连接建立失败。这样就
防止了客户端失效的连接请求报文段突然又传到服务器
2、为什么不是4次握手?
我们来模拟一下4次握手的过程
- 客户端发送请求报文,发送自己的序列号
- 服务器发送确认报文
- 服务器发送自己的序列号
- 客户端发送确认报文
上述过程中2、3步完全可以合为一步进行发送,因此完全没有必要进行4次握手
版权声明:本文为qq_41727218原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。