TCP 的重传机制

重传事件

引起 TCP 对报文进行重传的事件

  1. 超时
  2. 冗余 ACK

超时

TCP 为每个报文段设置一个计时器,当设置的重传时间到期,而发送方还未收到确认就重传报文段。

如何计算重传时间(RTO Retransmission Time-Out)

重传时间(RTO)由加权平均往返时间(RRT_S)决定,这个RTT_S又叫平滑的往返时间,S 就是 smoothed 的缩写表示

第一次时,这个

R T O = ( 1 − α ) ( 旧 的 R T T S ) + α ( 新 的 R T T 样 本 ) RTO = (1-α)(旧的RTT_S) + α(新的RTT样本) RTO=1αRTTS+αRTT

R T T S = { R T T 第 一 次 测 量 ( 1 − a ) ∗ ( 旧 R T T S ) + a ∗ ( 新 R T T 样 本 ) 非 第 一 次 测 量 RTT_S = \begin{cases} RTT & 第一次测量 \\ (1-a) *(旧 RTT_S)+a*(新RTT样本)& 非第一次测量 \end{cases} RTTS={RTT(1a)(RTTS)+a(RTT)

PS: a 位于(0~1),如果 a 趋向于 1,则表明 RTT 值更新快,反之更新慢。
推荐值:0.125

R T T D = { 1 / 2 ∗ R T T 第 一 次 测 量 ( 1 − b ) ∗ ( 旧 R T T S ) + b ∗ ∣ R T T S − 新 R T T 样 本 ∣ 非 第 一 次 测 量 RTT_D = \begin{cases} 1/2*RTT & 第一次测量 \\ (1-b) *(旧 RTT_S)+b*|RTT_S-新RTT样本|& 非第一次测量 \end{cases} RTTD={1/2RTT(1b)(RTTS)+bRTTSRTT

PS: b 是小于 1 的系数,推荐值:0.25.

冗余 ACK

冗余 ACK 是指,之前已经发送过确认了,现在又发送。

举例:
TCP 的重传机制_第1张图片
我们看到 2 号报文丢失了,这是 3,4,5 被称为失序报文。根据 TCP 规定,如果期望的序号(这里是 2)小于失序序号,那么就发送一个冗余 ACK,这里发送三个(3,4,5)。发送方接到冗余 ACK 确认 2 号报文丢失,于是重传 2 号报文。

你可能感兴趣的:(计算机网络)