服务时间:8:30-18:00

首页 >华为认证网

TCP的确认与重传

发布时间:2023-03-02 17:04 字数:1086字 阅读:53

TCP的确认与重传,TCP发送的数据通过确认和重传机制来保证可靠性,数据发送者用序列号来标识发送的数据,数据接收者收到数据后向发送者回复一个ACK标志位置位的TCP报文进行接收确认,同时通过确认序列号(ACK SEQ)确认接收到的数据长度。

数据发送者收到ACK确认信息后知道接收者已经收到了数据,可以继续发送数据。如果收不到ACK标志位置位的TCP报文,则说明接收者可能没有收到发送的数据,为了保证数据的可靠性,发送者需要重传丢失的数据。

TCP中判断数据丢失需要重传的机制有两种,分别是定时器超时和快速重传机制。定时器超时是指在定时器规定时间内没有收到数据接收者回复的ACK标志位置位的TCP报文,认为发送的这部分数据丢失,需要重新发送。

通过这种方式,数据发送者可以判断发送的数据已经丢失,但是每次都需要等定时器超时,发现的速度太慢。那我们可以想一下,是谁最先发现数据丢失的呢?答案肯定是数据接收者,接收者收不到数据只有以下两种情况:

●根本就没收到数据;

●收到的数据不完整。

针对第一种情况只能靠发送者定时器超时后重传,针对第二种情况接收者知道自己有哪部分数据没有收到(通过序列号机制),那么接收者可以通过发送多个针对丢弃数据的ACK报文(3个以上)来告知发送者这部分数据丢失,发送者在收到针对同一数据的多个ACK报文后,触发快速重传,重新发送这部分数据。

TCP数据确认机制如图1所示,该图展示了TCP数据传输过程。主机A发送第一个数据段,标识数据段的序列号SEQ为1369,数据段长度为400字节,主机B收到该数据段后回复ACK报文确认数据段,ACK报文中的ACK SEQ=接收数据段中的序列号(1369)+数据长度(400),计算出回复的确认序列号为1769。主机A收到ACK报文后开始发送第二个数据段,第二个数据段的SEQ为1769(1369+400),标识已经发送过的数据长度,主机B收到第二个数据段后回复确认ACK报文,以此类推。

TCP数据重传机制如图2所示,在该图中,主机A在传输数据段过程中,部分数据段丢失,针对这部分数据段一直没有收到确认ACK报文,主机A等待超时定时器超时后重传丢失的数据段,这种依赖定时器超时来重传数据段的机制速度较慢,在这种场景下,可以使用快速重传机制。

TCP数据确认机制

图1 TCP数据确认机制

TCP数据重传机制

图2 TCP数据重传机制

TCP快速重传机制如图3所示,在图3中,主机B针对丢失数据段发送多个ACK报文,主机A连续收到多个同样的ACK报文后会触发快速重传机制,重传这部分数据段,不需要等待超时定时器超时。

TCP快速重传机制

图3 TCP快速重传机制

  • 上一篇TCP会话的终止