文章目录
第三章 数据链路层
3.4 可靠传输
3.4.1 可靠传输的基本概念
3.4.2 可靠传输的实现机制——停止-等待协议
3.4.2 可靠传输的实现机制——回退N桢协议
3.4.3 可靠传输的实现机制——选择重传协议
3.4.4 可靠传输的意义
第三章 数据链路层
3.4 可靠传输
可靠传输是指在数据通信过程中,确保数据能够准确、完整地按照发送方的意图传输到接收方,并且接收方能够正确地接收和处理数据。
在可靠传输中,通常需要解决以下问题:
确认和反馈:发送方在发送数据后,需要接收到接收方的确认信息,以确认数据是否正确接收。如果发送方没有收到确认信息,会重传该数据,确保数据的正确性。
序号和重传:为了确保数据的有序传输和不丢失,每个数据包都应该带有唯一的序号。接收方根据序号对数据包进行排序,并检测是否有丢失的数据包,如果有则要求发送方进行重传。
超时重传:发送方通常会设置一个超时时间,在规定时间内如果没有收到接收方的确认信息,就认为数据丢失,需要进行重传。
流量控制:为了避免接收方无法及时处理大量的数据,需要对发送方的数据发送速率进行控制,确保发送方和接收方之间的数据传输保持平衡。
错误检测和纠正:通过使用差错检测码和纠错码等技术,可以检测并纠正数据传输过程中产生的错误,提高数据传输的可靠性。
常见的可靠传输协议包括 停止等待协议、连续 ARQ(Automatic Repeat Request)协议,如选择重传、回退N帧协议和选择重复请求协议等。这些协议都通过上述机制来实现可靠传输,确保数据在通信过程中的准确传递。
3.4.1 可靠传输的基本概念
使用 差错检测技术(循环冗余校验CRC),接收方的数据链路层就可检测出桢在传输过程中是否产生了误码(比特错误)。
根据数据链路层向上提供的服务类型:
不可靠传输服务:仅仅丢弃有误码的桢,其他什么都不做。
可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
一般情况下,有线链路 的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路 易受干扰,误码率较高,因此 要求数据链路层 必须向上层提供 可靠 传输服务。
比特差错 只是传输差错中的一种。
从整个计算机网络体系结构来看,传输差错还包括分组丢失,分组失序 以及 分组重复。
可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。
3.4.2 可靠传输的实现机制——停止-等待协议
若出现重传,信道利用率更低。
为了克服 停止-等待协议 信道利用率低 的缺点,就产生了另外两种协议。
3.4.2 可靠传输的实现机制——回退N桢协议
3.4.3 可靠传输的实现机制——选择重传协议
选择重传协议 为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确接收到的数据分组进行 逐一确认。
3.4.4 可靠传输的意义
可靠传输在数据通信中具有重要的意义,主要包括以下几个方面:
数据完整性:可靠传输能够确保发送的数据在传输过程中不被修改、损坏或丢失。这对于许多应用场景来说至关重要,特别是在涉及关键数据、文件传输或信息交换的情况下,需要确保数据的完整性。
数据可靠性:通过使用确认和反馈机制,可靠传输可以确保数据在发送方和接收方之间的正确传送。发送方会等待接收方的确认信息,如果未收到确认或收到错误的确认信息,则进行重传,从而提高数据传输的可靠性。
异常处理:可靠传输能够对网络异常情况进行处理,例如网络延迟、拥塞、丢包等。通过设置适当的超时重传和流量控制机制,可靠传输可以应对这些异常情况并进行恢复,确保数据可以成功传输。
顺序性:可靠传输通常也保证了数据包的顺序传输。这对于那些依赖于数据包顺序的应用程序非常重要,比如视频流、音频流等,确保数据按照正确的顺序进行播放或处理。
性能优化:尽管可靠传输可能会引入一些额外的开销(如确认和重传机制),但它可以提高数据交付的可靠性,从而避免了因为数据丢失或错误导致的重新发送和处理,从而提高整体的性能和效率。