【Linux】数据链路层

本文主题内容

  • 理解数据链路层的作用
  • 掌握以太网帧格式
  • 对比 MAC 地址与 IP 地址
  • 理解 MTU、IP 分片和 TCP MSS
  • 掌握 ARP 工作流程
  • 认识 ARP 报文与邻居缓存
  • 分析链路层常见问题

引言:IP 决定数据最终去哪里,但网卡发送的是数据链路层帧。每经过一段链路,主机或路由器都要确定下一跳的硬件地址,再把 IP 数据报封装到适合当前链路的帧中。

一、数据链路层

数据链路层负责同一链路上相邻节点之间的数据传输,主要解决:

  • 帧的组织与识别
  • 链路层寻址
  • 媒体访问控制
  • 差错检测
  • 向网络层交付有效载荷

网络层负责端到端路径,数据链路层负责当前一跳。数据报经过路由器时,IP 层继续转发,原链路帧则被解开并重新封装。

二、以太网

以太网既规定数据链路层帧格式,也涉及物理介质、速率和访问方式。

2.1 以太网帧格式

常见 Ethernet II 帧包含:

字段 长度 作用
目的 MAC 6 字节 当前链路目标
源 MAC 6 字节 当前链路发送方
EtherType 2 字节 上层协议类型
数据 46 到 1500 字节 有效载荷
FCS 4 字节 CRC 差错检测

常见 EtherType:

  • 0x0800:IPv4
  • 0x0806:ARP
  • 0x86DD:IPv6

帧前导码和帧间间隔属于物理传输细节,通常不计入上面讨论的以太网帧长度。

2.2 解包与分用

网卡接收帧后先检查目的 MAC 和 FCS。协议栈根据 EtherType 把有效载荷交给 IPv4、ARP 或 IPv6 等上层模块。

数据链路层通过帧边界和 EtherType 完成解包与分用,通过 MAC 地址完成当前链路交付。

三、MAC 地址

MAC 地址通常为 48 位,常用十六进制表示:

text 复制代码
08:00:27:03:fb:19

3.1 MAC 与 IP 的区别

对比 MAC 地址 IP 地址
所属层次 数据链路层 网络层
主要作用 当前链路交付 跨网络寻址和路由
是否随每跳变化 帧首部通常变化 无 NAT 时通常保持
地址范围 链路局部使用 具有网络前缀结构

MAC 地址可以由网卡固化,也可以由操作系统配置,不应简单认为任何情况下都绝对不可修改或全球唯一。

3.2 单播、广播与组播

  • 单播:发送给一个接口
  • 广播:目的 MAC 为 ff:ff:ff:ff:ff:ff
  • 组播:发送给加入某个组的接口

ARP 请求通常使用广播,因为发送方还不知道目标的单播 MAC。

四、MTU

MTU 是链路层能够承载的最大网络层数据包大小。常见以太网 MTU 为 1500 字节,但隧道、VPN、PPPoE 和巨帧环境可能不同。

4.1 MTU 对 UDP 的影响

IPv4 基本报头 20 字节,UDP 报头 8 字节。在 MTU 为 1500 的链路上:

text 复制代码
UDP数据建议上限 = 1500 - 20 - 8 = 1472字节

超过 MTU 的 IPv4 数据报可能被分片。

任意分片丢失都会导致整个 UDP 数据报重组失败,因此应用通常应避免大数据报。

4.2 MTU 对 TCP 的影响

TCP 使用 MSS 控制单个报文段携带的最大 TCP 数据长度。

text 复制代码
MSS = MTU - IP报头 - TCP报头

MTU 为 1500,IPv4 和 TCP 都使用 20 字节基本报头时,常见 MSS 为 1460。

TCP 建连时双方可以通过 MSS 选项通告接收能力。实际发送还会受到路径 MTU、选项长度和拥塞控制影响。

注意:1472 和 1460 都依赖特定报头长度与 MTU,只是常见示例,不是所有网络中的固定值。

五、ARP

ARP 用于在 IPv4 局域网内建立 IP 地址到 MAC 地址的映射。

5.1 为什么需要 ARP

应用通常知道目标 IP 和端口,但网卡发送帧需要目的 MAC:

  • 目标在同一子网:解析目标主机 IP
  • 目标不在同一子网:解析默认网关 IP

ARP 只解决当前链路的下一跳地址,不负责跨路由器查询远端主机 MAC。

5.2 ARP 工作流程

  1. 主机查询本地邻居缓存
  2. 没有映射时广播 ARP Request
  3. 拥有目标 IP 的主机发送 ARP Reply
  4. 请求方缓存 IP 与 MAC 映射
  5. 使用得到的 MAC 封装以太网帧

例:

text 复制代码
Who has 192.168.1.20? Tell 192.168.1.10
192.168.1.20 is at 00:11:22:33:44:55

5.3 ARP 报文

重要字段包括:

  • 硬件类型
  • 协议类型
  • 硬件地址长度
  • 协议地址长度
  • 操作码
  • 发送方 MAC 和 IP
  • 目标 MAC 和 IP

ARP Request 的目标 MAC 字段通常未知,填 0;以太网帧目的 MAC 使用广播地址。

六、ARP 缓存

Linux 查看邻居表:

bash 复制代码
ip neigh

常见状态包括:

  • REACHABLE:近期确认可达
  • STALE:缓存存在但需要再次确认
  • DELAY:等待上层流量确认
  • PROBE:正在主动探测
  • FAILED:解析失败

缓存有生命周期,避免每次发送都进行广播。

七、ARP 安全

传统 ARP 没有身份认证。攻击者可以发送伪造应答,把网关 IP 映射到攻击者 MAC,造成:

  • 中间人攻击
  • 流量劫持
  • 断网
  • 会话监听

常见防护:

  • 交换机 DHCP Snooping 与 Dynamic ARP Inspection
  • 关键设备使用静态邻居项
  • 网络分区和访问控制
  • 使用 HTTPS、SSH 等端到端加密,降低链路被劫持后的影响

八、抓包时怎样观察

可以使用:

bash 复制代码
tcpdump -n -e arp
tcpdump -n -e ether host 00:11:22:33:44:55

观察跨网络通信时会发现:

  • IP 目的地址仍是远端服务器
  • 以太网目的 MAC 是本地网关
  • 路由器转发到下一链路时重新生成以太网首部

九、总结

数据链路层负责相邻节点的一跳传输。以太网帧使用源和目的 MAC 完成链路层寻址,使用 EtherType 把有效载荷交给上层协议,使用 FCS 检测传输错误。

MTU 限制单个链路帧可承载的网络层数据大小,直接影响 UDP 分片和 TCP MSS。ARP 把下一跳 IPv4 地址解析为 MAC 地址,并通过邻居缓存减少广播。

跨网络通信中,IP 地址描述最终目标,路由表选择下一跳,ARP 得到下一跳 MAC,以太网帧完成当前链路的实际发送。

相关推荐
非凡ghost1 小时前
视频剪辑不用等渲染,这款开源工具让切分合并秒级完成
运维·电脑·软件需求
FII工业富联科技服务3 小时前
Omniverse 数字孪生与柔性自动化,如何破解产能与交付、设备与空间的双重困境?
运维·自动化·devops
润滑卫士3 小时前
油液介电常数在线监测:测量原理与油液老化状态评估方法
运维
Rock Chin6974 小时前
把 n8n 接进 Slack:在对话里 @机器人 触发自动化工作流
运维·机器人·自动化
浩浩测试一下5 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy5 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技6 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu6 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
海宇数据6 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
忆挽篱笙歌6 小时前
环境变量,本地变量
linux·运维·服务器