数据链路层:封装成帧,透明传输,差错校验

三个基本功能

封装成帧(framing)

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界

数据链路层:封装成帧,透明传输,差错校验

透明传输

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个

数据链路层:封装成帧,透明传输,差错校验

差错校验

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1,误码率与信噪比有很大的关系,我们就要在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。

在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术,使用CRC获得FCS,下面演示CRC的用法

数据链路层:封装成帧,透明传输,差错校验
余数为0就没有错,且除数p越大,检测效果越好,越小可能有些错检测不出来