MSL(Maximum Segment Lifetime)最大报文生存时间
每个TCP实现
必须选择一个MSL。它
是任何报文段被丢弃前在网络内的最长时间
。这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL时间。RFC 793指出MSL为
2分钟
,现实中常用
30秒或1分钟
。
2MSL
当TCP执行主动关闭,并发出最后一个ACK,该链接必须
在TIME_WAIT状态下停留的时间
为2MSL。这样可以(1)让TCP
再次发送最后的ACK以防这个ACK丢失
(被动关闭的一方超时并重发最后的FIN);保证TCP的可靠的全双工连接的终止。(2)
允许老的重复分节在网络中消失
。参考文章
《unix网络编程》(3)TCP连接的建立和终止
在TIME_WAIT状态 时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置 SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
TTL(time-to-live)生存时间字段
在
IP首部中的8位字段
。该字段
不是
存的具体时间,而
是设置了数据报可以经过的最多路由器数
。它制定了
数据报的生存时间
。TTL的初始值由源主机设置(通常为
32或64
),一旦经过一个处理它的路由器,它的值就减去1.当该字段值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
RTT(round-trip-time)往返时间
TCP超时与重传
中最重要的部分就是
对一个给定连接的往返时间RTT的测量
。由于路由器和网络流量均会变化,因此这个时间可能经常会变化,TCP应该跟踪这些变化并相应地改变其超时时间。
MTU(Maximum Transfer Unit)最大传输单元
链路层的帧(frame)中的数据部分的最大字节数
以太网中的一般为1500字节
MSS(Maximum Segment Size) 最大报文段大小
TCP的报文段中的数据部分的最大字节数,MTU减去IPv4的Header和TCP的Header
IPv4的Header和TCP的Header一般都是20字节,则MSS=1500-20-20 = 1460字节
RTO(Retransmission Timeout) 超时重传时间
TCP中触发超时重传机制的时间,应略大于RTT
RFC2988中建议RTO = RTTS + 4 * RTTD
RTTD时RTT的偏差的加权平均值
对于i=1,RTTD[i] = 新RTT样本/2
对于i>1,RTTD[i] = (1 – b) * RTTD[i-1] + b * | 新RTT样本 – RTTD[i] |,建议b=1/4