首页 > 技术文章 > 停止等待协议

fennleo 2020-08-04 17:43 原文

互联网早起阶段,线路质量不好,所以数据链路层就要担负起可靠传输的职责,因此早期阶段链路层就会使用这三种流量控制的协议;

现代计算机由于线路取得很大进步,因此数据链路层就可以不进行流量控制的功能,链路层可以进行差错控制等其他功能,把流量控制的功能交给传输层。这样的好处就是数据链路层不用进行流量控制功能,速度变快了,延迟变小了

我们一般认为流量控制既可以在链路层,又可以在传输层上进行。两者取其一。


数据包:在数据链路层就是帧,网络层就是IP数据报,不同的层,数据报有不同的名字

进行滑动窗口(这三种滑动窗口协议:停止等待协议,GBN,SR)的目的:

  • 可以解决流量控制
  • 可以解决可靠传输,数据包的丢失问题

停止等待协议做题(研究)的前提:

  1. 虽然现在绝大多数都是全双工通信方式,但是研究问题时还是抽象成单工(即一方发送,一方接收)
  2. 不需要考虑协议是在哪一个层次上(数据链路层or传输层)

停止等待协议应用情况:

  • 有差错情况(丢包情况)

    一、数据帧丢失OR帧出错

超时计时器是每次发送帧都会启动,只不过正常可以到达的帧,它的计时器一般不会有用,即计时器设置的时间一般要大于一个RTT;但是当发送丢包(差错)的话,这等待的时间就会远远大于一个RTT,当计时器到达设置的时间还没收到确认信号时,就会重发刚才发送失败的帧。这就叫自动重传机制

!!1 每次发送帧的时候,要拷贝一份刚才发送的帧,这样在发送失败的时候才会重新发送拷贝的副本

​ 2 数据帧和确认帧必须编号。当编号连续的时候就指知道发生了数据包丢失

​ 3 对于帧出错,当接收方收到发送过来的帧,但是发现帧出错,不能用,也不会返回给发送方一个确认帧,超时之后仍然会重传。

​ 二、确认帧丢失

​ 三、ACK迟到

对于来晚的确认帧不做处理,丢弃掉。

本来是准备接收1#帧,但是收到的是0#帧,知道ACK迟到,丢弃掉这个)#确认帧

  • 无差错情况

停止等待协议优点:简单

缺点:信道利用率太低 (信道利用率:有效发送(传输)时间占整个发送周期的比率)

发送周期:发送时延+RTT+确认帧接收时延

有效发送时间:发送时延

停止等待协议的信道利用率整体比较低,信道大多时间处于空闲时间

后面两种窗口机制信道利用率比较高

推荐阅读