ton*_*sid 11 networking internet tcp
在 Wireshark 中,我可以看到“TCP Retransmission”和“TCP Fast Retransmission”这样的东西。有什么不同?Wireshark 如何区分?
The*_*heo 11
当一个数据包使用 TCP 发送时,它有一个随它传输的序列号。当接收方收到数据包时,他们会向发送方发送一个确认,其中包含表明该数据包已被接收的序列号。根据您提出问题的方式,我假设您知道这一点。我想把它放在其他读者身上。
TCP 重传只是一个在超时内不确认的数据包。
TCP 快速重传是当源确认没有收到数据包时...引用快速重传 - 维基百科,免费的百科全书
如果 TCP 发送方收到三个具有相同确认编号的重复确认(即,总共收到 4 个具有相同确认编号的确认),则发送方可以合理地确信具有下一个更高序列号的段已被丢弃
我从微软消化了这个:
当每个出站段传递给 Internet 协议 (IP) 层时,TCP 会启动重传计时器。如果在定时器到期之前 TCP 没有收到对给定段中数据的确认,则重新传输该段。
使用平滑往返时间 (SRTT) 计算动态调整重传超时以匹配连接的特征,如 Van Jacobson 和 Mike Karels 在 ACM SIGCOMM 会议论文集的论文“拥塞避免和控制”中所述关于数据通信,1988 年 11 月。这篇论文可以在计算机协会的 ACM 数字图书馆中找到。有关 SRTT 计算的更多信息,请参阅RFC 793:传输控制协议 DARPA 互联网程序协议规范。给定段的重传超时在每次重传该段后加倍。
使用此算法,TCP 将自身调整为连接的通常延迟。与低延迟链路上的 TCP 连接相比,高延迟链路上的 TCP 连接超时时间要长得多,以避免在连接只是缓慢而不是不存在时错误地超时。
在某些情况下,TCP 会在特定段的重传计时器到期之前重传数据。最常见的这种情况是由于称为快速重传的功能而发生的。
当支持快速重传的接收器收到一个序列号高于当前预期序列号的数据包时,它会像丢弃某些数据一样继续处理。为了帮助发送方尽快意识到明显丢失的数据,接收方立即发送确认 (ACK),并将 ACK 编号设置为似乎丢失的序列号。对于传入流中每个附加 TCP 段的序列号,接收器发送另一个 ACK,这些 TCP 段到达时的序列号高于丢失的序列号。
当发送方接收到确认相同序列号的重复 ACK 流并且指示的序列号早于正在发送的当前段的序列号时,发送方可以推断它之前发送的一个或多个段被丢弃。在接收到一定数量的重复 ACK 后,支持快速重传算法的发送方会重新发送接收方请求填充数据中的间隙的一个或多个分段,而无需等待重传定时器因丢失的分段而到期。这种优化极大地提高了繁忙网络环境中的性能。
使用快速重传,发送方在重传计时器到期之前重传丢失的 TCP 段。因为丢失的 TCP 段的重传计时器没有到期,所以在目的地接收丢失的段并由接收器确认比没有快速重传时更快,并且发送器可以更快地将后面的段发送到接收器。此过程称为快速恢复。RFC 2581: TCP Congestion Control中描述了快速重传和快速恢复。
| 归档时间: |
|
| 查看次数: |
48681 次 |
| 最近记录: |