TCP停止等待协议、连续ARQ协议

Posted by JimWang on 2021-02-10

TCP停止等待协议、连续ARQ协议

停止等待协议

所谓停止等待协议就是每发送完一组数据后,等待对方确认并且收到确认后,再发送下一组数据。

可能会发生四种情况:无差错,出现差错,确认丢失和确认迟到

出现差错

当B收到M1时,检测出了差错,就抛弃M1,并什么也不做

A在超过一段时间仍然没有收到确认,就认为数据丢失了,然后会重传一次。这叫超时重传

image-20210210160601249

确认丢失

当A发送M1消息,B收到后,B向A发送了一个M1确认消息,但却在传输过程中丢失。而A并不知道,在超时计时过后,A重传M1消息,B再次收到该消息后采取以下两点措施:

​ 1>、丢弃这个重复的M1消息,不向上层交付。

​ 2>、向A发送确认消息。(不会认为已经发送过了,就不再发送。A能重传,就证明B的确认消息丢失)。

image-20210210160610047

确认迟到

所谓确认迟到,就是B发送的确认消息没有丢失,但是却迟到(过了很长一段时间才到)

A发送M1消息,B收到并发送确认。在超时时间内没有收到确认消息,A重传M1消息,B仍然收到并继续发送确认消息(B收到了2份M1)。此时A收到了B第二次发送的确认消息。接着发送其他数据。过了一会,A收到了B第一次发送的对M1的确认消息(A也收到了2份确认消息)。处理如下:

1>、A收到重复的确认后,直接丢弃。

2>、B收到重复的M1后,也直接丢弃重复的M1。

image-20210210160703193

连续ARQ协议

image-20210210160742207

连续ARQ协议可以大大提高信道利用率

image-20210210160810491

连续ARQ规定,发送方每收到一个确认就将滑动窗口向前(时间增大方向)滑动一格。

接受方采用累积确认的方式:接收方不必每收到一个消息,就发送一个确认。而是在收到几条消息后,对按序到达的最后一条消息发送确认。表示,这个消息之前的所有消息全部收到。