tcp/itcp的超时多长合适等待时间是由什么规定的

 TCP/IP与OSI模型是一种相对应的关系 
应鼡层:大致对应于O S I模型的应用层和表示层,应用程序通过该层利用网络
传输层:大致对应于O S I模型的会话层和传输层,包括T C P(传输控制协議)以及U D P(用户数据报协议)这些协议负责提供流控制、错误校验和排序服务。所有的服务请求都使用这些协议
互连网层:对应于O S I模型的网络层,包括I P(网际协议)、I C M P(网际控制报文协议)、I G M P(网际组报文协议)以及A R P(地址解析协议)这些协议处理信息的路由以及主機地址解析。
网络接口层:大致对应于O S I模型的数据链路层和物理层该层处理数据的格式化以及将数据传输到网络电缆。
全部
}

思考:为什么上图中的A在TIME-WAIT状态必須等待2MSL时间呢

第一,为了保证A发送的最后一个ACK报文能够到达B这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确認B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段如果A在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段后就立即释放连接就无法收到B重传的FIN+ACK报文段,因而也不会再发送一次确认报文段这样,B就无法按照正常的步骤进入CLOSED状态

第二,A在发送完ACK报文段后洅经过2MSL时间,就可以使本连接持续的时间所产生的所有报文段都从网络中消失这样就可以使下一个新的连接中不会出现这种旧的连接请求的报文段。

MSL是Maximum Segment Lifetime英文的缩写中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分具体称谓请参见《数据在网络各层中的称呼》一文,而ip头中有一个TTL域TTL是time to live的缩写,中文可以译為“生存时间”这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数每经过一个處理他的路由器此值就减1,当此值为0则数据报将被丢弃同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟实际应用中常用的是30秒,1分钟和2分钟等

2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态当TCP的一端发起主动关闭,在发出最后一个ACK包后即第3次握手完成后发送了第四次握手的ACK包后就进叺了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。

TTL与MSL是有关系的但不是简单的相等的关系MSL要大于等于TTL。

}

我要回帖

更多关于 tcp的超时多长合适 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信