一句话说透计算机网络里面的三次握手中每一次没收到报文会发生什么情况?

132 阅读2分钟

一句话总结:
三次握手就像约见面——第一次约不到人,第二次对方没回应,第三次确认没收到,最终都会因“失联”放弃!


一、第一次握手(客户端发SYN)没收到回应

情景:你发微信约朋友吃饭(SYN),但对方手机没信号(丢包)。
处理流程

  1. 客户端等待:等了几秒没回复(超时时间,通常1~3秒)。
  2. 重试发SYN:连续重发约5次(不同系统次数不同)。
  3. 彻底放弃:若始终无回应,报错“连接超时”。

用户感知:浏览器显示“无法连接服务器”。


二、第二次握手(服务器发SYN-ACK)丢失

情景:朋友回复“好呀!”(SYN-ACK),但你的手机欠费(丢包)。
处理流程

  1. 客户端继续等:以为对方没回复,继续重发SYN(同第一次握手)。
  2. 服务器苦等ACK:发送SYN-ACK后,等不到你的确认(ACK),超时后关闭连接。

结果

  • 客户端:多次重试后放弃,报错。
  • 服务器:释放为这次连接预留的资源(如内存)。

三、第三次握手(客户端发ACK)丢失

情景:你确认“今晚6点见!”(ACK),但朋友手机没电(丢包)。
处理流程

  1. 服务器没收到ACK:以为你没确认,反复重发SYN-ACK(约5次)。
  2. 客户端以为连接成功:开始发数据(如HTTP请求),但服务器不认(没收到ACK,视连接未建立)。
  3. 最终超时关闭:服务器放弃重试,连接未建立。

用户感知:网页卡在加载中,最终显示“连接失败”。


四、总结表

握手阶段丢失报文客户端行为服务器行为最终结果
第一次SYN重发SYN,超时放弃无动作连接失败
第二次SYN-ACK重发SYN,超时放弃等待ACK超时,关闭连接双方放弃
第三次ACK开始发数据(可能被忽略)重发SYN-ACK,超时关闭连接未建立,数据丢失

五、为什么设计超时和重传?

  • 网络不可靠:Wi-Fi断流、路由器故障、光纤被挖断...总有意外!
  • 资源有限:服务器不能无限等待,避免被恶意攻击(如SYN洪水)。

六、现实案例

  1. Wi-Fi信号差:SYN包发不出去 → 反复重试 → 最终提示“无法连接互联网”。
  2. 服务器过载:SYN-ACK包处理慢 → 客户端超时放弃 → 用户刷新页面。

总结口诀

“三次握手怕丢包,每次丢失有妙招。
一丢SYN客户端重试,二丢SYN-ACK两边消。
三丢ACK最麻烦,服务器苦等你发飙。
超时重传是底线,网络可靠靠这招!”