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)一些理解

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

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

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

TIME_WAIT状态(2MSL)的作用

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

深入浅出TCP协议的2MSL TIME_WAIT状态

2MSL TIME_WAIT状态存在的理由: TIME_WAIT状态的存在有两个理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭...
  • xiaofei0859
  • xiaofei0859
  • 2014年04月28日 09:37
  • 2921

2MSL TIME_WAIT状态存在的理由

2MSL TIME_WAIT状态存在的理由: TIME_WAIT状态的存在有两个理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭...
  • surgenlxj
  • surgenlxj
  • 2015年02月25日 16:17
  • 248

聊聊tcp四次挥手中的TIME_WAIT状态存在的理由

记得在2012年的时候, 我开始找实习, 某公司笔试题目中提到了TIME_WAIT这些东西, 我简直是一脸懵逼, 第一次见, 这东西讨论来讨论去, 有用么? 呵呵哒。         下面叙述中, ...
  • stpeace
  • stpeace
  • 2017年07月22日 11:33
  • 730

TCP/IP详解--TIME_WAIT状态详解

Socket中的TIME_WAIT状态 在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发...
  • yusiguyuan
  • yusiguyuan
  • 2014年03月18日 10:29
  • 5651

TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用

三次握手第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT; 第二次握手:主机B收...
  • sinat_32487221
  • sinat_32487221
  • 2017年02月16日 21:31
  • 1751

TIME_WAIT 2MSL保持的必要性

Q: 在客户机/服务器编程中(TCP/SOCK_STREAM),如何理解TCP自动机 TIME_WAIT 状     态?    A: W. Richard Stevens    下...
  • lizhifeng2009
  • lizhifeng2009
  • 2013年05月21日 16:24
  • 1235

TCP/IP详解--TIME_WAIT状态存在的原因

1. 实际问题         初步查看发现,无法对外新建TCP连接时,线上服务器存在大量处于TIME_WAIT状态的TCP连接(最多的一次为单机10w+,其中引起报警的那个模块产生的TIME_WAI...
  • yusiguyuan
  • yusiguyuan
  • 2014年09月01日 20:15
  • 3328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TIME_WAIT状态(2MSL)的作用
举报原因:
原因补充:

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