TCP 名词解释
TTL
ip 首部 有个 8bits 的域 TTL ,本意为 time to live(单位秒),具体实现时,用来表示一个 ip 数据报可以经过的最大路由数,所以 IPv6 直接重命名为了 hop limit,也即所谓跳数。
该值由源主机设置,每过一个路由器则减一,减至 0 时会被丢弃,同时发送 ICMP 报文通知源主机。
之所以存在 TTL,是为了避免无法正常交付的数据包在网络中循环,成为了 永不消散的幽灵,最后网络就被越来越多的这种报文淹没,无法正常工作。
因为 8bits,所以最多长度为 255,一个推荐的值是 64。
查看方式如下:
Linux
|
|
Mac:
|
|
MSL
MSL 也即 Maximum segment lifetime,表示任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。这个值需要大于 TTL。
RFC 793 中规定 MSL 为 2 分钟,实际应用中常用的是 30秒。
查看方式如下:
Linux
|
|
Mac
|
|
MSL 常被用于TCP 连接维持在 TIME_WAIT 的最长时间,也即 2*MSL。
|
|
RTT
RTT 全称为 round-trip time,也即 往返时间,在 TCP 协议下,表示数据发送至收到对方确认接收的总时间。TCP会 根据一套算法动态估算 RTT,用与流量控制、滑动窗口收缩等
RTO
RTO:Retransmission TimeOut,也即超时重传时间,比如 TCP 主动关闭方在 FIN_WAIT_1 下没收到对方的 ACK 会自动重传等。同样的,TCP 会根据要算法动态估算 RTO,所以与 RTT 一样,都是动态变化的。
RTO 与 RTT 直接相关,当 RTO < RTT 时, 将会导致过多重传;当 RTO > RTT 时, 如果网络状况糟糕,频繁出现丢包,重传不及时会恶化网络。综合考虑,所以一般 RTO 会少大于 RTT。
指数退避算法:每发生一次重传,RTO 就加倍,即 RTO=2*RTO。类似于滑动窗口的增大与收缩算法。
MTU
MTU(Maximum Transmission Unit),最大传输单元。表示 IP 数据报经过一个物理网络所被允许的最大报文长度,其中包括了 IP首部(20~60 字节不等),一般以太网的 MTU 设为 1500 字节,加上以太帧首部的长度 14 字节,也就是一个数据帧不会超过 1500+14 = 1514 字节。
MSS
MSS(Maximum Segment Size),表示最大报文段,也即 TCP 通信双方在三次握手阶段,根据 win 窗口协商后得出的一个值(取双方最小值),其中不包括 TCP首部长度。
一般来说,MSS = MTU - IP首部大小 - TCP首部大小。