文章目录
一、 封装数据帧
二、 "数据帧" 附加信息
三、 "数据帧" 帧同步
四、 "数据帧" 长度
五、 "数据帧" 组装方法
六、 透明传输
七、 字符计数法
八、 字符填充法 ( 加转义字符 )
九、 零比特填充法 ( 5 "1" 1 "0" )
十、 违规编码法
十一、 透明传输常用方法
一、 封装数据帧
封装数据帧 :
① 发送端封装数据帧 : 在 网络层 下发的 IP 数据报 信息基础上 , IP 数据报 的 前面 加上 帧首部 , IP 数据报 的后面 加上 帧尾部 ;
② 接收端识别数据帧 : 接收端 收到 物理层 上交的 比特流 之后 , 根据 数据帧 的首部 , 尾部 标记 , 从连续的比特流中 , 识别出 数据帧的 开始 和 结束位置 ;
二、 “数据帧” 附加信息
"数据帧" 附加信息 :
① 帧界定符 : 首部 和 尾部 包含 很多控制信息 , 其中的一种控制信息 帧定界符 , 用于确定 数据帧的界限 ;
② 其它信息 : 除了 帧定界符 之外 , 还包括 差错控制信息 , 流量控制信息 , 物理地址信息 ;
三、 “数据帧” 帧同步
"数据帧" 帧同步 :
① 帧界定符 : 在 首部 和 尾部 添加的 字段 中有 帧定界符 , 根据 帧定界符 可以确定数据帧的开始 , 结束位置 ;
② 帧同步 : 接收方 从 接收到的 二进制 比特流中 , 识别出 数据帧的 其实位置 和 终止位置 ;
③ 数据帧 发送 与 接收 : 发送方 从 帧首部 开始发送 , 到 帧尾部 发送完毕 , 接收方 首先从 帧首部 判断数据帧的开始 , 直到 接收到帧尾部 帧定界符 , 确定收到了一个完整的数据帧 ;
四、 “数据帧” 长度
数据链路层 帧长 :
① 数据帧组成部分 : 帧首部 , 帧数据部分 , 帧尾部 ;
② 数据帧帧长 : 帧首部长度 + 帧数据长度 + 帧尾部长度 之和 , 就是数据帧 帧长 ;
③ 帧的数据部分长度 限制 : 帧数据部分的 数据长度要 小于等于 最大传送单元 MTU ;
五、 “数据帧” 组装方法
数据帧 组装方法 :
字符计数法
字符填充法
零比特填充法
违规编码法
六、 透明传输
"透明传输" 概念 : 不管传输什么样的比特组合 , 都能够在链路上传输 ;
数据信息 与 控制信息 区分问题 : 数据中的比特组合 恰好 与 某个控制信息 完全一样 , 此时就需要采取一些措施 , 能够使接收方认为这是数据信息 , 不是控制信息 , 这样才能保证 数据链路层 传输的透明性 ;
七、 字符计数法
字符计数法 : 数据帧 首部 的 计数字段 , 表明 数据帧 字符数 ;
计数字段 : 1 Byte ( 字节 ) , 8 bit ( 位 ) ;
缺点 : 所有的数据帧都连续存放 , 如果其中有一个数据帧出错了 , 那么后续所有的数据帧都会出错 ;
八、 字符填充法 ( 加转义字符 )
数据帧透明传输需求 :
① 数据帧封装 : 数据帧 添加 帧首部 , 和 帧尾部 ; 帧首部 和 帧尾部 之间的部分就是实际的数据 ;
② 传输 文本文件 : 数据帧 的数据 是 文本文件组成时 , 数据都是 ASCII 码 , 键盘上传输的任何字符 , 都 可以透明传输 ;
③ 传输 非文本文件 : 如果传输的文件是 非 文本文件 , 如 图像 , 音频 , 视频 等 , 此时 文件中的数据可能是任意值 , 就有可能与 帧尾部 或 帧首部 相同 , 此时就需要 采用 字符填充法实现 透明传输 ;
字符填充法 :
① 数据的随机性 : 原始数据中 , 存在 与 帧首部 , 帧尾部 相同的数据 ;
② 发送端填充转义字符 : 在这些 数据中的 帧首部 / 帧尾部 相同的数据前 , 填充一个转义字符 , 告诉接收端 , 转义字符后的后续数据作为帧数据 , 不当做 帧首部 / 帧尾部 使用 ;
③ 接收端接收数据 : 接收端 接收到的数据中有 转义字符 + 帧首部 / 尾部 样式的信息时 , 将转义字符后的数据当做帧数据 ; 当接收到 单独的 帧首部 / 尾部 时 ( 没有转义字符 ) , 才将其当做数据帧的首部 / 尾部 ;
九、 零比特填充法 ( 5 “1” 1 “0” )
零比特填充法 :
① “数据帧” 首部尾部设定 : 数据帧首部尾部 都设定成 01111110 0111111001111110 , 解决 数据中出现 01111110 0111111001111110 数据的情况 , 实现透明传输 ;
② 发送端 : 扫描发送数据 , 发现有连续的 5 55 个 1 11 , 就在后面加上一个 0 00 ; 这样 帧数据 永远不会出现 6 66 个 1 11 的数据 ;
③ 接收端 : 扫描接收数据 , 发现有连续的 5 55 个 1 11 , 就将后面的 0 00 删除 ; 对应 发送端的操作 ;
这样在比特流中可以传输任意比特组合 , 不会引起 数据帧 边界判定错误的问题 , 实现了透明传输 ;
十、 违规编码法
正常编码 : 曼彻斯特编码 / 差分曼彻斯特编码 中 , 不管是 0 00 , 还是 1 11 , 在码元 中肯定会跳变一次 , 要么是 高-低 跳变 , 要么是 低-高 跳变 ;
违规编码 : 使用 “高-高” , “低-低” 码元 来作为 数据帧 的 起始 和 终止 边界 ;
十一、 透明传输常用方法
字符计数法 中如果出现差错 , 导致后果太严重 , 一般情况下不使用该方法 ;
字符填充法 实现复杂 , 兼容性差 , 一般情况下也不使用 ;
常用的透明传输实现方法是 零比特填充法 和 违规编码法 ;