0%

TCP重传与重复ACK

TCP 错误恢复功能:

  1. TCP 重传
  2. TCP 重复 ACK 以及快速重传

wireshark 常见提示

Wireshark 中常见的 TCP Info

TCP 错误恢复功能:

TCP 的错误恢复功能是定位,诊断及修复网络延时的最佳工具。延时可以在单程也可以往返方向测量。高延时是网络管理员的头号大敌。本节我们讨论 TCP 高延时是如何导致序列号和确认号乱序的。

TCP 重传:

主机报文重传是 TCP 最基本的错误恢复功能,它的目的是防止报文丢失。

报文丢失的可能因素有很多种,包括应用故障,路由设备过载,或暂时的服务宕机。报文级别速度是很高的,而通常报文丢失是暂时的,因此 TCP 能够发现和恢复报文丢失显得尤为重要。

决定报文是否有必要重传的主要机制是重传计时器(retransmission timer),它的主要功能是维护重传超时(RTO)值。当报文使用 TCP 传输时,重传计时器启动,收到 ACK 时计时器停止。报文发送至接收到 ACK 的时间称为往返时间(RTT)。对若干次时间取平均值,该值用于确定最终 RTO 值。在最终 RTO 值确定之前,确定每一次报文传输是否有丢包发生使用重传计时器,下图说明了 TCP 重传过程。

img

当报文发送之后,但接收方尚未发送 TCP ACK 报文,发送方假设源报文丢失并将其重传。重传之后,RTO 值加倍;如果在 2 倍 RTO 值到达之前还是没有收到 ACK 报文,就再次重传。如果仍然没有收到 ACK,那么 RTO 值再次加倍。如此持续下去,每次重传 RTO 都翻倍,直到收到 ACK 报文或发送方达到配置的最大重传次数。

最大重传次数取决于发送操作系统的配置值。默认情况下,Windows 主机默认重传 5 次。大多数 Linux 系统默认最大 15 次。两种操作系统都可配置。

Ref

  1. 网络性能排查之 TCP 重传与重复 ACK
  2. TCP 报文之 -tcp dup ack 、tcp Out-of-Order