Answers:
使用TCP发送数据包时,它会附带一个序列号。当接收方接收到数据包时,他们会向发送方发送确认,其中包含显示已接收到数据包的序列号。根据您提出问题的方式,我假设您知道这一点。我想把它放给其他读者。
TCP重传只是在超时时间内未确认的数据包。
TCP快速重传是当源确认没有收到数据包时...从快速重传中引用-维基百科,免费的百科全书
如果TCP发送方收到三个具有相同确认号的重复确认(即,总共四个具有相同确认号的确认),则发送方可以合理地确信已删除具有下一个较高序号的段
我已经从Microsoft消化了这一点:
当每个出站段被传递到Internet协议(IP)层时,TCP启动一个重传计时器。如果TCP在计时器到期之前未收到给定段中数据的确认,则将重新传输该段。
使用在ACM SIGCOMM会议论文集中的Van Jacobson和Mike Karels的论文“拥塞避免与控制”中所述的平滑往返时间(SRTT)计算,可以动态调整重传超时以匹配连接的特性。 1988年11月关于数据通信的信息。可以在计算机协会的ACM数字图书馆中找到该论文。有关SRTT计算的更多信息,请参见RFC 793:传输控制协议DARPA Internet程序协议规范。给定段的重传超时在该段的每次重传之后加倍。
使用此算法,TCP可以将自身调整为通常的连接延迟。高延迟链路上的TCP连接超时要比低延迟链路上的TCP连接超时要长得多,以便避免在连接很慢而不是不存在时错误地超时。
在某些情况下,TCP在特定段的重传计时器到期之前重传数据。最常见的这种情况是由于称为快速重传的功能而发生的。
当支持快速重传的接收器接收到一个序列号高于当前预期序列号的数据包时,它会像丢弃某些数据一样继续进行。为了帮助发送者尽快发现明显丢失的数据,接收者立即发送一个确认(ACK),并将ACK号设置为似乎丢失的序列号。接收器针对传入流中到达的每个其他TCP段,为该序列号发送另一个ACK,该ACK的序列号高于丢失的序列号。
当发送方收到确认相同序列号的重复ACK流并且指示的序列号早于要发送的当前段的序列号时,发送方可以推断出先前发送的一个或多个段已被丢弃。在接收到一定数量的重复ACK之后,支持快速重传算法的发送方会重新发送接收方正在请求填补数据间隙的一个或多个段,而无需等待丢失的段的重传计时器到期。这种优化极大地提高了繁忙网络环境中的性能。
通过快速重传,发送方可以在丢失的TCP段的重传计时器到期之前重传丢失的TCP段。由于丢失的TCP段的重传计时器没有到期,因此丢失的段在目的地被接收并比没有快速重传的情况更快地被接收方确认,发送方可以更快地将后面的段发送给接收方。此过程称为快速恢复。RFC 2581:TCP拥塞控制中描述了快速重传和快速恢复。
重发与自动重发请求(ARQ)基本相同,是重发已损坏或丢失的数据包。这是一个术语,指的是协议运行在分组交换计算机网络上以提供可靠通信所使用的基本机制之一。BUT快速重传是对TCP的增强,它减少了发送方在重传丢失的段之前等待的时间。快速重传增强的工作原理如下:如果TCP发送方收到指定数量的确认,通常将其设置为三个相同的重复确认确认号(即,总共四个具有相同确认号的确认),发送方可以合理地确信具有下一个更高序号的段已被丢弃,并且不会乱序到达。然后,发送方将重新发送假定已丢弃的数据包,然后再等待其超时。检查此链接以获取更多详细信息和算法 http://www.isi.edu/nsnam/DIRECTED_RESEARCH/DR_WANIDA/DR/JavisInActionFastRetransmitFrame.html