封装成帧

封装成帧就是在一段数据的前后部分添加首部和尾部,这样构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部和尾部包含许多的控制信息,它们的一个重要作用:帧定界(确定帧的界限)

帧同步:接收方应当从接收到的二进制比特流中区分出帧的起始和终止。

组帧的四种方式:

  • 字符计数法
  • 字符(节)填充法
  • 零比特填充法
  • 违规编码法

image.png

透明传输

透明传输是指不管所传数据是什么样的组合,都应当能够在链路上传送。因此,链路层就“看不见”什么妨碍数据传输的东西。

当所传数据中比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

字符计数法

帧首部使用一个计数字段(第一个字节,八位)来表明帧内字符数。
image.png

字符填充法

image.png

  • 当我们传送的帧是由文本件组成时(文本文件的字符都是从键盘上输入的,都是ASCLL码)。不管从键盘上输入什么字符都可以放到帧里面传输,即(透明传输)
  • 当传送的帧是由非ASCll码的文本文件组成时(二进制代码的程序或图像等),就要采用字符填充法来实现透明传输。

image.png
SOH : 帧的开始 start of header
EOT: 帧的结束 end of transmission

当我们在帧的数据部分存在控制字符时,如果要实现透明传输,那么需要添加一个转义字符进行字符填充,告知接收方这只是一个普通的字符。

零比特填充法

image.png
操作:

  • 在发送端,扫描整个信息字段,只要连续5个1就立即填入1个0.
  • 在接收端收到一个帧时,先找到标志确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。

原始数据:0110111111110111110010
填充后数据:011011111011101111100010

违规编码法

image.png

总结

由于字节计数法中count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前普遍使用的帧同步法是比特填充和违规编码法。