为什么上图中的A在TIME-WAIT状态必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传 ...
连接状态图 建立连接:三次握手,不使用DNS和使用DNS 关闭连接 四次握手 连接双方任何一方调用close 后,连接的两个传输方向都关闭,不能再发送数据了。如果一方调用shutdown 则连接处于半关闭状态,仍可接收对方发来的数据。 如果出现半关闭,例如客户 gt 服务器方向关闭。则服务器还可以发,客户端还可以收。 协议规定主动关闭一方,进入FIN WAIT gt TIME WAIT,必须等待 ...
2015-06-10 11:26 0 9478 推荐指数:
为什么上图中的A在TIME-WAIT状态必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传 ...
一、TCP状态转换图 下图对排除和定位网络或系统故障时大有帮助,也帮助我们更好的编写Linux程序,对嵌入式开发也有指导意义。 先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程: 1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文 ...
之前所说了解有两个原因: 1、防止客户端最后一次发给服务器的确认在网络中丢失以至于客户端关闭,而服务端并未关闭,导致资源的浪费。 2、等待最大的2msl可以让本次连接的所有的网络包在链路上消失,以防造成不必要的干扰。 但对于第二条造成不必要的干扰之前没有做过多的解读,今天在 ...
TCP状态 CLOSED:表示初始状态。 LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。 SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,随即进入到了SYN_SENT状态,并等待 ...
本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态。 阅读本文需要的预备知识: 了解TCP协议的状态变迁; 了解TCP拆链的四次挥手过程; 了解为什么需要TIME_WAIT状态 ...
本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态。 阅读本文需要的预备知识: 了解TCP协议的状态变迁; 了解TCP拆链的四次挥手过程; 了解为什么需要TIME_WAIT状态 ...
一、防止第四次挥手的报文段丢失,服务器端无法正常关闭。如果第四次挥手丢失,服务器端会重新发送第三次挥手的报文,请求断开连接。 二、2MSL时间可以保证本次连接所有报文失效失效,防止“已失效的连接请求报文段”出现在本连接中,避免被服务器端认为是一个新的连接请求。 ...
情: 收到b的fin重传(因为b没有收到ack) 相当长一段时间——2MSL,都没有收到b的fin ...