📜  停止等待协议,它的问题和解决方案(1)

📅  最后修改于: 2023-12-03 15:07:02.541000             🧑  作者: Mango

停止等待协议

简介

停止等待协议是一种简单的数据链路层协议,用于在传输层上实现可靠传输。发送方在发送数据帧后,会停止发送并等待接收方的确认帧;接收方在接收到数据帧后,会发送确认帧告诉发送方已经成功接收到了数据帧。只有在发送方收到确认帧后,才会继续发送下一个数据帧。

问题

停止等待协议的主要问题是效率低下。在发送方发送完一个数据帧后,需要等待接收方发送确认帧,如果确认帧未能及时收到,发送方会一直等待,直到超时后才会重新发送。这样会导致带宽的浪费,影响传输效率。

此外,一旦数据帧丢失,发送方无法知道接收方是否已经成功接收到了数据帧,因此只有等待超时后重新发送,这也会浪费带宽和时间。

解决方案

为了提高效率,可以采用累计确认协议或选择重传协议来代替停止等待协议。

累计确认协议

累计确认协议是一种改进的停止等待协议。接收方可以一次性确认多个收到的数据帧,而不是每接收到一个数据帧就立即发送确认帧。这样可以减少发送方和接收方之间的通信次数,提高传输效率。

选择重传协议

选择重传协议允许发送方一次可以发送多个数据帧,只要接收方没有确认其中的某一帧,发送方就会重传该帧。接收方在接收到数据帧后,会将其存储在接收缓存中,只有当接收方已经成功接收到前面的数据帧时,才会发送确认帧告诉发送方已经成功接收。这种方式可以减少重复发送的数据帧,提高带宽利用率。

总结

停止等待协议是一种简单可靠的数据链路层协议,但效率低下。我们可以采用累计确认协议或选择重传协议来提高传输效率和带宽利用率。