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