TIME_WAIT状态(2MSL)的作用

转载 2015年11月19日 21:55:25
今天面试的时候被问到这个问题,以前看书的时候有关注过,但是貌似没有理解清楚,所以特此记录一下,以备后续查看。
存在TIME_WAIT,有两个理由:
1.可靠地实现TCP全双工连接的终止
	在进行关闭连接四路握手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN,因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭 的客户端必须维持状态信息进入TIME_WAIT状态。
2.允许老的重复分节在网络中消逝
	TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发这个分节,迷途的分节在路由器修复后也会被送到最终目的地,这个 原来的迷途分节就称为lost duplicate。在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和端口之间的TCP连接,后一个连接被称为前一个连接的化身(incarnation),那么有可能出现这种情况,前一个连接的迷途重复分组在前一个连接终止后出现,从而被误解成从属于新的化身。为了避免这个情况,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状态持续2MSL,就可以保证当成功建立一个TCP连接的时 候,来自连接先前化身的重复分组已经在网络中消逝。
转载来自:http://www.cnblogs.com/li-hao/archive/2011/12/08/2280678.html

相关文章推荐

TIME_WAIT状态(2MSL)的作用

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时...

TCP断开连接时的2MSL的time_wait状态

http://blog.csdn.net/xiaofei0859/article/details/24621487 2MSL TIME_WAIT状态存在的理由: TIME_WAIT状态的存在有...
  • wwww4
  • wwww4
  • 2015年09月13日 21:51
  • 921

【转】TCP TIME_WAIT状态(2MSL)

http://hi.baidu.com/packetslost/blog/item/ea8bc9c398be9551b219a836.htm一般来说,tcp正常关闭需要四个包。比如a和b关闭连接,a先...
  • hq0520
  • hq0520
  • 2011年05月08日 12:15
  • 337

为什么TCP的TIME_WAIT状态要保持2MSL?

TIMEWAIT状态也称为2MSL等待状态。 每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。 它是任何报文段被丢弃前在网络内的最长时间。 ...
  • unix21
  • unix21
  • 2013年11月24日 13:14
  • 3630

TCP/IP 协议 TCP TIME_WAIT状态(2MSL)

转载自:http://blog.chinaunix.net/u1/40133/showart_1764444.html 连接进程是通过一系列状态表示的,这些状态有:LISTEN,SYN-SENT...
  • zqt520
  • zqt520
  • 2012年04月14日 00:47
  • 351

Time-wait状态(2MSL)一些理解

1. 编写TCP/SOCK 服务时,SO_REUSEADDR到底是什么意思? 这个套接字选项通知内核,如果端口忙,但TCP状态处于TIME_WAIT,可以重用端口。如果端口忙,TCP状态处于其他状态...

TIME_WAIT状态的作用

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时...

TIME_WAIT状态的作用

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时...

TCP 连接关闭的 TIME_WAIT (2MSL) 状态,及 TCP 连接状态图

上学时画的 TCP 连接状态图,本来是为了搞清楚 socket 编程时的一个问题:客户端通常不绑定(bind()) inet 地址结构,而采用随机的端口建立连接 socket(connect())。如...
  • kaylc
  • kaylc
  • 2011年02月26日 15:43
  • 2254
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TIME_WAIT状态(2MSL)的作用
举报原因:
原因补充:

(最多只允许输入30个字)