zl程序教程

您现在的位置是:首页 >  其他

当前栏目

last_ack状态及rst标记

2023-03-15 22:08:26 时间

大多数的博客在介绍tcp的三次握手和四次挥手时,只是介绍了握手和挥手的流程,有些博客还会分析四次挥手时主动关闭连接的一端的time_wait状态的作用,但却几乎没有博客会介绍被动关闭连接的一端维持last_ack状态的作用,以及在四次挥手中如果出现丢包,last_ack将如何处理等。

实际上,last_ack(持续时间一般为一个RTO(retransmission timeout,数据包重传的timeout时间)的时间,这个时间根据RTT动态计算出来)有两个作用:作用一是处理重用连接:防止前一个连接上延迟的数据包或者丢失重传的数据包,被后面复用的连接(前后两次连接的协议相同,ip相同,端口号相同,且包的seq号也恰巧相同)错误的接收,则发送rst,重置连接;作用二是在发送第二个fin之后,如果在RTO之后,还没收到ack,则重发fin。

参考文档:

1、https://blog.csdn.net/stpeace/article/details/75675581  tcp四次挥手中LAST_ACK状态一般持续多久?

2、https://blog.csdn.net/qzcsu/article/details/72861891 TCP的三次握手与四次挥手(详解+动图)

3、https://blog.csdn.net/qq_35733751/article/details/80205158  25-tcp协议——连接复位(RST)

4、https://blog.csdn.net/hzrandd/article/details/74463313 全面深入分析TCP的TIME_WAIT和CLOSE_WAIT(上)

5、https://networkengineering.stackexchange.com/questions/38805/why-is-the-last-ack-needed-in-tcp-four-way-termination Why is the last ACK needed in TCP four way termination