停止等待协议
互联网早起阶段,线路质量不好,所以数据链路层就要担负起可靠传输的职责,因此早期阶段链路层就会使用这三种流量控制的协议;
现代计算机由于线路取得很大进步,因此数据链路层就可以不进行流量控制的功能,链路层可以进行差错控制等其他功能,把流量控制的功能交给传输层。这样的好处就是数据链路层不用进行流量控制功能,速度变快了,延迟变小了
我们一般认为流量控制既可以在链路层,又可以在传输层上进行。两者取其一。
数据包:在数据链路层就是帧,网络层就是IP数据报,不同的层,数据报有不同的名字
进行滑动窗口(这三种滑动窗口协议:停止等待协议,GBN,SR)的目的:
- 可以解决流量控制
- 可以解决可靠传输,数据包的丢失问题
停止等待协议做题(研究)的前提:
- 虽然现在绝大多数都是全双工通信方式,但是研究问题时还是抽象成单工(即一方发送,一方接收)
- 不需要考虑协议是在哪一个层次上(数据链路层or传输层)
停止等待协议应用情况:
-
有差错情况(丢包情况)
一、数据帧丢失OR帧出错
超时计时器是每次发送帧都会启动,只不过正常可以到达的帧,它的计时器一般不会有用,即计时器设置的时间一般要大于一个RTT;但是当发送丢包(差错)的话,这等待的时间就会远远大于一个RTT,当计时器到达设置的时间还没收到确认信号时,就会重发刚才发送失败的帧。这就叫自动重传机制
!!1 每次发送帧的时候,要拷贝一份刚才发送的帧,这样在发送失败的时候才会重新发送拷贝的副本
2 数据帧和确认帧必须编号。当编号连续的时候就指知道发生了数据包丢失
3 对于帧出错,当接收方收到发送过来的帧,但是发现帧出错,不能用,也不会返回给发送方一个确认帧,超时之后仍然会重传。
二、确认帧丢失
三、ACK迟到
对于来晚的确认帧不做处理,丢弃掉。
本来是准备接收1#帧,但是收到的是0#帧,知道ACK迟到,丢弃掉这个)#确认帧
- 无差错情况
停止等待协议优点:简单
缺点:信道利用率太低 (信道利用率:有效发送(传输)时间占整个发送周期的比率)
发送周期:发送时延+RTT+确认帧接收时延
有效发送时间:发送时延
停止等待协议的信道利用率整体比较低,信道大多时间处于空闲时间
后面两种窗口机制信道利用率比较高