计算机网络-数据链路层
数据链路层是OSI参考模型中的倒数第二层,是物理层与网络层沟通交流的中间纽带。它将从网络层获取到的数据包打包封装成帧传输给物理层,同样也将物理层传递过来的帧解包后传输给网络层。总结起来,数据链路层主要完成下面三项任务:
- 向网络层提供一个定义良好的服务接口。
- 处理物理层传输过来的数据,验证数据传输的准确性。
- 调节数据流,确保处理数据的接收方不会被传递数据的发送方淹没。
定义良好的服务接口
数据链路层提供三种可能的服务:无确认的无连接服务、有确认的无连接服务、有确认的有连接服务。
无确认是指源机器向目标机器发送帧,目标机器不对这些帧进行确认,即源机器无法知道这些发送的帧是否达到目标机器。这种情况适用于两种情形:错误率很低或者对实时通信要求很高。有确认是指对于源机器发送来的每一帧,目标机器都需要单独的向源机器发送确认帧,告诉发送源成功地接收了信息。
连接并不是说两台传输终端间存在一条专有的物理线路,而是指确保两终端无误传输数据所做的实质性努力,包括对传输协议的协商、对所有传输帧编号、帧超时重传机制等。
确保数据正确性
数据链路层将网络层传递过来的数据包封装成帧,实质上就是将数据包分割成一定大小的比特后,并将这些比特按照特定的编码算法加入冗余数据并封装成帧。在传输到另一侧后,可以通过相应的算法计算出该帧在传输过程中是否发生错误甚至直接修正错误。
能够确定发生错误的编码方式叫检错码,常用的有奇偶校验、校验合、循环冗余校验。
能够通过加入的冗余信息反推出发送的数据的编码方式叫纠错码,常用的有海明码、二进制卷积码、里德所罗门码、低密度奇偶校验码。
调节数据流
数据链路使用了发送窗口机制防止低速的接收端被高速的发送端淹没。发送端在固定的时间内连续发送n帧,并开启各帧的超时重传定时器。接收端接收帧并验证正确性,传输无误的帧给发送端反馈确认帧,验证有误的帧不反馈确认帧。发送端收到确认帧后取消该帧对应的超时重传定时器,那些传输错误的帧在超时时间到时会重新发送给接收端。接收端在所有的帧都成功接收完毕后,会将数据提交给网络层进行处理。
因为链路是双工的,为充分利用带宽,确认信息一般情况是写在接收端向发送端发发送的下一帧的ACK字段内的。