有关 TCP 4次挥手的一个小问题

众所周知,TCP在断开连接时会进行四次挥手,并在最后一次挥手客户端会等待2MSL再断开连接(假设客户端发起的断开连接请求)。等待2MSL的目的是,假设客户端发送的最后一次挥手的断开连接请求确认报文在网络中丢失,那么服务端会超时重发断开连接请求报文,等待2MSL的目的是防止这种情况发生,以及确保本次连接的报文在网络中消失,不会对下次连接产生影响。
那么问题来了,如果等待2MSL期间,客户端发出的最后一次挥手包丢失,且服务器端超时重发的断开连接请求也在网络中丢失了...这种情况下TCP会怎么处理?
没有找到这个问题的相关解答,求大佬解惑。
#笔试题目#
全部评论
超过了2MSL后,client直接关闭连接,只剩下server处于半关闭状态了(LAST_ACK?)。server会因为超时重传机制重新发送FIN包,有两种情况: (1)client挂了,一直不响应,server重试几次没成功,server也就直接断开连接了,状态变为closed;(2)client没挂,由于已经断开连接了导致无法识别这个FIN包,会回一个RST给server,server收到RST包会关闭连接,状态变为closed。
1 回复 分享
发布于 2021-04-29 21:11
首先TCP里面总共有4种计时器,四次挥手的2msl计时器也是其中一个,称为时间等待计时器,一般时间为报文段寿命值的2倍 Client或者Sever丢失会因为超时重传,如果重传FIN,此时Client端是会重置2msl计时器的时间的,重新计时。
点赞 回复 分享
发布于 2021-04-26 19:33

相关推荐

评论
点赞
12
分享

创作者周榜

更多
牛客网
牛客企业服务