以太网是 "标准" 而非 "网络"
以太网本质是一套统一的技术规范集合,目的是让不同厂商的设备(如路由器、电脑、交换机)能互联互通,核心覆盖两层技术:
- 数据链路层:规定设备间如何 "通信"(比如数据帧格式、冲突处理规则);
- 物理层:规定设备如何 "连接"(比如传输介质、接口类型、信号格式)。
以太网与其他局域网技术的对比
| 技术类型 | 核心特点 | 以太网的优势 |
|---|---|---|
| 以太网 | CSMA/CD 访问控制,双绞线 / 光纤传输 | 成本低、部署简单、速率迭代快、兼容性极强 |
| 令牌环网 | 需争夺 "令牌" 才能发送数据,环形拓扑 | 成本高、扩展麻烦,已基本淘汰 |
| 无线 LAN(如 Wi-Fi) | 无线信号传输,无物理线缆 | 灵活但速率、稳定性略逊于有线以太网,适 |
以太网帧格式

以太网 II 型帧的总长度范围是 64 字节~1518 字节。 二、各字段的核心含义与作用
目的地址
- 内容:接收方网卡的MAC 地址(48 位,12 位十六进制数);
- 作用:标识 "这个帧要发给哪个设备",以太网设备会检查该字段 ------ 只有自身 MAC 地址(或广播 MAC 地址
FF:FF:FF:FF:FF:FF)匹配时,才会接收这个帧。
源地址
- 内容:发送方网卡的MAC 地址;
- 作用:标识 "这个帧是谁发的",接收方后续回复时,会把该地址作为 "目的地址"。
类型
- 核心作用:标识 "数据部分对应的上层协议" ,让接收方知道要把数据交给哪个上层模块处理;
0800:对应 IP 协议,数据部分是 IP 数据报;0806:对应 ARP 协议,数据部分是 ARP 请求 / 应答;8035:对应 RARP 协议,数据部分是 RARP 请求 / 应答。
数据
- 内容:上层协议的报文(如 IP 数据报、ARP 报文);
- 关键规则:以太网要求 "数据部分至少 46 字节"------ 如果上层报文本身长度不足(比如 ARP 报文只有 28 字节),会添加PAD(填充字段) 凑够 46 字节。
CRC(4 字节,循环冗余校验码)
- 作用:检测帧在传输过程中是否出错;
你对 MTU 的核心逻辑和影响总结得特别全面!核心结论先明确:MTU 是数据链路层对 "帧数据部分" 的最大长度限制,直接决定 IP 数据包是否需要分片,而 IP 分片的 "无重传" 特性,会导致任意分片丢失即整体重组失败。
下面从 "本质理解→关键细节→实际影响" 三方面展开,把每个核心点讲透:
MTU
MTU(Maximum Transmission Unit,最大传输单元),是特定数据链路层协议(如以太网、拨号链路)允许的 "帧数据部分" 最大长度,不包含帧头和帧尾(比如以太网帧头 14 字节 + 帧尾 4 字节,MTU1500 是纯数据长度)。
是 "链路层限制":不同网络类型的 MTU 不同,由物理介质、协议标准决定(不是 IP 层或传输层的限制);
IP 分片:应对 MTU 限制的 "拆包机制"
当 IP 数据包的总长度(含 IP 头)超过链路 MTU 时,IP 层会触发分片,具体如下:
- 16 位标识(ID):所有分片的 ID 相同,用于接收端识别 "哪些分片属于同一个原始 IP 包";
- 3 位标志(Flags):
- 第 2 位(DF):0 = 允许分片,1 = 禁止分片(若设为 1 且包超 MTU,会直接丢弃并返回 "需要分片" 错误);
- 第 3 位(MF):0 = 当前是最后一个分片,1 = 后面还有分片;
- 13 位片偏移(Fragment Offset):表示当前分片的数据在原始 IP 包数据中的位置(以 8 字节为单位),用于接收端按顺序重组。
MTU 对 IP 协议的核心影响
- 核心风险:IP 层是 "无连接、不可靠" 的,任意一个分片丢失,整个原始 IP 包的重组都会失败,且 IP 层不会重传丢失的分片;显然一个数据包丢失的概率是小于把他分包后出现丢包的概率的,所以MTU等于是增加了需要重传数据的概率。
- 连锁反应:重组失败后,IP 层会丢弃所有相关分片,导致上层协议(如 TCP、UDP)感知 "数据丢失"------TCP 会触发重传,UDP 则直接丢包(无重传机制)。
ARP
ARP 的核心作用
- 应用层(比如你打开浏览器访问网站)只知道目标的 IP 地址(比如图里的 172.20.1.2);
- 网卡(硬件)只认 MAC 地址(比如图里主机 B 的 08:00:20:74:CE:EC)------ 收到数据包时,只要 MAC 地址和自己不匹配,直接丢弃。
而 ARP 的作用,就是把 "目标 IP 地址" 翻译成 "对应的 MAC 地址",填补这个认知差,让数据包能被目标网卡正确接收。
ARP 的工作过程

步骤 1:主机 A 的 "需求"
主机 A 想给主机 B 发数据,只知道 B 的 IP(172.20.1.2),但不知道 B 的 MAC 地址 ------ 此时 A 的 ARP 缓存表中,没有 B 的 IP-MAC 映射。
步骤 2:主机 A 发 "ARP 广播请求"
主机 A 封装一个ARP 请求包,并通过以太网广播(本地网段所有主机都能收到)发送:
- 以太网帧的目的 MAC 地址填
FF:FF:FF:FF:FF:FF(广播地址,代表 "发给本地网段所有主机"); - ARP 请求包的内容是:"谁是 172.20.1.2?请把你的 MAC 地址告诉我!"(同时带上 A 自己的 IP 和 MAC)。
步骤 3:本地网段主机 "筛选请求"
本地网段的所有主机都会收到这个 ARP 广播:
- 每台主机检查 ARP 请求里的 "目标 IP(172.20.1.2)" 是否是自己的 IP;
- 不是自己 IP 的主机,直接忽略这个请求;
- 主机 B 发现 "目标 IP 是自己的",准备回应。
步骤 4:主机 B 发 "ARP 单播应答"
主机 B 封装一个ARP 应答包,通过单播(只发给主机 A)发送:
- 以太网帧的目的 MAC 地址填 "主机 A 的 MAC 地址"(不再是广播,只给 A);
- ARP 应答包的内容是:"我是 172.20.1.2,我的 MAC 地址是 08:00:20:74:CE:EC"。
步骤 5:主机 A 更新 "ARP 缓存表"
主机 A 收到 B 的 ARP 应答后,会把 "172.20.1.2 ↔ 08:00:20:74:CE:EC" 这组映射,存到自己的ARP 缓存表里。
之后主机 A 给 B 发数据时,直接从缓存表取 B 的 MAC 地址,不用再发 ARP 请求 ------ 直到缓存过期,才会重新执行上述流程。
表项为何要设过期时间?
保证映射 "时效性",避免通信失败
网络中 "IP→MAC" 的映射不是永久不变的:
- 设备可能更换网卡(MAC 地址是网卡出厂固化的,换网卡 = MAC 改变);
- IP 地址可能被重新分配(比如 DHCP 动态分配 IP,原 IP 被分给其他设备,对应新的 MAC)。
如果缓存表项 "一直有效",主机 A 会一直用 "过时的 MAC 地址" 发数据:要么数据包被错误的设备接收,要么直接被丢弃(因为 MAC 不匹配),导致通信失败。
传输过程中MAC的变化
在数据报文的传输过程中,MAC 地址(源 MAC、目的 MAC)是 "逐跳变化" 的 。
因为MAC 地址负责标识 "当前链路(同网段)的发送方和接收方"。
场景 1:同网段传输(无路由器,直接通信)
主机 A(IP:172.20.1.1,MAC:MA)和主机 B(IP:172.20.1.2,MAC:MB)在同一网段:
- IP 地址:源 IP 始终是 172.20.1.1,目的 IP 始终是 172.20.1.2(全程不变);
- MAC 地址:源 MAC 始终是 MA,目的 MAC 始终是 MB(全程不变)。
场景 2:跨网段传输(经过路由器,多段链路)
主机 A(192.168.1.2,MAC:MA)→路由器 R1→路由器 R2→主机 B(172.16.0.2,MAC:MB)
- 链路 1(A→R1 入接口):源 MAC=MA,目的 MAC=R1 入接口的 MAC(M1);
- 链路 2(R1 出接口→R2 入接口):源 MAC=R1 出接口的 MAC(M2),目的 MAC=R2 入接口的 MAC(M3);
- 链路 3(R2 出接口→B):源 MAC=R2 出接口的 MAC(M4),目的 MAC=MB。
在传输过程中,IP 地址的变化需分「有无 NAPT(网络地址端口转换)」两种情况,而 MAC 地址始终是 "逐跳变化" 的 ------ 补充 NAPT 场景后,完整逻辑如下:
传输过程中IP的变化
无 NAPT 的场景
IP 地址端到端不变 ,MAC 地址逐跳变化(和之前的逻辑一致):
- IP:源 IP = 发送端主机 IP,目的 IP = 接收端主机 IP,全程无变化(负责 "端到端标识");
- MAC:每经过一段链路,源 MAC = 当前发送设备的 MAC,目的 MAC = 下一跳设备的 MAC(负责 "当前链路的节点标识")。
有 NAPT 的场景(内网→公网 / 公网→内网)
此时IP 地址会在 NAT 设备处发生「一次转换」,MAC 地址仍保持 "逐跳变化"。
以「内网主机 A(私有 IP:192.168.1.2,MAC:MA)→家庭路由器(NAT 设备,内网接口 MAC:M1,公网 IP:210.5.6.7,公网接口 MAC:M2)→公网服务器 B(公网 IP:202.100.1.2,MAC:MB)」为例:
出网:内网主机 A→公网服务器 B
IP 地址的变化:仅在 NAT 设备处转换 1 次,之后保持不变:
- 链路 1(A→路由器内网接口):IP=「源:192.168.1.2(私有),目的:202.100.1.2(公网)」;
- 路由器执行 NAPT:将源 IP从 192.168.1.2 替换为自身公网 IP(210.5.6.7),同时记录 "210.5.6.7: 端口 X ↔ 192.168.1.2: 端口 Y" 的映射;
- 链路 2 及之后(路由器公网接口→服务器 B):IP=「源:210.5.6.7(公网),目的:202.100.1.2」,直到到达 B 前,IP 不再变化。
入网:公网服务器 B→内网主机 A
IP 地址的变化:仅在 NAT 设备处反向转换 1 次:
- B→路由器公网接口:IP=「源:202.100.1.2,目的:210.5.6.7(路由器公网 IP)」;
- 路由器执行 NAPT 反向转换:根据端口映射,将目的 IP从 210.5.6.7 替换为 192.168.1.2(A 的私有 IP);
- 链路 1(路由器内网接口→A):IP=「源:202.100.1.2,目的:192.168.1.2」,直到到达 A 前,IP 不再变化。