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

数据链路层帧格式详解

重点讲以太网帧(Ethernet Frame)—— 因为它是现实中最主流、最常用的。


一、先搞懂:什么是 “帧”?

数据链路层的传输单位叫帧(Frame)。作用:

  • 把网络层的 IP 数据包封装起来
  • 加上源 MAC、目的 MAC、校验等信息
  • 让数据能在同一局域网内被交换机正确转发

一句话:帧 = 头部 + 数据 + 尾部


二、标准以太网帧格式(以太网 II / DIX 帧)

最常见、现在互联网 99% 用的就是这种。

完整结构(单位:字节):

plaintext

前导码 + 帧开始定界符 + 目的MAC + 源MAC + 类型/长度 + 数据 + FCS校验

逐字段详细解释:

1. 前导码(Preamble)

  • 长度:7 字节
  • 内容:10101010重复 7 次
  • 作用:
    • 让接收网卡同步时钟
    • 告诉网卡 “马上有帧来了,准备接收”

2. 帧开始定界符(SFD)

  • 长度:1 字节
  • 内容:10101011
  • 作用:
    • 标记帧真正开始
    • 前导码 + SFD 合称 “帧前同步信号”,共 8 字节

注意:这 8 字节不算在以太网帧长度内,是物理层辅助信号。


3. 目的 MAC 地址(Destination MAC)

  • 长度:6 字节 = 48 bit
  • 作用:
    • 标识接收方网卡
    • 交换机根据它查表转发
  • 格式示例:00:11:22:33:44:55

4. 源 MAC 地址(Source MAC)

  • 长度:6 字节
  • 作用:
    • 标识发送方网卡
    • 交换机靠它学习 MAC 地址表

5. 类型 / 长度字段(Type/Length)

  • 长度:2 字节
  • 两种含义:
    1. > 0x0600(1536)→ 表示上层协议类型
      • 0x0800 = IPv4
      • 0x0806 = ARP
      • 0x86DD = IPv6
    2. < 0x0600→ 表示数据部分长度(老式 IEEE 802.3 用)

现在几乎都用类型模式


6. 数据字段(Data / Payload)

  • 长度:46 ~ 1500 字节
  • 内容:
    • 网络层数据包(IP 包、ARP 包等)
  • 最小 46 原因:
    • 以太网要求帧最短64 字节
    • 去掉头部 14 字节 + FCS4 = 18 字节
    • 所以数据至少要 46 字节
    • 不够就自动填充(Padding)

最大 1500 就是MTU


7. 帧校验序列(FCS)

  • 长度:4 字节
  • 算法:CRC32
  • 作用:
    • 校验帧在传输中是否出错
    • 接收方重新计算 CRC,不一致就直接丢弃
  • 注意:FCS 只校验目的 MAC + 源 MAC + 类型 + 数据

三、以太网帧总长度

  • 最小帧长:64 字节(14 头 + 46 数据 + 4FCS)
  • 最大帧长:1518 字节(14 头 + 1500 数据 + 4FCS)

带 VLAN 标签的帧会多 4 字节,最大 1522 字节。


四、完整帧结构总结表(必背)

表格

字段名长度作用
前导码 Preamble7B时钟同步
帧开始符 SFD1B标记帧开始
目的 MAC6B接收设备地址
源 MAC6B发送设备地址
类型 / 长度2B标识上层协议(IP/ARP)
数据(含填充)46–1500B上层数据包
FCS 校验4BCRC 检错

真正的以太网帧 = 14 + 数据 + 4 = 18~1518 字节


五、和 IEEE 802.3 帧的区别(简单了解)

老式标准,现在几乎不用:

  • 类型字段 → 长度字段
  • 后面多了DSAP、SSAP、Control
  • 最后才是数据

现实中你遇到的 100% 是以太网 II 帧


六、帧的生命周期(一句话串起来)

  1. 上层给一个 IP 包
  2. 链路层封装:加目的 MAC、源 MAC、类型
  3. 物理层加前导码 + SFD 发出去
  4. 交换机根据目的 MAC 查表转发
  5. 接收网卡校验 FCS
  6. 去掉帧头,取出 IP 包交给网络层
http://www.cnnetsun.cn/news/1763348.html

相关文章:

  • Huggingface-CLI实战:从零到一的高效模型与数据集管理
  • Redis主从同步原理:从全量同步到增量同步的完整解析
  • OpenClaw学术利器:Phi-3-vision-128k自动批改作业与生成错题集
  • 别再死记硬背Fibonacci了!用Python/JS/C++三种语言对比递归的优劣与优化
  • 知识沉淀利器:中小企业常用的 9 款知识库系统对比
  • 在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
  • 国产AI生态崛起:模力方舟如何重塑数据集托管行业格局
  • fenjing实战指南:一键破解SSTI漏洞与WAF防御的艺术
  • .NET 9 AI推理加速实战手册(AOT+ML.NET+Quantization三重奏)
  • 中转Claude Code、Sonnet /Opus4.6力荐!
  • 经典算法C语言解析
  • 01_Tauri环境搭建
  • 用Casadi搞定机器人MPC控制:从数学公式到Python代码的保姆级实践
  • Apple-Mobile-Drivers-Installer:Windows系统快速安装苹果USB网络共享驱动终极方案
  • 鸿蒙HarmonyOS实战指南:hdc命令行工具高效调试技巧全解析
  • FreeRTOS通信机制全解析:为什么我的信号量总是不工作?
  • 如何实现微信聊天记录的永久保存与高效管理?WeChatMsg数据备份工具全攻略
  • 自动化测试工程师:脚本之外,更需业务洞察
  • Phi-3 Forest Lab效果展示:对LLM论文逐段精读+关键结论可视化提取
  • 我不是在用 AI 助手,我在把自己的能力沉淀成组织资产劝
  • 从负值到正解:深入剖析sklearn模型R2_score为负的根源与调优路径
  • 基于SIMP算法的悬臂梁轻量化设计MATLAB仿真实践
  • 仅限前500名开发者获取:Mojo插件自动化安装工具包(含离线安装器、依赖树可视化、跨平台wheel生成器)
  • C#内存革命进行时:Span<T>在Unity DOTS与gRPC流式传输中的隐秘优化路径(仅限核心团队流传的3条军规)
  • 保姆级教程:用OpenCV的MOG2算法搞定视频运动物体检测(附Python代码)
  • TranslucentTB:Windows任务栏透明化终极指南 - 轻松打造个性化桌面体验
  • RimWorld模组管理终极方案:深度解析RimSort的7大核心技术优势
  • FastAPI数据库索引配置:终极性能优化指南
  • 在 Ansible 中,`with_items` 关键词的使用指南
  • RedHat 7.6系统下Docker 20.10.14离线安装全攻略(附避坑指南)