(四) TCP 协议之自动重传请求ARQ

728 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. 自动重传请求 ARQ

ARQ 协议是 OSI 模型中数据链路层和传输层错误纠正协议之一。通过确认超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,通常会重新发送。

ARQ 协议是 TCP 协议保证可靠性的其中一种机制。

ARQ 包括停止等待 ARQ 协议和连续 ARQ 协议。相比较来说,连续 ARQ 协议可提高信道利用率。

2. 停止等待 ARQ 协议

停止等待 ARQ 协议,每发完一个分组就停止发送等待对方确认(回复 ACK)。如果过了一段时间(设置的超时时间到达后),还是没有收到对方的 ACK 确认,发送方会认为刚才的数据分组没有发送成功,需要重新发送,所以会重新发送刚才的分组,直到发送方收到确认后再发送下一个分组

在数据传输过程中会发生的出错情况:

  • 超时:发送方等了一定的时间后还没有收到接收方的确认消息(ACK

  • 确认丢失:接收方没有发送确认消息(ACK)或者在途中丢失了,发送方没有收到

  • 确认迟到:接收方发送了确认消息(ACK),但是发送方在超时重发数据之后收到了确认消息(ACK)。

发送方收到重复的消息和确认,处理方式是丢弃。

3. 连续 ARQ 协议

连续 ARQ 协议,发送方维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不需要等待对方确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组位置之前的所有分组都已经正确收到了。

缺点:比如发送方发送了 5 条 消息,中间第三条丢失(3 号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。