【网络】7.数据链路层:MAC 帧与 ARP 协议详解

目录

[一、MAC 帧协议](#一、MAC 帧协议)

[1. 网络通信的三层结构](#1. 网络通信的三层结构)

[2. 以太网](#2. 以太网)

[3. MAC 帧报头结构](#3. MAC 帧报头结构)

[4. MTU 与 MSS](#4. MTU 与 MSS)

[二、ARP 协议(地址解析协议)](#二、ARP 协议(地址解析协议))

[1. 局域网内通信](#1. 局域网内通信)

[2. 数据碰撞](#2. 数据碰撞)

[3. ARP 协议的作用](#3. ARP 协议的作用)

[4. ARP 协议报头结构](#4. ARP 协议报头结构)

[5. ARP 请求的发送过程](#5. ARP 请求的发送过程)

[6. ARP 应答的返回过程](#6. ARP 应答的返回过程)

[7. ARP 缓存](#7. ARP 缓存)

[8. 通信过程中的 ARP](#8. 通信过程中的 ARP)


一、MAC 帧协议

1. 网络通信的三层结构

把数据从不同公网的主机 A 传到主机 B,本质是由不同局域网间的主机通信构成的。

层级 协议 作用
传输层 TCP 确保可靠性,处理丢包问题
网络层 IP 长距离传输,指明大概方向
数据链路层 MAC 帧 每个局域网内具体怎么传

2. 以太网

以太网不是具体的某个网络,而是一种标准(IEEE 802.3 系列)。

数据链路层的两个基本功能

  • 分离:通过固定长度的协议头,将报头和有效载荷分离

  • 分用:通过帧类型字段,将数据交给上层对应的协议

3. MAC 帧报头结构

text

复制代码
[ 目的MAC地址 ][ 源MAC地址 ][ 类型 ][ 数据 ][ CRC ]
   6字节         6字节       2字节  46-1500字节 4字节

字段说明

  • 目的 MAC 地址(6 字节):接收方的物理地址

  • 源 MAC 地址(6 字节):发送方的物理地址

  • 类型(2 字节):上层协议类型

    • 0x0800:IP 协议

    • 0x0806:ARP 协议

  • 数据(46-1500 字节):上层传下来的有效载荷

  • CRC(4 字节):循环冗余校验,检测数据是否损坏

MAC 地址

  • 用于数据链路层的节点识别

  • 出厂时设定,全球唯一(理论上)

4. MTU 与 MSS

MTU(最大传输单元)

  • 以太网规定数据帧的大小范围:46 ~ 1500 字节

  • 小于 46 字节需要填充

  • 大于 1500 字节需要分片

为什么要有下限 46 字节?

  • 以太网是共享介质,存在数据碰撞

  • 为了检测碰撞,帧需要足够长

  • 太短的帧可能无法检测到碰撞

MSS(最大分段大小)

  • MSS = MTU - IP 报头 - TCP 报头

  • 典型值:1500 - 20 - 20 = 1460 字节

  • 对于 UDP:1500 - 20 - 8 = 1472 字节

分片位置

  • 分片不一定只发生在主机中

  • MTU 较小的路由器也可能对数据报进行分片

  • 由于 IP 报头中有偏移量和标志位,无论怎么分片,最终都可以重组

TCP 的优化

  • TCP 三次握手时,双方会在选项字段中携带自己的 MSS 大小

  • 双方取较小的 MSS 作为发送上限

  • 这样 TCP 层就能控制向下传递的数据大小,减少 IP 层分片

  • 注意:IP 层不知道 MSS,它只是被动地执行分片任务;MSS 是 TCP 层的概念

二、ARP 协议(地址解析协议)

1. 局域网内通信

当局域网内的主机 A 要发送数据到主机 E 时:

  1. A 将数据发送给路由器

  2. 路由器向局域网广播

  3. B、C、D 等主机收到后自动丢弃

  4. E 主机接收并处理

2. 数据碰撞

  • 局域网是一个碰撞域,同一时刻只能有一个设备发送数据

  • 多个设备同时发送,会产生数据碰撞

  • 碰撞发生后,需要采用**重发、退避(休眠)**等机制恢复

帧大小的限制

  • 从碰撞角度考虑,单个主机占用网络的时间越短越好

  • 但帧太短可能无法检测到碰撞

  • 因此以太网规定了帧的上下限:46 ~ 1500 字节

3. ARP 协议的作用

问题:MAC 帧通信需要目标 MAC 地址,但第一次通信时不知道对方的 MAC 地址。

解决方案:ARP 协议

ARP 的作用:通过 IP 地址获取 MAC 地址

工作过程

  1. 主机知道目标 IP,但不知道目标 MAC

  2. 在局域网内广播一个 ARP 请求:"谁的 IP 是 x.x.x.x?请告诉我你的 MAC 地址"

  3. 目标主机收到后,单播回复 ARP 应答,告知自己的 MAC 地址

协议层次

  • ARP 协议和 MAC 帧协议都在数据链路层

  • 但 ARP 是 MAC 的上层协议

  • ARP 报文需要先被 MAC 帧封装,然后发送

4. ARP 协议报头结构

ARP 报头固定 28 字节

text

复制代码
[ 硬件类型 ][ 协议类型 ][ 硬件地址长度 ][ 协议地址长度 ][ OP ][ 发送方MAC ][ 发送方IP ][ 目标MAC ][ 目标IP ]
   2字节      2字节        1字节           1字节        2字节    6字节       4字节      6字节      4字节

字段说明

字段 长度 说明
硬件类型 2 字节 链路层网络类型,以太网为 1
协议类型 2 字节 上层协议类型,IP 协议为 0x0800
硬件地址长度 1 字节 MAC 地址长度,一般为 6
协议地址长度 1 字节 IP 地址长度,一般为 4
OP 2 字节 操作类型:1=ARP 请求,2=ARP 应答
发送方 MAC 6 字节 发送方的物理地址
发送方 IP 4 字节 发送方的 IP 地址
目标 MAC 6 字节 目标物理地址(请求时填 0)
目标 IP 4 字节 目标的 IP 地址

填充问题

  • MAC 帧协议 14 字节 + ARP 协议 28 字节 = 42 字节

  • 小于以太网规定的 46 字节下限

  • 因此会在数据后面补足随机数据,凑够 46 字节

5. ARP 请求的发送过程

发送 ARP 请求

  • OP 字段 = 1(请求)

  • 目标 MAC 地址填 FF:FF:FF:FF:FF:FF(广播地址)

  • 被 MAC 帧封装时,MAC 报头的目标地址也是 FF:FF:FF:FF:FF:FF

接收处理

  1. 局域网内所有主机都会收到这个 MAC 帧

  2. 网卡发现目标 MAC 是广播地址,向上传递给 ARP 协议

  3. ARP 协议解析报文:

    • 如果 OP = 1 且目标 IP 是自己 → 发送 ARP 应答

    • 如果目标 IP 不是自己 → 直接丢弃

6. ARP 应答的返回过程

发送 ARP 应答

  • OP 字段 = 2(应答)

  • 目标 MAC 地址填写请求方的 MAC(已经从请求报文中获得)

  • 被 MAC 帧封装时,MAC 报头的目标地址就是请求方的 MAC

接收处理

  1. 只有请求方主机会收到这个 MAC 帧(其他主机在 MAC 层就会丢弃)

  2. 请求方解析 ARP 报文,获得目标主机的 MAC 地址

广播与应答的区别

  • 请求时:MAC 层广播,所有主机都收到,ARP 层判断是否是自己

  • 应答时:MAC 层单播,只有目标主机收到,ARP 层直接处理

7. ARP 缓存

为了提高效率,主机会维护一个 ARP 缓存表,记录最近通信过的 IP 地址与 MAC 地址的映射关系。

为什么不永久保存?

  • MAC 设备可能更换(网卡坏了换新网卡)

  • IP 地址是动态分配的(DHCP),可能变化

  • 因此缓存会设置过期时间(通常是几分钟到几十分钟)

查看 ARP 缓存:

复制代码
arp -a

8. 通信过程中的 ARP

ARP 不仅发生在主机和路由器之间,在路由器与路由器之间也会触发。

在整个通信过程中,ARP 会一直触发:

  • 每经过一个路由器,都需要知道下一跳的 MAC 地址

  • 因此 ARP 是网络通信的基础机制

相关推荐
程序猿编码2 小时前
轻量又灵活:一款伪造TCP数据包的iptables扩展实现解析(C/C++代码实现)
linux·c语言·网络·c++·tcp/ip·内核·内核模块
_OP_CHEN2 小时前
【Linux网络编程】(二)计算机网络概念进阶:彻底搞懂协议本质、传输流程与封装分用
linux·运维·服务器·网络·网络协议·计算机网络·c/c++
⑩-2 小时前
API 网关的作用?Spring Cloud Gateway 原理?
java·服务器·网络·spring cloud
Love Song残响2 小时前
Wireshark实战:从抓包到网络诊断
网络·测试工具·wireshark
志栋智能2 小时前
释放人力,聚焦创新:超自动化巡检的战略意义
大数据·运维·网络·人工智能·安全·自动化
好多渔鱼好多2 小时前
【IPC】 IPC产品中的 P2P 技术运用
网络·网络协议·p2p
楼田莉子2 小时前
Linux网络:应用层HTTP网络协议
网络·c++·后端·网络协议·学习·http
wanhengidc2 小时前
选择站群服务器的好处
运维·服务器·网络·安全·智能手机
RoboWizard2 小时前
解锁高效办公新体验 金士顿高速闪存盘
运维·服务器·网络·缓存·智能手机