目录1.TCP通信时序图1.1 四次挥手中 LAST_ACK 与 TIME_WAIT 状态的交互1.22. TCP状态转移图2.11.TCP通信时序图工作在传输层的TCP协议的通信时序私底下称之为“三次握手四次挥手”。下图假设【主动发起连接方】给【被动接受连接方】的数据包序号从1000开始而【被动接受连接方】发送的数据包号从8000开始。图中像是“1000(0)” ,“1001(20)” , “8001(10)” 的记号均表示数据包序号(该包数据大小)1.1 四次挥手中 LAST_ACK 与 TIME_WAIT 状态的交互当【被动关闭方】发送 FIN 报文后即进入上图的LAST_ACK状态会启动一个超时计时器,RTO 计时器等待【主动关闭方】的 最后一次 ACK 报文。收到这个 ACK 后【被动关闭方】会完成LAST_ACK—CLOSE如果在 RTO Retransmission TimeoutRTO时间内未收到 ACK【被动关闭方】会认为自己发送的 FIN 报文可能丢失比如网络拥塞、报文损坏等于是重传 FIN 报文并重新设置 RTO 计时器。【主动关闭方】在拿到上述的 FIN 同时发送出最后一次 ACK 后会进入一个叫TIME_WAIT状态等待2MSLMaximum Segment Lifetime报文最大生存时间时长2MSL的设计目的就是确保【主动关闭方】发送的最后一个 ACK 报文能被【被动关闭方】收到。如果【被动关闭方】没有收到这个最后的 ACK会在 RTO超时 后重传 FIN 报文。此时若【主动关闭方】若仍在 TIME_WAIT 状态接受了这个重传 FIN后会重新发送最后的 ACK 并重置 2MSL 计时避免【被动关闭方】因未收到 最后的ACK 而一直重传。如果 【主动关闭方】在 2MSL 内始终未收到重传 FIN说明【被动关闭方】已成功收到 最后的ACK 并关闭连接【主动关闭方】即可安全退出 TIME_WAIT整个连接流程彻底结束。1.2后续更新。。。2. TCP状态转移图2.1后续更新。。。
阅读完成 · 觉得有帮助?