📜  数据链路层中的流控制(1)

📅  最后修改于: 2023-12-03 14:54:57.973000             🧑  作者: Mango

数据链路层中的流控制

数据链路层位于OSI参考模型的第二层,主要功能是保证物理层的可靠传输。在数据链路层中,流控制是一种管理数据流的技术,它可以在发送端和接收端之间协调数据的传输速率,以保证数据的稳定传输。

流控制的原理

在数据链路层中,发送端和接收端都有一个缓冲区,缓冲区的作用是存储将要发送或接收的数据。如果发送端的速率过快,而接收端处理数据的速率跟不上发送端的速度,那么接收端的缓冲区就会被填满,导致数据的丢失或错误。

为了解决这个问题,流控制技术就应运而生了。在流控制中,发送端会根据接收端返回的确认信息和窗口大小(窗口大小指可以发送的数据量),动态调整发送速率。如果接收端的缓冲区已经达到极限,那么它就可以发送一个停止符来告诉发送端暂停发送数据,直到接收端有足够的缓冲区来接收数据。

流控制的实现

数据链路层中的流控制有两种实现方式:停止-等待流控制和滑动窗口流控制。

停止-等待流控制

停止-等待流控制是最简单的流量控制技术,它的工作原理是:发送端发送一帧数据后,等待接收端的确认信号,只有收到确认信号后,才能发送下一帧数据。如果接收端在规定时间内没有收到该帧数据,就会发送一个重发请求,使发送端重新发送一帧数据。

该方式的实现比较简单,但会造成网络资源的浪费,因为发送端即使没有数据需要发送,也会不停地发送控制帧,占用了网络资源。

滑动窗口流控制

滑动窗口流控制是一种效率更高的流量控制技术。发送端和接收端都有一个窗口大小,窗口大小表示可以发送或接收的数据大小。发送端可以根据接收端返回的确认信息和窗口大小,动态地调整发送速度。

在滑动窗口流控制中,发送端发送一帧数据后,等待接收端的确认信号。如果接收端收到数据并成功处理后,就会返回确认信号,同时窗口大小加1,代表接收端可以接收更多的数据。发送端根据窗口大小和已发送但未收到确认信号的数据,动态地调整发送速率。如果接收端的窗口大小已经满了,那么它就会发送一个停止符来告诉发送端暂停发送数据。

总结

流控制是一种保证数据可靠传输的技术,在数据链路层中得到广泛应用。停止-等待流控制和滑动窗口流控制是比较常用的流控制方式,其中滑动窗口流控制是一种效率更高的技术。掌握流控制技术可以为程序员在网络通信方面的开发工作提供帮助。