ARQ自动重传协议

马谦马谦马谦 2019年3月12日22:23:31 发表评论
文章最后编辑于:2020-3-3 22:24:51

ARQ全称是Automatic repeat request,是TCP中实现可靠传输的重传协议,它的核心思想是停止等待协议。

一、停止等待协议

停止等待协议是数据链路层中最基础的协议,在数据发送出去后,如果没有收到对端的回复,会一直等待对方回复。直到触发超时机制再自动重传,确保数据传输的可靠性。

一个没差错的停止等待协议交互过程为:

ARQ自动重传协议

一旦出现了差错,停止等待协议会重发数据包,直到数据发送成功:

ARQ自动重传协议

TCP协议的核心思想就是这样,如果发现数据出现了丢失,就要重传这个数据包,直到数据发送成功为止。

那么如何确定数据报丢失了?TCP使用一个重传计时器对发送报文段计时,如果在计时器归零时还没有收到对端回复,那么就认为数据报已经丢失,需要重传。重传计时器的计时时间被称为RTO,他是通过数据报往返时间动态测量出来的,不同系统上实现也不同。参考:TCP中的RTT和RTO

二、连续ARQ协议

连续ARQ协议指的是每次发送数据时,不是发送一个数据报文,而是同时发送多个报文。因为如果每次都只发送一个数据报,信道的利用率极低,传输效率不高。

连续ARQ协议的作用就是为了弥补这个不足,在发送数据时,不用每次都等到上一个数据包确认后才发送下一个,而是每次都发送一组数据包。确认数据包的同时还继续发送数据包,这样就大大提高了效率。

不出现差错的情况下的交互过程:

ARQ自动重传协议

出现差错的交互过程:

ARQ自动重传协议

三、滑动窗口协议

连续ARQ协议是配合滑动窗口协议来完成,每次分组发送的报文数量取决于窗口大小。

参考:TCP的滑动窗口协议

本文共执行59次查询,耗时0.354秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: