可靠传输的基本概念
根据上一篇文章的学习,我们知道,使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可以检测出帧在传输过程中是否产生了误码(比特错误)。
那么,检测到错误码后,接下来该如何处理呢?传输有误码的帧是直接丢弃还是纠正,亦或是重传?
这取决于数据链路层向其上层提供的服务类型
不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
可靠传输服务:需要实现发送端发送什么,接收端就收到什么
例如,接收方可以给发送方发送一个通知帧,告诉发送方之前发送的帧产生了误码,需要重发。发送方收到通知后,重新发产生误码的帧。可靠传输的实际实现过程没有这么简单,例如,如果通知帧本身就误码传输有误呢?本次不做深入讨论实现可靠传输的方法,仅做基本概念的介绍。
一般情况下,有线链路的误码率比较低,为了减少开销,并不要求数据链路层向上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错中的一种,传输差错还包括分组丢失、分组失序以及分组重复我们这里将帧的描述改成了分组,是为了表示传输差错不仅仅存在于数据链路层的比特差错。
例如,主机H6给H2发送数据,经过路由器R5,R5此时的输入队列快满了,R5根据自己的分组丢弃策略,将分组丢弃,这是一种分组丢失的情况
另外还有的分组失序的情况,主机依次发送A、B、C三个分组,由于经过的链路不同,可能存在C比A和B先到达的情况。
还有一种分组重复的情况,发送的分组B在链路中由于其他原因,在网络中滞留了,H2没有及时收到分组,那么H6可能会超时重传,这时链路里就有两个重复分组B,造成H2收到重复分组。
分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
可靠传输服务并不局限于数据链路层,其他各层均可选择实现可靠传输。
例如网络接口层,802.11无线局域网要求数据链路层实现可靠传输,以太网不要求数据链路层实现可靠传输。
网际层中的IP协议向其上层提供无连接、不可靠传输服务。
运输层中的TCP协议向其上层提供面向连接的可靠传输服务,UDP向其上层提供无连接、不可靠传输服务。
可靠传输的实现比较复杂,成本高,是否使用可靠传输取决于应用需求。
本文为笔者自学过程中整理的笔记,如有错误之处,欢迎指正,谢谢关注!
上一篇:
下一篇:计算机网络三种可靠传输的实现机制之一-停止-等待协议SW
……