news 2026/10/16 3:15:03

Linux之网络<数据链路层>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux之网络<数据链路层>

数据链路层

1. 怎么分离报文头部与有效载荷?

以太网头部长度固定为 14 字节(6+6+2)。 收到完整以太网帧之后:

总帧数据,跳过前面固定 14 字节的帧头,剩下的部分就是上层有效载荷。 公式:载荷 = 整个以太网帧 - 14 字节帧头 - 末尾 4 字节 CRC 校验。

关键点:以太网帧头固定长度,不需要额外长度字段,直接偏移固定字节就能取出载荷。

2. 类型字段(2 字节)的作用:分用(多路分解)

分用(demultiplexing):接收方拿到载荷之后,判断交给上层哪个协议。 类型字段标记数据载荷里面是什么协议:

  • 0x0800→ IPv4 报文(最常见)
  • 0x86DD→ IPv6 报文
  • 0x0806→ ARP 报文

一句话理解:MAC 层收到帧,剥离 14 字节帧头拿到载荷,读取【类型字段】,知道载荷里面装的是 IP/ARP,然后交给对应的上层模块,这个过程就叫分用。

ARP 与 RARP 报文属于数据链路层报文,被封装在以太网帧载荷中。 以太网帧数据载荷最小为 46 字节;ARP 报文固定 28 字节,不足部分使用 PAD (一般是全0)填充补齐 18 字节。

IP vs MAC

IP 地址:远大最终目标好比唐僧取经,目标是从东土大唐,一路去往西天。 代表端到端的最终目的地,全程不变,从头到尾目标不变。

MAC 地址:当下这一段的下一站就像取经路上一站一站赶路:女儿国→车迟国→狮驼岭。 MAC 只管当前这一段链路,只负责走到下一站;每进入一个新国家(新链路 / 新局域网),就要更换下一站目的地。


早期总线型共享以太网,所有主机共用一条通信线路,同一时刻只允许一台主机发送数据。主机发送的以太网帧会广播到局域网内全部主机;主机收到帧后比对目的 MAC,不是发给自己的报文直接丢弃。

当两台主机同时发送数据,会产生信号碰撞,报文损坏。CSMA/CD 就是用来处理介质冲突的机制:先听后发,边发边听,冲突停发,随机重传。主机发送前监听线路,空闲才发送;发送过程持续检测碰撞,一旦检测冲突就停止发送,等待随机时间后重试。

注意区分:现代交换机以太网工作在全双工模式,收发使用独立通道,不再存在信号碰撞,CSMA/CD 仅作为理论考点。

  1. 帧长度会影响碰撞概率。帧越长,信道占用时间越长,其他主机在发送期间同时发包的可能性变大,碰撞概率越高;短帧占用介质时间短,碰撞概率更低。
  2. 主机数量增多,冲突概率显著增加。更多主机竞争共享总线,更容易出现多主机同时发送,频繁发生碰撞,大量资源消耗在冲突与重传,网络有效吞吐量下降。

交换机

交换机在某种意义上,将一个局域网分成了两个part,

左侧机器的通信不会影响右侧机器的相互通信,同时又能实现两侧机器来实现相互通信,增加了通信的效率

交换机最核心的优势就是分割碰撞域,支持局域网内多组主机并行传输,提升带宽利用率;依靠 MAC 地址表实现精准单播转发,当目的 MAC 未知时执行泛洪。

工作原理
  1. 主机 A 封装帧:src MacA,dst MacD,把帧发送到网线,从eth_left端口进入交换机。
  2. 第一步:MAC 自学习交换机读取帧里的源 MAC MacA,查表:MacA 对应的端口就是当前入端口 eth_left,条目不变,无需更新。
  3. 第二步:查询目的 MAC,做转发决策读取目的 MACMacD,查询 MAC 地址表:

MacD 对应的端口:eth_left,也就是和入端口是同一个端口!

交换机规则:如果目的端口 == 报文的入端口 → 直接丢弃该帧,不向任何其他端口转发。


ARP

拿到目的 IP,通过子网掩码计算目标网络,查询路由表得到下一跳 IP 地址。 想要在以太网中发送数据,必须知道下一跳路由器 / 主机的 MAC 地址。 在同一个网段内,需要一种技术,将下一跳 IP 解析为下一跳设备的 MAC 地址。 这个局域网协议就是:ARP 地址解析协议。

我们根据上面整个来完成下面整个目标

此时主机A在他所在的以太网发送他的arp报文给所有的主机

比如是B主机收到了的报文,他进行报头与有效载荷的分离,然后看目的ip地址,比对发现不是自己,就会将报文丢弃

如果是E主机收到了报文,他进行报头与有效载荷的分离,然后看目的ip地址,比对发现就是自己,然后就会将构建arp应答,那么还要进行arp报文的区分

主机a的报文

主机e的报文

这样主机A就获得了主机E的mac地址

  1. A 发 ARP 广播请求 (op=1):请问 ipE 的 MAC 是谁?全网主机收到。
  2. B 等其他主机:目标 IP 不是自己,丢弃。
  3. E 匹配目标 IP,构造 ARP 单播应答 (op=2),带上自己 MacE 发给 A。
  4. A 收到应答,得到 ipE ↔ MacE 映射,存入 ARP 缓存

  1. 缓存里存储的是IP 与 MAC 的映射条目。
  2. ARP 缓存条目带有老化时间(时间限制),不是永久保存。
    • 长时间没有使用这条 IP-MAC 映射,条目就会自动过期删除。
    • 好处:如果设备更换网卡、IP 发生变化,旧的失效 MAC 记录可以自动清除,防止通信故障。

ARP 欺骗(ARP 中间人攻击)极简介绍

核心原理

ARP 协议没有身份校验机制:只要收到 ARP 应答报文,主机就会无条件更新自己 ARP 缓存里的IP→MAC映射,不管有没有主动发 ARP 请求(免费 ARP)。

ARP 欺骗就是攻击者伪造 ARP 应答报文,篡改目标主机 ARP 缓存:

告诉受害主机:网关 IP 对应的 MAC = 攻击者主机 MAC 同时告诉网关:受害主机 IP 对应的 MAC = 攻击者主机 MAC

于是受害主机发给网关的流量、网关返回给受害主机的流量,全部先经过攻击者机器转发,这就是ARP 中间人攻击。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 3:13:59

STM32移植TencentOS tiny MQTT组件实现物联网云接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 3:13:45

提升RAG准确率的实用技巧(收藏版),程序员小白也能轻松掌握!

本文详细介绍了如何提升RAG(检索增强生成)的准确率,从文档解析、切分、向量化到检索与重排序,每个环节都提供了实用的解决方案和代码示例。此外,还分享了进阶技巧和多轮对话上下文管理,帮助读者全面掌握RAG…

作者头像 李华
网站建设 2026/10/16 3:13:31

OpenClaw安装配置实战:从零搭建轻量级自动化任务调度系统

拿到一个开源工具,我的习惯是先别急着敲安装命令,先把“它到底要装什么、装在哪、怎么跑起来”这三件事想清楚。OpenClaw 这名字乍一看像个机器人项目,但它其实是一套轻量级的自动化任务调度与执行框架,用一次你就会觉得&#xff…

作者头像 李华
网站建设 2026/10/16 3:12:55

如何阻止 Windows 11 自动更新 —— 7 种方法

去年夏天,我正在给客户赶一份关键演示的收尾,我的 Windows 11 笔记本偏偏挑了这个时间点开始更新。不管我怎么狂点鼠标、怎么骂骂咧咧,更新还是启动了,我只好盯着那个可恨的圆形进度条发呆。两个小时后,一场会议也改期了,我对自己许下承诺:再也不能让突袭式更新毁掉我的…

作者头像 李华
网站建设 2026/10/16 3:11:11

华为:反事实推理让大模型自蒸馏

📖标题:Beam Search as Test-Time Self-Distillation via Counterfactual Contexts 🌐来源:arXiv, 2609.37041v1 🛎️文章简介 🔸研究问题:如何在不需要更新模型参数、没有外部奖励模型和专家示…

作者头像 李华