当前位置: 首页 > news >正文

封装成帧的学习

在HDLC协议中,比特填充(Bit Stuffing)是防止数据部分与帧的标志(01111110)发生冲突的一种方法。具体来说,如果在数据中出现五个连续的1,为了避免这个模式与帧的开始和结束标志冲突,就会在后面自动插入一个0,这就是所谓的“每5个连续的1后面加一个0”。

比特填充的具体规则

  1. 在数据传输过程中,每当出现五个连续的1时,自动在其后面插入一个0

  2. 接收端在接收到数据时会检查是否有连续的五个1,并将其后的0去除,恢复原始数据。

举个例子

假设原始数据是:1111101111011

  1. 在这段数据中,第一次出现五个连续的1,位于111110。按照比特填充规则,在其后加一个0,变为1111100

  2. 继续检查后面的数据:1111011。第二次出现五个连续的1,在其后加一个0,变为11110101

因此,经过比特填充后的数据为:1111100111101011

接收端处理

接收端收到数据后,会对比特流进行处理,检查是否存在五个连续的1并去除其后的0。对于上面的数据,接收端会:

  • 发现1111100,去掉后面的0,恢复为111110

  • 发现11110101,去掉后面的0,恢复为1111011

最终恢复的原始数据为:1111101111011

字节填充(Byte Stuffing)是一种类似于比特填充的技术,用于确保数据在传输过程中不会误被当作帧的边界。与比特填充不同,字节填充是以字节为单位来进行数据的透明处理,常见于协议中如PPP(点对点协议)或HDLC(高层数据链路控制协议)中。

字节填充的规则

字节填充的主要目的是避免数据中出现与控制字节(例如帧的起始标志或结束标志)相同的字节模式。假设在HDLC协议中,使用特定的字节(如0x7E)作为帧的起始标志和结束标志。如果在数据部分中出现了0x7E这个字节,就需要使用字节填充来避免数据和控制信息发生冲突。

具体规则如下:
  1. 特殊字节替换

    • 当数据中出现特殊字节(例如HDLC的帧标志0x7E或转义字节0x7D)时,这些字节会被替换成一个转义字节和一个特定的字节组合。

    • 比如,如果数据中出现了0x7E,它会被替换为两个字节:0x7D 0x5E。而如果数据中出现了0x7D,它会被替换为0x7D 0x5D

  2. 接收端恢复

    • 接收端收到字节填充后的数据后,会检查是否有0x7D字节。如果有,它会将下一个字节与0x7D一起解析,并还原成原始的特殊字节(0x7E0x7D)。

举个例子

假设传输的数据是:

0x7E 0x12 0x34 0x7D 0x56 0x7E

在字节填充过程中:

  • 第一个0x7E会被替换成0x7D 0x5E

  • 0x7D会被替换成0x7D 0x5D

  • 第二个0x7E会被替换成0x7D 0x5E

因此,经过字节填充后的数据变为:

0x7D 0x5E 0x12 0x34 0x7D 0x5D 0x56 0x7D 0x5E

接收端的处理

接收端收到填充后的数据:

0x7D 0x5E 0x12 0x34 0x7D 0x5D 0x56 0x7D 0x5E

 

接收端会检查0x7D字节并进行还原:

  • 0x7D 0x5E被还原为0x7E

  • 0x7D 0x5D被还原为0x7D

  • 0x7D 0x5E被还原为0x7E

最终恢复的原始数据为:

0x7E 0x12 0x34 0x7D 0x56 0x7E

http://www.xdnf.cn/news/181891.html

相关文章:

  • 软考-软件设计师中级备考 2、计算机系统组成、指令系统
  • 【JavaScript】二十七、用户注册、登陆、登出
  • Ldap高效数据同步- MirrorMode双主复制模式配置详解(上)
  • 【KWDB创作者计划】_企业级多模数据库实战:用KWDB实现时序+关系数据毫秒级融合(附代码、性能优化与架构图)
  • OpenGl ES 3.0 笔记一:初步概念
  • 4.27 JavaScript核心语法+事件监听
  • 小球在摆线上下落的物理过程MATLAB代码
  • NL2SQL调研
  • 抗体品牌及产品介绍
  • 【三大特性】对象模型
  • 前端开发资源缓存策略
  • 全球城市范围30米分辨率土地覆盖数据(1985-2020)
  • 信奥赛之c++基础(常用数学函数)
  • 显存在哪里看 分享查看及优化方法
  • Milvus如何实现关键词过滤和向量检索的混合检索
  • 文本向量化
  • 深入解析Promise:从基础原理到async/await实战
  • 4月27日星期日今日早报简报微语报早读
  • 牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记3-地图基本操作与实战案例
  • 二叉树遍历(C语言版)
  • 解决升级WIN11(WINSERVER2025)后 远程桌面内 部分内容 显示 花屏 替换文件
  • 【Luogu】动态规划六
  • Python中数据切片操作详解和代码示例
  • AI实战SEO关键词优化法
  • 【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调
  • 初中级前端面试全攻略:自我介绍模板、项目讲解套路与常见问答
  • LeetCode42_接雨水
  • 杭电oj(1010、1015、1241)题解
  • 【数据可视化-39】2009-2019年亚马逊50大畅销书数据集可视化分析
  • 迷你世界UGC3.0脚本Wiki世界模块管理接口 World