使用差错检测技术(例如循环冗余校验CRC),接受方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。
数据链路层向上层提供的服务类型:
不可靠传输服务:仅仅丢弃有误码的帧,其他什么都不做。
可靠传输服务:想办法实现发送端发送什么,接受端就接受什么。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。及时出现了误码,可靠传输的问题由其上层处理。而无线链路容易受到干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输,而且可靠传输的实现比较复杂,开销也比较大,需要根据实际的需求来进行实现。
实现可靠传输的三种机制:
1.停止等待协议
为了避免在发送方开始发送数据的时候在链路上丢失而造成的超时,发送方会设置一个超时重传的功能来判断数据是否达到接收方,若没有则进行重传。
对于接收方返回的确认分组在数据链路上的丢失,发送方在发送数据的时候给分组带上序号,避免因为发送方得不到确认分组而造成的超时重传而导致数据重复。
2.回退N帧协议
回退N帧协议的接受窗口尺寸只能等于1,因此接受方只能按序接受正确达到的数据分组。
一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接受而丢弃。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大的浪费。
3.选择重传协议