计算机网络学习笔记 3.2 封装成帧和透明传输

前言

参考王道书。
后续会进一步整理,包括添加笔记内容,标明参考资料。

更新中。。。

跳过目录

一、封装成帧(组帧)

封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。

接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

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

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

计算机网络学习笔记 3.2 封装成帧和透明传输
计算机网络学习笔记 3.2 封装成帧和透明传输

二、透明传输

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

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

三、组帧的四种方法

  1. 字符计数法
  2. 字符(节)填充法
  3. 零比特填充的首尾标志法(零比特填充法)
  4. 违规编码法

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

1、字符计数法

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

计算机网络学习笔记 3.2 封装成帧和透明传输
痛点:鸡蛋装在一个篮子里了。

容易出错,不常用

2、字符(节)填充法

  • 情况1:当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCI码)不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
    计算机网络学习笔记 3.2 封装成帧和透明传输
  • 情况2:当传送的帧是由非ASCI码的文本文件组成时(二进制代码的程序或图像等)就要采用字符填充方法实现透明传输
    计算机网络学习笔记 3.2 封装成帧和透明传输

字符填充
计算机网络学习笔记 3.2 封装成帧和透明传输

  • 使用特定的字符(首尾定界符)来定界一帧的开始(SOH)与结束(EOT)。
    计算机网络学习笔记 3.2 封装成帧和透明传输

  • 为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可以在特殊字符前面填充一个转义字符(ESC)来加以区分,以实现数据的透明传输。
    计算机网络学习笔记 3.2 封装成帧和透明传输

  • 接收方收到数据后,会自己删除插入的转义字符,结果仍得到原来的数据
    计算机网络学习笔记 3.2 封装成帧和透明传输计算机网络学习笔记 3.2 封装成帧和透明传输

3、零比特填充的首尾标志法(零比特填充法)

零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。

  • 使用011110来标志一帧的开始和结束。

计算机网络学习笔记 3.2 封装成帧和透明传输

  • 为了不使信息位中出现的比特流011110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的"1"时,将自动在其后插入一个"0";

  • 而接收方做该过程的逆操作,即每收到5个连续的"1"时,自动删除后面紧跟的"0",以恢复原信息。

  • 口诀:5“1”1“0”

操作:

  • 发送端
    扫描整个信息字段,只要连续5个1,就立即填入1个0

    原始数据:0110111111110111110010
    填充后:011011111011101111100010

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

    收到数据:011011111011101111100010
    删除后(原数据):0110111111110111110010

4、违规编码法

注意到曼彻斯特编码只存在“高-低”和“低-高”两种编码:
计算机网络学习笔记 3.2 封装成帧和透明传输
可以用“高-高” , “低-低”来定界帧的起始和终止。