tcp三次握手中,客户端第一个syn包中途丢包了,怎么办?
- 客户端会周期性超时重新发送数据包
tcp三次握手中,服务端第二个syn+ack包中途丢包了,怎么办?
- 服务端会周期性超时重新发送数据包
tcp三次握手中,客户端第三个ack包中途丢包了,怎么办?
此事客户端已处于建立连接阶段,服务端还没建立连接
- 情况一:服务端会周期性重新数据包,直到接收到客户端的ack包
-情况二:客户端直接发送data+ack,这种情况服务端接收到ack也会建立连接
为什么是三次握手,而不是两次或者四次?
- 二次握手双方未能都建立连接。比如以前用信寄钱,我给你寄钱(第一次握手),你收到了给我回信说收到钱了(第二次握手)。我知道你收到钱了,但是你不知道我是否有收到你的回信,你怕我没有收到而担心,因此我需要给你回信(第三次握手)让你安心。
- 三次可以满足需求,没必要四次,造成资源的浪费。
四次挥手,服务端和客户端关闭之前都会等待2MLS,为什么要等待2MLS(2 * 最大报文生命时间)
-- 服务端发送FIN+ACK耗时1MLS,客户端发送ACK耗时1MLS,2MLS内服务端没有收到客户端的ACK,就会重传数据包
-- 客户端发送完ACK后,等到2MLS内没有收到任何数据包,表示服务端已经关闭了,那客户端就可以关闭了。
--------------------资料---------------------
TCP三次握手和四次挥手 | 对线面试官 (gitee.io)