您的位置:首页 > 理论基础 > 计算机网络

MSL、RTT及TTL介绍

2017-08-30 00:31 351 查看
《TCP关闭状态分析》一文中,段落“TIME_WAIT”中提到:

之后等待2个最大的报文存活周期(这是因为:一是保证残留网络报文不会被新连接接收而产生数据错乱,由于自己上一次发送的数据报文可能还残留在网络中,等待2MSL时间可以保证所有残留的网络报文在自己关闭前都已经超时。二是确保自己最后ACK发送到对端,因为ACK发送也可能会发送失败,这时对端会重新发送FIN,如果已经CLOSED了那么对端将收到RST而不是ACK了,这不符合TCP可靠关闭的策略。)

本文就从MSL展开,再记录一些小知识点。

MSL

Maximum Segment Lifetime缩写,译为“报文最大生存时间”。它指的是任何报文在网络上存在的最长时间,超过这个时间的报文将会被丢弃。标准规范中规定MSL为2分钟,实际应用中常用的是30s,1min和2min等。

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时间结束再使用此端口。

RTT

To this end, we define the round-trip time (RTT), which is the time it takes for a small packet to travel from client to server and then back to the client.

Round-Trip Time缩写,简单理解的话,RTT指的是客户端到服务器往返所花费的时间。其实RTT的定义是一个很小的分组(这里的很小也就是说对于发送方来说“开始发送”和“发送完”是同一个时刻。换句话说这个分组是没有长度的,传输时延可以忽略不计),从客户端发送到接收端再返回客户端的时间。TCP三次握手中发送的SYN、ACK以及四次挥手中使用到的FIN的交换就是这样的例子,ping命令使用的也是这么一个非常小的包来试探网络的情况。如果是长度不可忽略的分组,接收方在接收到最后一比特数据后才会发送ACK,实际也等价于发送最后一bit到接收到ACK的时间间隔。

TCP含有动态估算RTT的算法。TCP还持续估算一个给定连接的RTT,这是因为RTT受网络传输拥塞程序的变化而变化。

TTL

Time To Time缩写,译为“生存时间”。这个生存时间是由源主机设置(IP头里有一个TTL域)初始值但不是存的具体时间,而是存储了一个IP数据报可以经过最大路由数,每经过一个处理它的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。

注意:域名也有TTL的概念,只是这里的TTL指的是Time- To-Live,简单的说它表示一条域名解析记录在DNS服务器上缓存时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录。在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录。而这个记录在DNS服务器上保留的时间,就是TTL值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息