《计算机网络》深入学:组帧

在计算机网络的世界里,物理层像是一个不知疲倦的搬运工,它只负责传输比特流(0 和 1),却并不关心这些比特代表什么意义。

数据链路层(Data Link Layer)的核心任务之一,就是把这些散乱的比特流“打包”成一个个有意义的单元,这个单元就是帧(Frame)。这个过程,我们称为组帧(Framing)封装成帧

这就好比寄快递:物理层是传送带,数据链路层则是把物品装进纸箱、封好胶带、贴上快递单的过程。只有装箱了,接收方才知道哪里是一件货物的开始,哪里是结束。

一、 为什么需要组帧?

组帧主要解决两个核心问题:

  1. 帧定界(Frame Delimitation)
    接收方如何从连续不断的比特流中区分出哪一段是第一帧,哪一段是第二帧?必须要有明确的界限。
  2. 透明传输(Transparent Transmission)
    这是组帧最难理解也最重要的概念。
    • 问题:如果数据中恰好出现了和“帧定界符”(比如结束标记)一模一样的比特组合,接收方会不会误以为帧传输结束了?
    • 目标:无论上层传下来什么样的数据(文本、图像、可执行文件),数据链路层都能原封不动地传输,不会被误判。

为了解决这两个问题,网络先驱们发明了四种经典的组帧方法。

二、 组帧的四种“招式”

1. 字符计数法 (Character Count)

这是最古老的方法。原理很简单:在帧的头部使用一个特定的字段,来记录这个帧一共有多少个字节。

  • 原理:帧头第一个字节是5,说明包括这个字节在内,本帧共有 5 个字节。接收方读到5,就往后数 4 个字节,结束。
  • 致命缺陷:如果这个“计数字节”在传输中出错了(例如5变成了3),接收方就会弄错帧的结束位置,进而导致后面所有的帧都无法正确识别(同步丢失)。

由于其脆弱性,现代计算机网络已基本淘汰该方法。

2. 字符填充法 (Byte Stuffing / Character Stuffing)

这种方法常用于以字节为单位传输的协议(如 PPP 协议)。

  • 原理
    • 用特定的控制字符来定界。例如:SOH (Start of Header) 表示开始,EOT (End of Transmission) 表示结束。
  • 透明传输的实现
    • 如果数据中真的出现了EOT怎么办?
    • 发送方:在数据中的控制字符(如EOT或转义字符本身ESC)前面,插入一个转义字符 (ESC)
    • 接收方:看到ESC,就知道后面的那个字节是真数据,不是控制指令,把它留下来,把ESC删掉。

3. 零比特填充法 (Zero-Bit Stuffing) ——★ 重点

这是高级数据链路控制协议(HDLC)采用的方法,它不处理字节,而是处理比特流,非常灵活。

(1) 核心规则
  • 帧定界符(Flag):使用一个特殊的比特模式01111110(十六进制7E)作为帧的开始和结束标记。
  • 发送方规则(5 “1” 填 0)
    只要在数据负载中扫描到连续的5 个 1,立即在后面插入一个0
    • 例如:数据0111111-> 发送01111101
    • 目的:确保数据中永远不会出现连续的 6 个 1,从而与 Flag (01111110) 区分开。
  • 接收方规则(5 “1” 删 0)
    接收方检测数据流,当发现连续5 个 1时,检查下一位:
    • 如果是0:说明是填充的,删除该 0,保留数据。
    • 如果是1:说明是Flag(01111110),或者是错误(01111111…)。

【例题 1】假设网络层需要传输的二进制数据为:011011111101111100。采用零比特填充法进行组帧,请问发送到链路上的实际比特流是什么?

【解析】

  1. 先写出定界符(首尾):0111111001111110
  2. 扫描数据部分,寻找连续的 5 个 1:
    • 原数据:0110 11111 10 11111 00
    • 第一处:...0110111111...-> 发现 5 个 1,后面是 1。根据规则,不管后面是啥,只要见 5 个 1 就填 0。
    • 第二处:...101111100-> 发现 5 个 1。
  3. 执行填充:
    • 第一处11111后加0->1111101
    • 第二处11111后加0->11111000
  4. 组合结果:
    011111100110111110101111100001111110

答案:中间的数据部分变为01101111101011111000

4. 违规编码法 (Physical Layer Coding Violation)

这种方法比较巧妙,它利用物理层编码的特性。

  • 背景:在曼彻斯特编码(常用于以太网)中,每一个比特的中间都有一次电压跳变(“高-低”代表 1,“低-高”代表 0)。
  • 原理
    曼彻斯特编码中,“高-高”和“低-低”电平是违规的,物理层通常不会出现这种信号。
    既然不会出现在数据中,那我们就可以故意用“高-高”或“低-低”来定界!
  • 优点:不需要任何填充技术,效率很高。
  • 应用:IEEE 802 标准(如以太网)中广泛使用。

三、 知识点总结

为了方便记忆,我们将这四种方法整理如下表:

方法核心手段优点缺点/局限考研关注度
字符计数法头部加长度字段简单错一位全盘皆输
字符填充法特殊字符定界 + ESC转义兼容性好依赖字符集 (ASCII),处理复杂★★★
零比特填充法Flag(7E) + 5个1填0任意比特流传输,效率高需硬件处理位流★★★★★
违规编码法利用物理层非法电平不需要填充,简单只适用于特定物理层编码★★

避坑指南:

  1. MTU(最大传输单元)
    组帧时,帧的数据部分长度不能超过 MTU。这不仅仅是软件限制,更是底层硬件的要求。如果网络层数据包(IP Datagram)大于 MTU,就必须分片。
  2. 以太网的特殊性
    虽然教材上讲了四种方法,但以太网实际抓包时,你看不到“帧长度”字段(由前导码和帧间隙界定),也看不到复杂的位填充(因为它用了曼彻斯特编码或 4B/5B 编码等物理层特性)。但在做理论题时,零比特填充法是考察算法逻辑的首选。

结语

组帧是数据从抽象的比特流走向有组织的逻辑数据的第一步。理解了组帧,就理解了计算机网络中“分层”与“封装”的精髓——下一层为上一层服务,且对上一层的数据内容保持透明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1131668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据误删或者误更新如何恢复(详细步骤,一看就会)

目录 本篇文章适用场景 一、下载MyFlash工具二、误删数据恢复 先检查MySQL有没有开启binlog日志演示误删除数据利用MyFlash工具 反写SQL利用mysqlbinlog 执行反写的sql二进制文件恢复完成 三、误更新数据恢复 演示误更新数据查看binlog最近的更新记录 ,确定起始、结…

空间计算开发者技能指南 2026

空间计算时代的来临:定义、生态与技术共振 “空间计算”(Spatial Computing)不仅仅是营销术语,它标志着计算平台从二维屏幕向三维物理空间的范式转移。虽然 Apple 将 visionOS 定义为空间计算操作系统,但在更广泛的开…

通信协议仿真:通信协议基础_(7).协议仿真的工具与软件

协议仿真的工具与软件 在通信协议仿真领域,选择合适的工具和软件是至关重要的。这些工具和软件可以帮助我们更高效地设计、实现和测试通信协议。本节将详细介绍一些常用的协议仿真工具及其使用方法,包括NS-3、OMNeT++、MATLAB等。 1. NS-3 NS-3(Network Simulator 3)是一…

你画我猜计时答题对战房间酒馆互动神器H5开源

让我为您介绍这个"云起SAAS小酒馆互动H5"系统。 系统介绍 这是一个云起SAAS小酒馆互动H5系统,一个完整的双人对战游戏平台。 核心功能 1. 双人游戏模式计时答题对战: 双方同步答题,统计得分和用时,得分高且用时短者胜,输方接受惩罚你画我猜对战: 一人画一人猜,画手完…

《庄子》导读

《庄子》是战国时期道家学派的经典著作,由庄周及其后学共同撰写,全书现存 33 篇,分为内篇 7 篇、外篇 15 篇、杂篇 11 篇。学界普遍认为,内篇为庄子本人所著,集中体现核心思想;外篇、杂篇多为弟子及后学阐发…

mysql数据被误删的恢复方案

文章目录 一、使用备份恢复二、使用二进制日志(Binary Log)三、使用InnoDB表空间恢复四、使用第三方工具预防措施 数据误删是一个严重的数据库管理问题,但通过合理的备份策略和使用适当的恢复工具,可以有效地减少数据丢失的风险…

【复杂网络分析】从直觉上理解《Stability of graph communities across time scales》

我刚接触社区发现时,最头疼的三个问题的是:到底什么是“好社区”?不同算法的结果为啥差这么多?模块化、谱聚类这些方法看着八竿子打不着,有没有内在联系?我们组的《Stability of graph communities across time scales》这篇经典论文,把这些经典方法串成了一张逻辑自洽的…

《庄子》核心篇章的思维导图框架

一、核心篇章总览内篇(必读,庄子核心思想载体)外篇/杂篇(选读,思想延伸与补充)二、内篇(必读)1. 《逍遥游》核心主题:“无待”的绝对逍遥境界关键意象:大鹏、…

通信原理篇---常见的调制方式

核心思想:为什么要调制?想象你要把一份秘密情报(信息)送到远方。问题1:情报是一张纸(低频信号),你自己跑步去送(低频电磁波),速度慢、传不远、还容…

通信原理篇

核心思想升级:从“送单词”到“送句子”在之前的基础调制(ASK、FSK、BPSK)中,我们一次只送1个比特(一个0或一个1)。这就像每次派一架飞机,只送一个字母,效率太低了。高阶调制的目标就…

亲测好用!专科生毕业论文必备的8款一键生成论文工具测评

亲测好用!专科生毕业论文必备的8款一键生成论文工具测评 专科生论文写作的痛点与测评思路 随着高校教育的不断普及,越来越多的专科生面临毕业论文撰写的压力。在实际操作中,许多学生会遇到选题困难、资料查找繁琐、格式不规范、语言表达不够专…

AGV 无人叉车在物流搬运中的核心优势

在物流成本上升、安全要求趋严的背景下,无人叉车已成为内部物流自动化的核心装备,正彻底改变传统仓储和物料搬运的运作模式。 AiTEN海豚之星作为全球领先的无人叉车与内部物流自动化解决方案提供商,依托全产品矩阵、自研核心技术与成熟交付能…

基于java的火车票订票系统的设计与实现毕业论文+PPT(附源代码+演示视频)

文章目录基于java的火车票订票系统的设计与实现一、项目简介(源代码在文末)1.运行视频2.🚀 项目技术栈3.✅ 环境要求说明4.包含的文件列表(含论文)数据库结构与测试用例系统功能结构前端运行截图后端运行截图项目部署源…

互联网大厂Java面试实战:基于电商场景的Spring Boot与微服务技术问答

互联网大厂Java面试实战:基于电商场景的Spring Boot与微服务技术问答 在本次面试故事中,面试官与求职者谢飞机围绕电商场景展开技术问答,涵盖Java核心技术、Spring Boot框架、微服务架构及相关技术栈。通过三轮循序渐进的问题,展示…

企业虚拟办公AI平台的灾备与容错设计:架构师确保系统7×24小时稳定运行

企业虚拟办公AI平台的灾备与容错设计:架构师确保系统724小时稳定运行 引言:虚拟办公时代,稳定是底线 在远程办公成为常态的今天,企业虚拟办公AI平台已成为组织协作的核心基础设施。从视频会议、实时文档协作到AI智能助手(如自动纪要、智能排班),这些服务的724小时高可…

【课程设计/毕业设计】通过python_CNN卷积神经网络对辣椒类别识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

AcuKG:大模型+知识图谱双轮驱动的中医针灸全面知识图谱自动构建及中医科研交互式知识发现

文章摘要 本研究构建了针灸知识图谱(AcuKG),系统性地整合多源数据,涵盖适应症、疗效、临床指南等内容。通过实体识别、语义关系提取等技术,AcuKG不仅增强知识发现能力,还显著提升大语言模型在针灸领域的问…

学长亲荐10个AI论文平台,助你搞定研究生论文写作!

学长亲荐10个AI论文平台,助你搞定研究生论文写作! AI 工具如何助力论文写作? 在研究生阶段,论文写作是每位学生必须面对的重要任务。无论是开题报告、文献综述还是最终的毕业论文,都对逻辑性、专业性和语言表达提出了极…

流式聚合不慢才怪?窗口、触发器和内存这三板斧你真用对了吗

流式聚合不慢才怪?窗口、触发器和内存这三板斧你真用对了吗做流处理这些年,我发现一个特别有意思的现象: 👉 大家都在写聚合,真正把“聚合性能”当回事的人并不多。 很多同学一上来就是: keyBywindowsum / …

Vue 2 企业级项目实战:从入门到架构师的完整成长记录

Vue 2 企业级实战进阶:从原理理解到工程化落地 一、学习路径的深度思考:不只是学,更是思考 第一阶段:理解 Vue 的设计哲学(2 周) 关键突破: 从 “怎么写” 到 “为什么这样写” 核心问题&am…