组帧

  • 封装成帧:在一段数据的前后添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界

  • 透明传输透明传输是指不管所传的数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的

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

  • 组帧的四种方法

    • ①:字符计数法
      • 帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数
      • 缺点:当一个帧的计数字符发生错误时,其后面的帧都将发生错误
    • ②:字符(节)填充法
      • 服务条件:当传送的帧是由文本文件组成时(文本文件的字符都是从键盘输入的,都是ASCII码)。不管从键盘上输入什么字符都可以放到帧里传过去,即透明传输。当传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充方法实现透明传输,否则会出现下图错误
      • 解决办法:填充转义字符串ESC(Escape Sequence)来跳过帧中和控制串一样的数据,如下图
    • ③:零比特填充法
      • 帧中数据可能会和首尾等控制字符一样导致无法识别帧的长度
      • 解决办法:在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0.在接收端收到一个帧时,再用硬件对比比特流进行扫描。发现5个1时,就把后面的0删除
      • 保证了透明传输:再传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误
    • ④:违规编码法
      • 在曼彻斯特编码中,每一个比特1代表高-低低-高,0代表低-高高-低,因此可以用高-高低-低这样违规的编码来定界帧的起始和终止
      • 由于字节计数法中Count字段的脆弱性及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充违规编码法

本文章使用limfx的vscode插件快速发布