深入链路层:报文 MAC 传输原理与 ARP 欺骗、中间人攻击全解析

深入数据链路层------核心作用以及报文字段详解

数据链路层在TCP/IP协议中扮演的角色

在 TCP/IP 四层模型中,数据链路层位于网络层之下、物理层之上 ,是主机与局域网通信的核心桥梁,它屏蔽了底层物理介质的差异,为网络层提供点到点的可靠 / 无可靠传输服务

它的核心定位可以概括为三点:

  1. 帧封装与解封装 把网络层传下来的 IP 数据包,加上帧头、帧尾封装成数据帧,交给物理层发送;接收时则剥离帧头帧尾,取出 IP 数据包上交网络层。

  2. 相邻节点间的数据传输 数据链路层只负责同一广播域内两个直连设备之间的数据传输,不关心跨网段路由,只关心 "下一跳是谁"。

  3. MAC 寻址与硬件标识 使用 MAC 地址 标识网卡设备,实现局域网内的精准寻址,这也是它与网络层 IP 地址的最大区别。

  4. 差错检测与流量控制通过校验和、CRC 等机制检测传输错误,部分协议还支持重传、滑动窗口等机制保证传输可靠性(如以太网只检错不纠错)。

简单总结:网络层负责 "去哪"(IP 寻址),数据链路层负责 "怎么去下一站"(MAC 寻址 + 帧传输)。

并且需要强调:数据帧的传输必须倚靠MAC地址,IP只是规划了整体路线,真正的数据帧传输必须要MAC地址定位。

数据链路层报文字段详解

我们以目前局域网最通用的 Ethernet II 以太网帧格式为例

字段 长度 作用
前导码 + 帧起始定界符 8B 用于同步时钟,标识帧开始
目的 MAC 地址 6B 接收方网卡的硬件地址
源 MAC 地址 6B 发送方网卡的硬件地址
类型 / 长度 2B 标识上层协议(0x0800=IPv4,0x0806=ARP)
数据字段 46~1500B 承载上层 IP 包或 ARP 报文
帧校验序列 FCS 4B CRC 校验,用于检测传输错误

重点字段说明:

  • MAC 地址 :全球唯一硬件地址,格式 XX:XX:XX:XX:XX:XX,标识物理设备。
  • 类型字段:决定帧交给上层哪个协议处理,是二层与三层解耦的关键。
  • FCS:接收方通过校验判断帧是否损坏,损坏则直接丢弃。

以太网帧特点:

  • 无连接、不可靠传输
  • 只做差错检测,不负责重传
  • 最大传输单元 MTU 通常为 1500 字节

从应用层到硬件层------网络传输的完整流程

当主机 A(客户端)想要与主机 B(服务器)通信时,数据会自上而下穿过所有协议层,再通过物理网络传输到目标主机,最后自下而上递交到应用程序。整个过程可以分为封装发送、网络转发、解封装接收三个阶段。

1. 应用层构建数据

用户在浏览器、APP 等应用中发起请求,应用层按照 HTTP、HTTPS、DNS 等协议构造应用数据。这一层只关心 "内容是什么",不关心如何传输。

2. 传输层分段与端口标识

应用数据交给传输层,由 TCP 或 UDP 处理:

  • 为数据加上源端口、目的端口,标识进程;
  • TCP 会进行分段、序号、确认、握手等可靠传输控制;
  • 传输层只关心 "端到端连接",不关心具体路径。

3. 网络层封装 IP 包,确定路由与下一跳

传输层段交给网络层,封装为 IP 数据报

  • 加上源 IP、目的 IP
  • 主机 A 首先判断:目的 IP 是否与自己在同一子网
    • 同一子网:直接访问,下一跳就是目标主机;
    • 不同子网(包括访问外网):下一跳是默认网关

这一步就是:IP 地址规划整体路线,确定 "下一跳交给谁"。

4. 数据链路层封装成帧,依赖 MAC 地址传输

无论下一跳是目标主机还是网关,都必须封装成以太网帧才能真正发送:

  • 加上源 MAC 地址(本机网卡地址);
  • 加上下一跳MAC地址(留疑问:如何知道?);

5. 物理层发送比特流

网卡将帧转为电信号 / 光信号,通过网线、Wi-Fi 等物理介质发送比特流,完成真正的硬件级传输。

ARP协议------只有目标IP地址,如何得知目标MAC地址?

在局域网通信中,最终必须使用 MAC 地址才能发送数据帧 。但应用层和网络层只知道目标 IP,不知道对方 MAC,这时就需要 ARP(Address Resolution Protocol,地址解析协议)ARP协议位于数据链路层,但是ARP 并不严格属于纯数据链路层,而是位于数据链路层之上、IP 网络层之下的 "夹层协议"。

  • 使用以太网帧 进行封装,依赖 MAC 地址广播传输,所以行为上非常像数据链路层
  • 但它的作用是为 IP 协议服务,完成 IP 地址到 MAC 地址的映射,又和网络层强相关。
  • 这里不属于同一层的概念也呼应数据链路层报头字段中的类型字段:若为0x8806就上交给ARP处理。

1. ARP 核心功能

通过目标 IP 地址,查询对应的 MAC 地址。

2.ARP报文格式

字段 长度 作用
硬件类型 2B 标识硬件接口类型(1 = 以太网)
协议类型 2B 标识上层协议(0x0800=IPv4)
硬件地址长度 1B MAC 地址长度(6B)
协议地址长度 1B IP 地址长度(4B)
操作类型 2B 1=ARP 请求,2=ARP 应答
发送方 MAC 地址 6B 发送方网卡地址
发送方 IP 地址 4B 发送方 IP 地址
目标方 MAC 地址 6B 请求时填 00:00:00:00:00:00,应答时填目标 MAC
目标方 IP 地址 4B 要解析的目标 IP 地址

3. ARP 工作流程

  1. 主机 A 想要与主机 B(已知 IP)通信,但 A 的 ARP 缓存中无 B 的 MAC。
  2. 主机 A 发送 ARP 请求广播帧
    • 目的 MAC:FF:FF:FF:FF:FF:FF(全网广播)
    • 内容:"谁是 IP 为 192.168.1.10 的主机?请告诉我你的 MAC!"
  3. 局域网内所有主机都会收到该广播,但只有主机 B 会响应。
  4. 主机 B 回复 ARP 单播应答
    • 告知自己的 MAC 地址
  5. 主机 A 收到应答后,将 IP<->MAC 映射存入 ARP 缓存,后续直接使用。

4. 关键特点

  • ARP 是数据链路层协议,只在同一局域网内有效
  • 有缓存机制,减少重复广播
  • 跨网段通信时,ARP 解析的是网关 MAC,而非目标主机 MAC

5.如何查看本地ARP映射表

  • Windows 系统:
    • 查看 ARP 缓存:arp -a
    • 清理 ARP 缓存:arp -d *
  • Linux 系统:
    • 查看 ARP 缓存:arp -nip neigh
    • 清理 ARP 缓存:ip neigh flush all

子话题:ARP欺骗与中间人攻击原理

ARP欺骗

ARP 协议设计简单高效,但没有认证机制,任何人都可以伪造 ARP 报文,这就导致了安全漏洞。

原理

通过上文ARP的缓存机制,攻击者发送伪造的 ARP 响应包,强制更新网关或其他主机的 ARP 缓存,让它们把错误的 MAC 地址与某个 IP 绑定。

常见两种欺骗:

  • 欺骗主机:告诉受害主机 "网关的 MAC 是我"
  • 欺骗网关:告诉网关 "受害主机的 MAC 是我"

最终效果:受害主机的流量本应发给网关,结果全部发给了攻击者。

典型现象
  • 断网、网速异常
  • 网页被篡改、弹窗广告
  • 账号密码被嗅探

中间人攻击

ARP 欺骗是中间人攻击的最常用入口

攻击流程
  1. 攻击者通过 ARP 欺骗,同时欺骗受害主机网关
  2. 受害主机 → 攻击者 → 网关
  3. 网关 → 攻击者 → 受害主机
  4. 攻击者在中间转发流量 ,同时可以:
    • 抓包窃取账号密码(HTTP/FTP 等明文协议)
    • 篡改网页内容
    • 劫持下载、植入恶意代码
    • 屏蔽、丢弃流量实现断网
防御思路
  • 配置静态 ARP
  • 使用 ARP 防火墙
  • 开启端口安全
  • 局域网使用 802.1X 认证
  • 重要业务使用 HTTPS/TLS 加密,避免明文传输
相关推荐
modelmd2 小时前
Docker 重命名数据卷
运维·docker·容器
新手小新2 小时前
通信工程师学习笔记3-电信网间互联管理规定和网络安全法
网络·笔记·学习
Skilce2 小时前
K8S部署
linux·运维·服务器·容器·kubernetes
程序员老邢2 小时前
【技术底稿 12】内网统一日志系统 Loki + Promtail 全流程部署(对接 Grafana,监控日志一体化)
java·运维·程序人生·grafana·devops
灰暗世界%2 小时前
飞牛nas如何设置阿里云的DDNS
服务器·网络·阿里云
不爱吃糖的程序媛2 小时前
鸿蒙三方库适配读懂 `HPKBUILD`:lycium 怎么知道「下载谁、怎么编、装到哪」?
服务器·华为·harmonyos
zl_dfq2 小时前
计算机网络 之 【IP协议】(IP分片、局域网通信原理、MAC帧与MAC地址、ARP协议、ping)
网络·计算机网络·ip
晚枫歌F2 小时前
无锁队列简介
网络
d1z8882 小时前
(十七)32天GPU测试从入门到精通-vLLM 部署与性能测试day15
服务器·显卡·nvidia·vllm