数据链路层:封装成帧、透明传输、差错检测

从整个互联网来看,局域网仍属于数据链路层的范围。

链路 VS 数据链路
链路:从一个结点到相邻结点的一段物理链路。
数据链路:物理线路+实现通信协议的硬件和软件。(早期通信协议也称通信规程)
另一种分类:
把链路分为 物理链路逻辑链路
此处的物理链路即上一种分类中的链路,此处的逻辑链路即上一种分类中的数据链路

链路 或 物理链路 从一个结点到相邻结点的一段物理链路。
数据链路 或 逻辑链路 物理线路+实现通信协议的硬件和软件。

:数据链路层的协议传输单元
步骤:(包含三个关键点:封装成帧、透明传输、差错检测)

  1. 结点A把网络层接收到的IP数据报添加首部尾部构成帧

封装成帧:在一段数据前添加首部(SOH)和尾部(EOT)信息
SOH:start of head,十六进制编码为0x01,不是指s、o、h三个字符
EOT:end of transmission,十六进制编码为0x04
帧长:数据部分长度+首部长度+尾部长度
MTU:指数据部分的长度上限,不包括首部尾部

  1. 结点A把封装好的帧发送给结点B的数据链路层

透明传输:指数据链路层对这些数据来说是透明的,即无论什么样的比特组合,都能按照原样没有差错的通过这个数据链路层
字节填充或字符填充:为了使数据中出现的SOH,EOT不被解释为控制字符,在其前面使用转义字符ESC,十六进制编码为0x1B

  1. 结点B对接收到的帧进行差错检测,若没有问题就交付给上层网络层,否则丢弃。

误码率:BER(bit error rate)
循环冗余校验:例如要传送的数据M=101001,这个数字有K=6个比特。通信双方约定一个数字P,假设P为1101,P有4位,令n=4-1=3位。接下来用101001000(即M后面增加三个零)除以约定的P,得到商为110101(没有什么用)和余数001(需要用)。
冗余码:刚才算出来的余数
帧检验序列(FCS):为了进行检错而添加冗余码
发送的数据是101001001,即原数据并在后面添加帧检验序列。
CRC是一种检错方法,而FCS是后面添加的冗余码。两者并不一样。
发送端帧检测序列FCS的生成和接收端的CRC检验都是通过硬件完成的,处理很迅速,因此不会延误数据的传输。

在这里插入图片描述
注意:这并不代表数据链路层实现了可靠传输
在这里插入图片描述
如图所示,对于每一个分段来说,检测CRC检验结果都为0,接受之后,仍可能出现失序、丢失、重复等问题。
所以 无比特差错无传输差错 并不是相同的概念

另外:CRC循环冗余校验只能判定帧有无错误,而不知道哪一位或哪几位有错,也不提供纠错功能。

现在互联网采用了区别对待的方法:
对于通信质量良好的有线传输链路:数据链路层协议不使用确认和重传机制,即不向上层提供可靠传输服务。
对于通信质量较差的无线传输链路:数据链路层协议使用确认和重传机制,即向上层提供可靠的传输服务。

猜你喜欢

转载自blog.csdn.net/weixin_44895666/article/details/107164296