封装成帧和透明传输
封装成帧
- 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上的比特流后,就根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束
- 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止
- 组帧的四种方法
- 字符计数法
- 字符(节)填充法
- 零比特填充法
- 违规编码法
透明传输
- 透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此链路层就“看不见”有什么妨碍数据传输的东西
- 当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息,这样才能保证数据链路层的传输是透明的
字符计数法
帧首部使用一个计数字段(第一个字节,8位)来标明帧内字符数
缺点:一个计数字段发生错误,后续帧的数据将全部造成混乱
字符填充法
当传输的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCII码)。不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输
当传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充法实现透明传输
零比特填充法
首部和尾部字节都是01111110,为了避免原始数据中与帧首尾边界冲突,采用5"1"1"0"填充方式
操作:
- 在发送端,扫描整个信息字段,只要连续存在5个1,就立即填入1个0
- 在接收端,收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除
由于011111110中有6个1,零比特填充法可以确保数据部分不会出现连续的6个1
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误
违规编码法
由于曼彻斯特编码每一个码元对应的电平都是“高-低”或“低-高”,不会出现“高-高”或“低-低”这种情况。因此违规编码法就是将定界帧的起始和终止设定为“高-高”和“低-低”
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前普遍使用的帧同步法是零比特填充法和违规编码法