TCP为什么会有TIME_WAIT状态存在 第一个原因很好理解,假设四次挥手的第四个ACK确认报文丢失,那么服务器会重发FIN报文。因此客户端需要停留在某个状态以处理重复收到的结束报文段(即向服务器发送确认报文段)。否则,客户端将以复位报文段来回应服务器,服务器则认为这是一个错误。 第二个原因:数据报文可能在发送途中...
TCP面试题之为什么会有TIME_WAIT状态 1、确保有足够的时间让对方收到ACK包;(一来一去刚好是2MSL) 2、避免新旧连接混淆 MSL(最大报文段的生成时间)在RFC793中规定hi2分钟,实际应用是30秒,1分钟,2分钟等;
FIN_WAIT_1:其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下...
处于TIME_WAIT 状态的连接收到 SYN 后,因为 SYN 的 seq(400) 大于 rcv_nxt(301),并且 SYN 的 TSval(30) 大于 ts_recent(21),所以是一个「合法的 SYN」,于是就会重用此四元组连接,跳过 2MSL 而转变为 SYN_RECV 状态,接着就能进行建立连接过程。 收到非法的 SYN 如果处于 TIME_WAIT 状态的连接收到「...
TCP面试题之为什么会有TIME_WAIT状态 1、确保有足够的时间让对方收到ACK包;(一来一去刚好是2MSL) 2、避免新旧连接混淆 MSL(最大报文段的生成时间)在RFC793中规定hi2分钟,实际应用是30秒,1分钟,2分钟等;