目录
[(2)令牌环网(Token Ring)](#(2)令牌环网(Token Ring))
[(3)无线局域网(Wireless LAN, WLAN)](#(3)无线局域网(Wireless LAN, WLAN))
[(1)混杂模式(Promiscuous Mode)](#(1)混杂模式(Promiscuous Mode))
[四、以太网的介质访问控制:CSMA/CD 与碰撞处理机制](#四、以太网的介质访问控制:CSMA/CD 与碰撞处理机制)
[(1)载波侦听(Carrier Sense)](#(1)载波侦听(Carrier Sense))
[(2)多路访问(Multiple Access)](#(2)多路访问(Multiple Access))
[(3)碰撞检测(Collision Detection)](#(3)碰撞检测(Collision Detection))
[6、现代以太网中的 CSMA/CD 状态](#6、现代以太网中的 CSMA/CD 状态)
[7、总结对比:CSMA/CD vs CSMA/CA](#7、总结对比:CSMA/CD vs CSMA/CA)
[五、令牌环网(Token Ring Network)](#五、令牌环网(Token Ring Network))
[4、核心机制:令牌传递(Token Passing)](#4、核心机制:令牌传递(Token Passing))
[六、以太网帧格式(Ethernet Frame Format)](#六、以太网帧格式(Ethernet Frame Format))
[1、标准以太网帧结构(DIX Ethernet II)](#1、标准以太网帧结构(DIX Ethernet II))
[(1)MAC 地址(硬件地址)](#(1)MAC 地址(硬件地址))
[(2)类型字段(Type Field)](#(2)类型字段(Type Field))
[(3)帧校验序列(FCS / CRC)](#(3)帧校验序列(FCS / CRC))
[步骤 1:检查目的 MAC 地址](#步骤 1:检查目的 MAC 地址)
[步骤 2:执行 CRC 校验](#步骤 2:执行 CRC 校验)
[步骤 3:根据类型字段交付上层](#步骤 3:根据类型字段交付上层)
[示例:主机 A 向主机 B 发送 IP 数据报](#示例:主机 A 向主机 B 发送 IP 数据报)
[4、MAC 帧如何分离头部、载荷与尾部?](#4、MAC 帧如何分离头部、载荷与尾部?)
[5、补充:IEEE 802.3 原始帧 vs Ethernet II](#5、补充:IEEE 802.3 原始帧 vs Ethernet II)
[七、认识 MAC 地址](#七、认识 MAC 地址)
[1、什么是 MAC 地址?](#1、什么是 MAC 地址?)
[2、MAC 地址是否真的"不可修改"?](#2、MAC 地址是否真的“不可修改”?)
[3、MAC 地址 vs IP 地址:本质区别与协作关系](#3、MAC 地址 vs IP 地址:本质区别与协作关系)
[5、关于 NAT 的重要补充](#5、关于 NAT 的重要补充)
[八、认识 MTU(Maximum Transmission Unit)](#八、认识 MTU(Maximum Transmission Unit))
[1、什么是 MTU?](#1、什么是 MTU?)
[3、MTU 对 IP 协议的影响:分片机制](#3、MTU 对 IP 协议的影响:分片机制)
[(2)IP 分片的关键字段(IPv4 头部)](#(2)IP 分片的关键字段(IPv4 头部))
[4、MTU 对 UDP 的影响](#4、MTU 对 UDP 的影响)
[5、MTU 对 TCP 的影响:MSS 机制](#5、MTU 对 TCP 的影响:MSS 机制)
[(1)什么是 MSS?](#(1)什么是 MSS?)
[(2)MSS 协商过程](#(2)MSS 协商过程)
[(3)为什么 TCP 要避免分片?](#(3)为什么 TCP 要避免分片?)
[6、Path MTU Discovery(PMTUD)------现代最佳实践](#6、Path MTU Discovery(PMTUD)——现代最佳实践)
[7、总结对比:MTU 对各协议的影响](#7、总结对比:MTU 对各协议的影响)
[1、核心思想:分层封装 + 逐跳转发](#1、核心思想:分层封装 + 逐跳转发)
[2、详细传输流程(以主机 A → 主机 B 为例)](#2、详细传输流程(以主机 A → 主机 B 为例))
[第 1 跳:主机 A → 路由器 R1](#第 1 跳:主机 A → 路由器 R1)
[第 2 跳:路由器 R1 → 路由器 R2](#第 2 跳:路由器 R1 → 路由器 R2)
[第 3 跳:路由器 R2 → 主机 B](#第 3 跳:路由器 R2 → 主机 B)
[5、补充:NAT 对 IP 地址的影响(重要例外)](#5、补充:NAT 对 IP 地址的影响(重要例外))
[7、为什么叫"IP 网络"?](#7、为什么叫“IP 网络”?)
一、链路层解决的问题
在计算机网络的分层体系中(如OSI七层模型或TCP/IP四层模型),每一层都有其特定的功能和职责。其中,链路层 (也称数据链路层)位于网络体系结构的最底层(在TCP/IP模型中紧邻物理层之上),主要负责同一局域网(Local Area Network, LAN)内相邻节点之间的可靠数据传输。

1、网络层与传输层的角色回顾
-
网络层(IP协议) :提供的是跨网络的端到端通信能力 ,即能够将数据包从源主机路由到目标主机,即使它们位于不同的物理网络中。然而,IP协议本身是无连接且不可靠的------它不保证数据包一定送达、不保证顺序、也不处理丢包重传等问题。
-
传输层(如TCP) :为上层应用提供端到端的可靠性服务 。例如,TCP通过序列号、确认应答(ACK)、超时重传、流量控制和拥塞控制等机制,确保数据最终能按序、完整、可靠地从一个进程传送到另一个进程。因此,在IP无法保证可靠性的前提下,TCP"兜底"实现了可靠传输。
但请注意: 无论是IP还是TCP,它们都假设底层已经能够完成相邻节点之间的数据传递。也就是说,它们并不关心"如何把一个数据帧从本机发送到隔壁路由器或交换机"这一具体操作------这正是链路层要解决的核心问题。
2、链路层的核心任务
链路层解决的是 "一跳" 通信(hop-by-hop communication)的问题 ,即:如何将数据从当前主机准确、高效地传送到与其直接相连的下一跳设备(如同一局域网内的另一台主机、交换机或路由器)。
具体来说,链路层需要解决以下几个关键问题:
(1)物理地址寻址(MAC地址)
-
在局域网中,设备通过MAC地址(Media Access Control Address)进行唯一标识。
-
当IP层决定下一跳是某个本地网关(如默认网关)时,链路层需将该网关的IP地址解析为对应的MAC地址(通过ARP协议) ,然后将数据封装成以太网帧,并在帧头中填入目标MAC地址。
(2)帧的封装与解封装
-
链路层将来自网络层的IP数据包封装成数据帧(Frame),添加帧头(含源/目的MAC地址)和帧尾(如FCS校验码)。
-
接收方链路层收到帧后,进行解封装,提取出IP数据包并交给上层处理。
(3)差错检测
-
虽然链路层通常不提供自动重传机制 (这由上层如TCP负责),但它会通过循环冗余校验(CRC)等方式检测帧在传输过程中是否发生比特错误。
-
若检测到错误,接收方通常直接丢弃该帧(不通知发送方),由上层协议(如TCP)感知丢包并触发重传。
(4)介质访问控制(MAC)
-
在共享介质的局域网中(如早期的以太网或Wi-Fi),多个设备可能同时尝试发送数据,导致冲突。
-
链路层通过介质访问控制协议(如CSMA/CD用于有线以太网,CSMA/CA用于无线网络)协调各设备对信道的使用,避免或减少冲突。
(5)局域网内的拓扑支持
- 链路层协议(如以太网、PPP、Wi-Fi等)定义了不同物理网络类型下的通信规则,使得上层协议(IP)无需关心底层是光纤、双绞线还是无线电波。
3、为什么链路层不可或缺?
设想这样一个场景:你的电脑要向互联网上的某台服务器发送一个HTTP请求。
-
TCP将请求数据分割成段,并加上端口号;
-
IP协议为其添加源/目的IP地址,并通过路由表确定下一跳(通常是本地路由器);
-
但要真正把数据"送出去",必须先通过网卡将数据发给这个本地路由器------而你和路由器处于同一个局域网。
此时,IP只知道"下一跳的IP地址",但不知道"它的物理接口在哪里"。链路层通过ARP获取其MAC地址,构造以太网帧,驱动网卡将电信号/光信号发送出去。没有链路层,IP数据包就"出不了门"。
因此,链路层是连接"逻辑网络"与"物理世界"的桥梁 ,是实现端到端通信的第一公里(或最后一公里)。
4、总结:各层分工协作
| 层级 | 协议示例 | 核心功能 |
|---|---|---|
| 应用层 | HTTP、FTP、DNS | 提供用户服务 |
| 传输层 | TCP、UDP | 进程到进程通信,可靠性(TCP)或效率(UDP) |
| 网络层 | IP | 跨网络的主机到主机路由 |
| 链路层 | 以太网、Wi-Fi、PPP | 同一局域网内相邻节点间的帧传输 |
简言之:
-
IP负责"走多跳"(跨网络),
-
TCP负责"送得稳"(可靠交付),
-
链路层负责"迈出第一步"(本地一跳的准确投递)。
只有这三层协同工作,才能实现从一台主机到另一台主机的完整、可靠通信。
二、局域网技术
局域网(Local Area Network, LAN)是指在有限地理范围内(如一栋办公楼、一个校园或一个家庭)将多台计算机、服务器、打印机等设备互联起来的网络。 不同场景和历史发展阶段催生了多种局域网技术,它们在物理介质、拓扑结构、访问控制机制等方面各有特点。尽管底层实现各异,但现代互联网通过IP协议的抽象能力,成功屏蔽了这些差异,实现了异构网络的无缝互联。
1、常见的局域网技术
(1)以太网(Ethernet)
-
地位:目前应用最广泛、事实上的局域网标准。
-
特点:
-
最初由Xerox PARC于1970年代开发,后由IEEE 802.3标准规范化。
-
支持多种速率(10 Mbps → 100 Mbps → 1 Gbps → 10 Gbps 甚至更高)。
-
使用CSMA/CD(载波侦听多路访问/冲突检测)机制(在早期共享式以太网中),现代交换式以太网已基本消除冲突。
-
物理介质包括双绞线(如Cat5e/Cat6)、光纤等。
-
采用MAC地址进行设备寻址,帧格式标准化(含目的/源MAC、类型字段、数据和FCS校验)。
-
-
现状:几乎成为有线局域网的代名词,广泛应用于企业、数据中心和家庭网络。
(2)令牌环网(Token Ring)
-
背景:由IBM在1980年代主导开发,曾用于其大型机和工作站环境。
-
工作原理:
-
网络拓扑为逻辑环形(物理上可能是星型,通过多站访问单元MSAU实现逻辑环)。
-
引入一种特殊控制帧------"令牌"(Token),在网络中循环传递。
-
只有持有令牌的节点才有权发送数据;发送完成后释放令牌,供其他节点使用。
-
-
优点:避免冲突,带宽分配公平,在高负载下性能稳定。
-
缺点:实现复杂、成本高、扩展性差。
-
现状:已被以太网全面取代,基本退出历史舞台,仅具教学或历史研究价值。
(3)无线局域网(Wireless LAN, WLAN)
-
标准:基于IEEE 802.11系列协议(如802.11a/b/g/n/ac/ax,即Wi-Fi 4/5/6/7等)。
-
特点:
-
使用无线电波(2.4 GHz、5 GHz、6 GHz等频段)作为传输介质。
-
拓扑结构通常为基础设施模式 (通过接入点AP连接)或自组网模式(Ad-hoc)。
-
采用CSMA/CA(载波侦听多路访问/冲突避免)机制,因无线信道无法有效检测冲突。
-
同样使用MAC地址寻址,但帧结构比有线以太网更复杂(需包含BSSID、信号强度等信息)。
-
-
意义:
-
极大提升了移动性和部署灵活性,已成为现代网络不可或缺的组成部分。
-
虽然物理层和链路层与有线以太网不同,但在IP层以上对用户完全透明。
-
补充说明:WAN(广域网)不属于局域网范畴。WAN通常指跨城市、国家的网络(如运营商骨干网),其技术(如MPLS、SD-WAN、PPP等)与LAN有本质区别。
2、IP如何屏蔽底层局域网差异?
尽管不同局域网在物理层和链路层存在显著差异(如帧格式、地址长度、错误处理机制等),但IP协议通过"网络层抽象"实现了统一的端到端通信模型。具体体现在以下机制中:
(1)分层封装与解封装
-
当上层(如TCP)将数据交给IP层后,IP将其封装为IP数据包。
-
链路层根据当前主机所处的局域网类型(如以太网、Wi-Fi),添加对应的链路层帧头和帧尾(例如以太网帧头含MAC地址,Wi-Fi帧头含更多控制字段)。
-
接收方链路层收到帧后,剥离链路层头部,将IP包交付给网络层。
(2)路由器的"帧转换"作用
在跨网络传输过程中,数据包需经过一个或多个路由器转发。路由器的工作流程如下:
-
接收帧:从某个接口(如以太网口)收到数据帧;
-
解封装:剥离当前局域网的链路层头部,提取出IP数据包;
-
路由决策:根据IP包的目的地址查询路由表,确定下一跳出接口;
-
重新封装 :根据下一跳网络的类型(可能是Wi-Fi、PPP、光纤等),构造新的链路层帧头(如新的MAC地址或PPP头),再发送出去。
关键点 :IP数据包在整个传输过程中保持不变 (除非发生分片),而链路层帧头在每一跳都会被替换。这种"逐跳重构"的机制,使得数据可以在以太网→Wi-Fi→光纤等多种异构网络间无缝穿越。
(3)对上层透明
-
对于传输层(TCP/UDP)和应用层(HTTP、DNS等)而言,它们只看到"IP地址"和"端口号",完全无需关心底层是Wi-Fi还是千兆以太网。
-
这正是网络分层设计的核心优势:各层职责分离,底层变化不影响上层功能。
3、示例:跨网络数据传输过程
假设主机A(位于以太网)向主机B(位于Wi-Fi网络)发送数据:
-
A的TCP将数据交给IP层,生成IP包(源IP=A,目的IP=B);
-
A的链路层查询默认网关MAC地址(通过ARP),封装成以太网帧发送;
-
路由器R1收到以太网帧,剥离帧头,解析IP包;
-
R1查路由表,发现B位于其Wi-Fi接口所连网络;
-
R1通过ARP或邻居发现获取B的MAC地址(或Wi-Fi中的关联地址);
-
R1将同一IP包封装成802.11无线帧,通过Wi-Fi发送给B;
-
B的Wi-Fi驱动解封装,将IP包交给上层处理。
整个过程中,IP包内容未变,但链路层帧经历了"以太网 → 无线帧"的转换。
4、总结
| 技术 | 类型 | 是否主流 | 关键机制 |
|---|---|---|---|
| 以太网 | 有线LAN | 是 | CSMA/CD(历史)、交换式全双工、MAC寻址 |
| 令牌环网 | 有线LAN | 否 | 令牌传递、环形拓扑 |
| 无线LAN(Wi-Fi) | 无线LAN | 是 | CSMA/CA、AP接入、射频通信 |
核心思想 :局域网技术虽多样,但IP协议通过"逻辑网络层"抽象,将物理和链路层的异构性完全隔离。路由器作为"翻译者",在每一跳完成链路层帧的"本地化适配",从而实现全球互联网的互联互通。
三、以太网通信原理
1、什么是以太网?
以太网 (Ethernet)并非指某一个具体的物理网络,而是一套由 IEEE 802.3 标准 定义的局域网(LAN)技术规范。它同时涵盖了物理层 (Physical Layer)和数据链路层 (Data Link Layer)的部分功能,是目前全球应用最广泛、事实上的有线局域网标准。
以太网标准明确规定了以下关键要素:
-
物理介质:如双绞线(Cat5e、Cat6 等)、光纤;
-
拓扑结构:早期为总线型,现代多为星型(通过交换机连接);
-
传输速率:包括 10 Mbps(传统以太网)、100 Mbps(快速以太网)、1 Gbps(千兆以太网)、10 Gbps 及以上(万兆/高速以太网);
-
帧格式:定义了数据在链路层如何封装(含源/目的 MAC 地址、类型字段、数据和 CRC 校验等);
-
介质访问控制(MAC)机制:早期使用 CSMA/CD(载波侦听多路访问/冲突检测),现代全双工交换式以太网已基本不再依赖该机制。
注意 :虽然早期以太网确实要求使用双绞线或同轴电缆 ,但现代以太网也广泛支持光纤(如 1000BASE-SX/LX、10GBASE-SR/LR 等),因此"必须使用双绞线"的说法已不准确,应修正为"支持多种物理介质,常见为双绞线和光纤"。
2、传统共享式以太网的广播特性
在早期的共享式以太网(如使用集线器 Hub 的网络)中,所有主机通过同一物理信道(如同一根总线或通过 Hub 连接)进行通信。这种架构具有以下特点:
-
广播式传输 :当主机 A 发送一个以太网帧时,该帧会被广播到局域网中的所有其他主机。
-
基于 MAC 地址过滤:
-
每台主机的网卡在收到帧后,会检查帧头中的目的 MAC 地址;
-
如果该地址与本机 MAC 地址匹配(或为广播地址
FF:FF:FF:FF:FF:FF、或多播地址且本机订阅了该组),则将帧向上交付给网络层; -
否则,直接丢弃该帧,不通知上层协议。
-
举例说明:主机 A(MAC: AA:AA:AA:AA:AA:AA)向主机 B(MAC: BB:BB:BB:BB:BB:BB)发送数据。局域网中的主机 C、D、E 也会收到该帧,但它们发现目的 MAC 不是自己,于是默默丢弃。只有主机 B 会处理该数据。
这种机制意味着:在共享介质的以太网中,所有主机都能"看到"所有通信流量------这是理解网络安全、网络监听和早期局域网性能瓶颈的关键。

3、现代交换式以太网的改进
随着交换机 (Switch)取代集线器(Hub),现代以太网已不再是"所有主机共享同一信道"的广播网络,而是点对点全双工通信的智能网络:
-
交换机会学习并维护一张 MAC 地址表(也称转发表),记录每个端口连接的设备 MAC 地址;
-
当交换机收到一个帧时,它会根据目的 MAC 地址仅将帧转发到对应的端口,而非广播到所有端口;
-
因此,在正常情况下,主机 C 无法看到 A 与 B 之间的通信,大大提升了安全性与带宽效率。
重要区分:
-
Hub(集线器):物理层设备,广播所有帧 → 所有主机可见通信;
-
Switch(交换机):链路层设备,智能转发 → 通信隔离,仅目标主机接收。
因此,原文中"局域网中所有主机都能收到数据"的描述仅适用于早期共享式以太网(如使用 Hub 的环境),在现代交换式网络中已不成立。
4、混杂模式与网络抓包
尽管交换式以太网默认隔离了非目标流量,但在特定场景下,仍可捕获他人通信:
(1)混杂模式(Promiscuous Mode)
-
正常情况下,网卡只接收目的 MAC 为本机(或广播/多播)的帧;
-
当网卡被设置为混杂模式 时,它会接收所有经过其物理接口的数据帧,无论目的地址为何;
-
操作系统随后可将这些帧全部交给抓包工具(如 Wireshark、tcpdump)进行分析。
(2)网络抓包的实现前提
-
在 Hub 网络中:任何主机开启混杂模式即可抓取全网流量;
-
在 Switch 网络中:默认无法抓取他人通信,除非:
-
使用 端口镜像(Port Mirroring / SPAN)功能,让交换机复制特定流量到监控端口;
-
发起 ARP 欺骗(中间人攻击),诱使流量经过攻击者主机;
-
直接在网关或核心交换机上部署抓包设备。
-
安全启示 :正因为早期以太网的广播特性,未加密的明文协议(如 HTTP、Telnet、FTP)在局域网中极易被窃听。这也是推动 HTTPS、SSH 等加密协议普及的重要原因之一。
5、以太网帧结构简述(补充)
以太网帧的基本格式如下(IEEE 802.3):
| 字段 | 长度 | 说明 |
|---|---|---|
| 前导码(Preamble) | 7 字节 | 用于同步时钟(实际传输中存在,但通常不计入帧) |
| 帧起始定界符(SFD) | 1 字节 | 标志帧开始(10101011) |
| 目的 MAC 地址 | 6 字节 | 接收方硬件地址 |
| 源 MAC 地址 | 6 字节 | 发送方硬件地址 |
| 类型/长度(Type/Length) | 2 字节 | 标识上层协议(如 0x0800 表示 IPv4) |
| 数据(Payload) | 46--1500 字节 | 上层协议数据(如 IP 包) |
| 帧校验序列(FCS) | 4 字节 | CRC32 校验码,用于差错检测 |
最小帧长为 64 字节(含头部和 FCS),若数据不足 46 字节,需填充(Padding)。
6、总结
| 特性 | 共享式以太网(Hub) | 交换式以太网(Switch) |
|---|---|---|
| 通信方式 | 广播式 | 点对点智能转发 |
| 所有主机是否可见流量 | 是 | 否(默认) |
| 冲突域 | 整个网络为一个冲突域 | 每个端口独立冲突域 |
| 安全性 | 低 | 较高 |
| 是否支持全双工 | 半双工 | 全双工 |
核心结论 :以太网通过 MAC 地址寻址 + 帧封装 + 介质访问控制 实现局域网内主机间的通信。虽然其早期设计具有广播特性,但现代交换技术已大幅优化性能与安全性。理解以太网的通信原理,是掌握网络抓包、网络安全、故障排查等高级技能的基础。
四、以太网的介质访问控制:CSMA/CD 与碰撞处理机制
1、共享信道与冲突问题
在早期的共享式以太网(如使用同轴电缆或集线器 Hub 的网络)中,所有主机连接到同一个物理通信信道上。这意味着:
-
同一时刻只能有一台主机成功发送数据;
-
如果两台或更多主机同时发送数据 ,它们的电信号会在信道上叠加,导致信号失真 ,接收方无法正确解析------这种现象称为碰撞(Collision);
-
从操作系统或网络理论角度看,这个共享信道是一种临界资源(Critical Resource),必须通过某种协调机制来避免并发访问导致的混乱。
注意: 在现代交换式以太网 (使用交换机 Switch)中,每个端口构成独立的冲突域,且支持全双工通信,已基本消除碰撞问题 。因此,以下讨论主要适用于半双工、共享介质的早期以太网环境。
2、以太网采用的机制:CSMA/CD
以太网并未采用"先预约再发送"的严格调度方式,而是采用一种乐观并发策略 ,其核心是 CSMA/CD (Carrier Sense Multiple Access with Collision Detection),即:载波侦听多路访问 / 碰撞检测
该机制包含三个关键步骤:
(1)载波侦听(Carrier Sense)
-
主机在发送数据前,先侦听信道是否空闲(即是否有其他主机正在传输);
-
如果信道忙(检测到载波信号),则等待直到空闲。
(2)多路访问(Multiple Access)
-
所有主机平等竞争信道,没有中央控制器分配权限;
-
一旦信道空闲,任何主机都可立即尝试发送。
(3)碰撞检测(Collision Detection)
-
主机在发送数据的同时持续监听信道;
-
如果检测到电压异常(表明有其他信号叠加),即判定发生碰撞;
-
一旦检测到碰撞,立即停止发送 ,并发送一个强化碰撞信号(Jam Signal),通知所有主机"刚才发生了碰撞"。
关键注意 :以太网使用的是 "碰撞检测" (Collision Detection),不是"碰撞避免" (Collision Avoidance)。"碰撞避免"是 IEEE 802.11(Wi-Fi) 采用的机制(如 RTS/CTS、NAV 等),因为无线环境无法有效检测碰撞。
3、碰撞后的退避与重传:二进制指数退避算法
当碰撞发生后,涉事主机不会立刻重发,而是执行退避算法(Backoff Algorithm),以降低再次碰撞的概率。
以太网采用的是 二进制指数退避算法(Binary Exponential Backoff):
-
每次碰撞后,主机将重传尝试次数 k 加 1;
-
随机选择一个等待时隙数 r,其中 r∈[0,2^k−1](最大 k=10);
-
等待 r×时隙时间(通常为 512 位时间 ≈ 51.2 μs @10 Mbps)后重试;
-
若重传失败达 16 次,则放弃发送并向高层报告错误。
举例:
-
第1次碰撞 → 随机等 0 或 1 个时隙;
-
第2次碰撞 → 随机等 0~3 个时隙;
-
第3次 → 0~7 个时隙......
这种"指数级扩大等待窗口"的设计,能有效缓解网络拥塞时的反复碰撞。
4、类比说明:会议发言规则
可以将以太网的 CSMA/CD 类比为一场非正式会议:
-
每个人(主机)想发言(发送数据)前,先听一下(载波侦听);
-
如果没人说话,就开口讲(发送);
-
但如果两人同时开口(碰撞),双方立刻停下(检测到冲突);
-
然后各自心里默数一个随机秒数(退避),再尝试发言;
-
数次失败后,可能选择放弃或稍后再议。
但请注意:现实中人们会"避免"同时说话(即"碰撞避免"),而以太网是"先说再说,撞了再退"------这是本质区别。
5、以太网的重传机制定位
需要明确的是:
-
以太网的重传仅限于链路层的一跳通信(同一局域网内);
-
它不保证端到端可靠性,也不处理跨网络丢包;
-
如果帧因多次碰撞最终未能送达,链路层会丢弃该帧,由上层协议(如 TCP)负责端到端重传。
因此,以太网的重传机制是局部的、尽力而为的 ,属于链路层的差错恢复辅助手段,而非可靠传输保障。
6、现代以太网中的 CSMA/CD 状态
随着全双工交换式以太网的普及:
-
CSMA/CD 已被弃用:在全双工模式下,发送和接收使用独立信道,不可能发生碰撞;
-
IEEE 802.3 标准自千兆以太网起,默认禁用 CSMA/CD;
-
仅在半双工模式(如某些老旧设备或特殊工业场景)中仍保留支持。
实际验证:在 Linux 中可通过 ethtool eth0 查看网卡是否启用 half-duplex 和 CSMA/CD(现代网卡通常显示 Speed: 1000Mb/s, Duplex: Full)。
7、总结对比:CSMA/CD vs CSMA/CA
| 特性 | 以太网(CSMA/CD) | 无线 LAN(CSMA/CA) |
|---|---|---|
| 应用场景 | 有线局域网(早期) | 无线局域网(Wi-Fi) |
| 核心机制 | 碰撞检测 | 碰撞避免 |
| 能否检测碰撞 | 可以(通过电压变化) | 无法可靠检测(隐藏终端问题) |
| 退避策略 | 二进制指数退避(碰撞后) | 虚拟载波侦听 + 随机退避(发送前) |
| 是否需要 ACK | 否 | 是(确认帧) |
结语
以太网通过 CSMA/CD 机制,在无中心控制的前提下,实现了共享介质局域网中多主机的高效、公平通信。尽管该机制在现代高速全双工网络中已不再使用,但它奠定了分布式介质访问控制的理论基础,也是理解网络演进与协议设计思想的重要一环。
学习提示 :在面试或考试中,若被问及"以太网如何处理冲突",务必回答 "CSMA/CD(碰撞检测)",而非"碰撞避免"------这是高频易错点!!!
五、令牌环网(Token Ring Network)
1、基本概念与历史背景
令牌环网 (Token Ring)是由 IBM 在 1980 年代主导开发的一种局域网技术,后被 IEEE 标准化为 IEEE 802.5 。它曾广泛应用于 IBM 大型机和企业级网络环境,以其确定性访问机制 和高负载下的稳定性著称,但在 1990 年代后期逐渐被更高速、更低成本的以太网所取代。
尽管如今已基本退出主流应用,但其设计理念对理解介质访问控制(MAC)仍有重要教学价值。
2、拓扑结构:物理星型,逻辑环形
-
物理拓扑 :令牌环网在物理布线上通常采用星形结构 ------所有工作站通过双绞线连接到一个中心设备,称为 多站访问单元(Multistation Access Unit, MAU)。
-
逻辑拓扑 :尽管物理上呈星型,但 MAU 内部通过电子开关将各端口串接成一个闭合的逻辑环 。数据帧和令牌在逻辑环中按固定顺序依次经过每一台主机,形成"环形"传输路径。
关键点:物理连接 ≠ 逻辑通信路径。MAU 的作用类似于"智能集线器",它不广播数据,而是维持环的完整性。

3、传输介质与速率
令牌环网支持多种物理介质:
-
屏蔽双绞线(STP):最常见,抗干扰能力强;
-
无屏蔽双绞线(UTP):后期标准支持;
-
光纤:用于长距离或高可靠性场景。
标准传输速率包括:
-
4 Mbps(早期);
-
16 Mbps(增强型,主流);
-
后期还提出过 100 Mbps 的高速令牌环(HSTR),但未普及。
4、核心机制:令牌传递(Token Passing)
令牌环网的核心在于其确定性的介质访问控制机制 ------令牌传递(Token Passing)。
(1)什么是"令牌"?
-
"令牌"是一个特殊的3字节控制帧,在环中持续循环;
-
它本身不携带用户数据,仅作为发送权限的凭证;
-
令牌有两种状态:
-
空闲(Idle / Free):表示当前无人发送,任何需要发送数据的主机可"捕获"它;
-
忙(Busy):表示已被某主机占用,正在传输数据帧。
-
(2)发送流程
-
主机 A 想发送数据,监听环上是否有空闲令牌;
-
当空闲令牌到达 A 时,A 将其修改为"忙"状态 ,并在其后附加自己的数据帧;
-
数据帧随环继续传递,每台主机检查目的地址:
-
若是自己,则复制一份(但不移除帧);
-
所有主机(包括发送方)最终都会收到该帧;
-
-
当帧回到发送方 A 时,A 移除该帧 ,并重新生成一个空闲令牌放回环中。
整个过程确保:同一时刻环中最多只有一个数据帧在传输 ,因此完全避免了碰撞(Collision-free)。
5、与互斥锁的类比(深化理解)
| 操作系统中的互斥锁 | 令牌环网中的令牌 |
|---|---|
| 保护临界资源(如共享变量) | 保护共享通信信道 |
| 线程申请锁 → 进入临界区 | 主机捕获令牌 → 发送数据 |
| 锁被占用时,其他线程阻塞等待 | 无令牌时,主机只能等待 |
| 释放锁 → 其他线程可竞争 | 释放令牌 → 下一主机可发送 |
此外,令牌环网还具有公平性(Fairness):
-
由于令牌按固定顺序传递,每台主机获得发送机会的概率均等;
-
不会出现某台主机长期"饥饿"(Starvation)的情况------这是 CSMA/CD 在高负载下可能存在的问题。
6、优点与缺点
优点:
-
无碰撞:确定性访问,适合实时或高负载环境;
-
带宽可预测:最大延迟可计算,适用于工业控制等场景;
-
公平性好:避免个别节点垄断信道。
缺点:
-
实现复杂:需要专用硬件(如 MAU)和协议支持;
-
单点故障风险:若环中某台主机或链路故障,可能导致整个环中断(虽有"环路自动修复"机制,但成本高);
-
扩展性差:增加节点会延长令牌循环时间,影响响应速度;
-
成本高、速度慢:相比快速发展的以太网,性价比低。
7、与以太网的对比
| 特性 | 令牌环网(Token Ring) | 以太网(Ethernet) |
|---|---|---|
| MAC 机制 | 令牌传递(确定性) | CSMA/CD(竞争式,早期) |
| 是否有碰撞 | 无 | 有(仅限半双工共享介质) |
| 公平性 | 高 | 高负载下可能不公平 |
| 实现复杂度 | 高 | 低 |
| 主流地位 | 已淘汰 | 全球标准 |
| 典型速率 | 4/16 Mbps | 10 Mbps → 100 Gbps+ |
8、补充:现代"令牌"思想的延续
虽然传统令牌环网已消亡,但其"令牌"思想仍在某些领域延续:
-
工业控制网络(如 PROFIBUS、CAN 总线)采用主从轮询或令牌机制保证实时性;
-
分布式系统中的协调算法(如 Token Bucket 限流、分布式锁)借鉴了类似理念;
-
FDDI(光纤分布式数据接口)也采用双环令牌机制,用于骨干网(现已少见)。
结语
令牌环网代表了局域网发展史上一种强调确定性与公平性 的设计哲学。尽管因成本与性能劣势被以太网取代,但它在无冲突通信、服务质量保障(QoS)方面的思想,仍对现代网络协议设计具有启发意义。
学习建议 :在理解 CSMA/CD(以太网)与 Token Passing(令牌环)的对比中,可深入体会"竞争 vs 协作 "、"尽力而为 vs 确定性服务"这两类网络设计范式的差异。
六、以太网帧格式(Ethernet Frame Format)
以太网帧是数据链路层(MAC 子层)用于在局域网中传输数据的基本单位。其格式由 IEEE 802.3 标准 定义,具有固定头部/尾部长度 和可变载荷,支持多种上层协议的复用。
1、标准以太网帧结构(DIX Ethernet II)

现代互联网中最广泛使用的以太网帧格式是 Ethernet II(也称 DIX 帧,由 DEC、Intel、Xerox 联合提出),其结构如下:
| 字段 | 长度 | 说明 |
|---|---|---|
| 前导码(Preamble) | 7 字节 | 10101010... 交替比特,用于接收方时钟同步(物理层处理,通常不计入帧) |
| 帧起始定界符(SFD) | 1 字节 | 10101011,标志帧开始(同样常被归入物理层) |
| 目的 MAC 地址(Destination MAC) | 6 字节 | 接收方网卡的硬件地址 |
| 源 MAC 地址(Source MAC) | 6 字节 | 发送方网卡的硬件地址 |
| 类型字段(Type) | 2 字节 | 标识上层协议类型(关键!见下文) |
| 有效载荷(Payload) | 46 -- 1500 字节 | 上层协议数据(如 IP 包、ARP 请求等) |
| 帧校验序列(FCS / CRC) | 4 字节 | 32 位循环冗余校验码,用于检测传输错误 |
注意:
-
整个 MAC 帧(不含前导码和 SFD)最小为 64 字节 ,最大为 1518 字节;
-
若载荷不足 46 字节,需填充(Padding)至最小长度,以保证碰撞检测有效性(仅限半双工以太网)。
2、关键字段详解
根据上面的图,我们可以想象下面图中的关键字段在上面的图中的哪个部分:

(1)MAC 地址(硬件地址)
-
长度:48 位 (6 字节),通常表示为十六进制(如
00:1A:2B:3C:4D:5E); -
特性:
-
全球唯一(由 IEEE 分配 OUI 前缀);
-
出厂固化于网卡(也可软件修改);
-
用于局域网内设备寻址,与 IP 地址无直接绑定关系(通过 ARP 协议映射)。
-
(2)类型字段(Type Field)
该字段决定如何将有效载荷交付给上层协议,常见取值包括:
| 类型值(十六进制) | 对应协议 | 说明 |
|---|---|---|
0x0800 |
IPv4 | 最常见 |
0x0806 |
ARP | 地址解析协议 |
0x8035 |
RARP | 反向地址解析协议(已废弃) |
0x86DD |
IPv6 | |
0x8100 |
802.1Q VLAN Tag | 表示帧包含 VLAN 标签(此时实际类型字段后移) |
重要澄清 :并非只有三种值!类型字段是一个16 位标识符,可支持大量协议。只要操作系统或驱动认识该类型值,就能正确交付。
(3)帧校验序列(FCS / CRC)
-
使用 CRC-32 算法对整个帧(从目的 MAC 到载荷)计算校验码;
-
接收方重新计算 CRC 并与 FCS 比较:
-
若一致 → 帧无错,继续处理;
-
若不一致 → 丢弃帧(不通知发送方,由上层如 TCP 处理重传)。
-
纠正误区 :CRC 校验失败 ≠ 发生碰撞!
-
碰撞是多台主机同时发送导致信号叠加 ,发生在发送过程中;
-
CRC 错误可能是由噪声、干扰、硬件故障 等引起,不一定与碰撞有关。
-
现代交换式以太网中几乎无碰撞,但 CRC 错误仍可能发生。
3、帧解析与上层交付流程
当网卡接收到一个以太网帧后,操作系统按以下步骤处理:
步骤 1:检查目的 MAC 地址
-
若为本机 MAC、广播地址(
FF:FF:FF:FF:FF:FF)或多播地址(且本机订阅了该组)→ 保留帧; -
否则 → 直接丢弃(不触发任何上层处理)。
步骤 2:执行 CRC 校验
-
若校验失败 → 丢弃帧;
-
若成功 → 进入下一步。
步骤 3:根据类型字段交付上层
-
读取 2 字节 Type 字段;
-
将有效载荷部分(即 IP 包、ARP 报文等)传递给对应的上层协议模块处理。
示例:主机 A 向主机 B 发送 IP 数据报

-
A 构造以太网帧:
-
目的 MAC = B 的 MAC(通过 ARP 获取);
-
源 MAC = A 的 MAC;
-
Type =
0x0800; -
Payload(有效载荷) = IP 数据包;
-
FCS = CRC 计算结果。
-
-
帧发送到局域网;
-
B 收到帧:
-
目的 MAC 匹配 → 保留;
-
CRC 校验通过 → 提取 Payload(有效载荷);
-
Type =
0x0800→ 交给 IP 层处理。
-
-
其他主机:目的 MAC 不匹配 → 丢弃(即使 CRC 正确)。
4、MAC 帧如何分离头部、载荷与尾部?
-
头部(14 字节) :目的 MAC(6)+ 源 MAC(6)+ 类型(2)→ 固定长度;
-
尾部(4 字节) :FCS → 固定长度;
-
中间部分:即为有效载荷(46--1500 字节)。
因此,底层驱动只需:
-
从帧开头跳过 14 字节 → 得到载荷起始位置;
-
从帧末尾回退 4 字节 → 得到载荷结束位置;
-
中间内容即为上层数据。
这种固定头部+显式长度/类型字段的设计,极大简化了帧解析,是高效网络处理的基础。
5、补充:IEEE 802.3 原始帧 vs Ethernet II
早期 IEEE 802.3 标准使用 "长度字段" 而非"类型字段",需配合 LLC 子层(802.2)才能识别上层协议。但因效率低,现代互联网几乎全部采用 Ethernet II 格式(直接用 Type 字段),这也是为什么我们说"以太网帧的类型字段直接指明上层协议"。
6、总结:以太网帧的核心作用
| 功能 | 实现方式 |
|---|---|
| 本地寻址 | 源/目的 MAC 地址 |
| 多协议复用 | Type 字段标识上层协议 |
| 差错检测 | FCS(CRC-32) |
| 帧边界识别 | 固定头部 + 物理层前导码/SFD |
| 最小帧长保障 | Padding + 64 字节限制(支持 CSMA/CD) |
最终结论 :以太网帧通过标准化的结构 ,实现了局域网内高效、可靠、多协议兼容 的数据传输。它是 IP 网络得以在全球异构链路上传输的关键底层支撑。
七、认识 MAC 地址
1、什么是 MAC 地址?
MAC 地址 (Media Access Control Address),又称物理地址 或硬件地址 ,是数据链路层用于标识局域网中设备接口的唯一标识符。
-
长度:48 位(6 字节);
-
表示形式:通常以十六进制书写,每字节用冒号或连字符分隔,例如:
-
08:00:27:03:fb:19 -
08-00-27-03-FB-19
-
-
分配机制:
-
前 3 字节(24 位)为 OUI(Organizationally Unique Identifier),由 IEEE 分配给厂商;
-
后 3 字节由厂商自行分配,确保全球唯一性(理想情况下)。
-
✅ 查看方式(Linux/macOS):
输出中 ether 字段即为 MAC 地址(如 ether 08:00:27:03:fb:19)。"ether" 是 "Ethernet" 的缩写,表明该接口使用以太网链路层协议。
bash
ifconfig # 传统命令(部分系统需安装 net-tools)

bash
ip link show # 现代推荐命令

2、MAC 地址是否真的"不可修改"?
虽然 MAC 地址在网卡出厂时固化 ,但现代操作系统和网卡普遍支持 MAC 地址欺骗 (Spoofing)或 自定义 MAC:
-
虚拟机:VMware、VirtualBox、KVM 等会为虚拟网卡生成随机 MAC,可能与其他虚拟机冲突;
-
用户配置 :可通过命令临时修改(如 Linux 中
ip link set eth0 address xx:xx:xx:xx:xx:xx); -
应用场景:
-
隐私保护(如 macOS/iOS 的私有 Wi-Fi 地址);
-
绕过基于 MAC 的网络准入控制;
-
网络测试与故障排查。
-
注意 :尽管可修改,但在同一局域网内 ,若两台设备使用相同 MAC 地址,将导致通信混乱(交换机转发表冲突),因此仍需保证本地唯一性。
3、MAC 地址 vs IP 地址:本质区别与协作关系
| 特性 | MAC 地址 | IP 地址 |
|---|---|---|
| 层级 | 数据链路层(Layer 2) | 网络层(Layer 3) |
| 作用范围 | 局域网内有效(一跳通信) | 全球可达(端到端通信) |
| 是否变化 | 每跳更新(源/目的 MAC 变) | 通常不变(源/目的 IP 不变) |
| 分配方式 | 硬件固化 + 可软件覆盖 | 动态(DHCP)或静态配置 |
| 寻址目标 | 相邻节点(如下一跳路由器) | 最终目标主机 |
4、路由过程中的"双地址体系"
正如所指出的,数据包在传输过程中同时携带两套地址:
-
IP 地址 :描述端到端路径(从源主机到目标主机);
-
MAC 地址 :描述逐跳路径(从当前设备到下一跳设备)。
公交车类比(优化版):
-
IP 地址 = 你的起点站 (家)和终点站(公司)------全程不变;
-
MAC 地址 = 当前公交车的上车站 (你刚下的站)和下一站(司机要去的站)------每换一辆车(路由器)就更新一次。
实际转发过程示例:
假设主机 A(IP: 192.168.1.10, MAC: AA) → 主机 B(IP: 10.0.0.20, MAC: BB),中间经过路由器 R1 和 R2:
| 跳数 | 源 IP | 目的 IP | 源 MAC | 目的 MAC | 说明 |
|---|---|---|---|---|---|
| A → R1 | 192.168.1.10 | 10.0.0.20 | AA | R1 的 LAN 口 MAC | A 发给默认网关 |
| R1 → R2 | 192.168.1.10 | 10.0.0.20 | R1 的 WAN 口 MAC | R2 的 WAN 口 MAC | 路由器间转发 |
| R2 → B | 192.168.1.10 | 10.0.0.20 | R2 的 LAN 口 MAC | BB | 最后一跳送达 B |
关键结论 :IP 地址全程不变(除非 NAT) ,MAC 地址每跳重写。
5、关于 NAT 的重要补充
"源 IP 和目的 IP 也可能变化",这是完全正确的!
-
NAT(Network Address Translation):家庭/企业路由器常用技术;
-
**出向流量:**将私有 IP(如 192.168.1.10)替换为公网 IP;
-
**入向流量:**根据连接表还原私有 IP;
-
-
结果 :IP 地址在穿越 NAT 设备时确实会发生变化,打破了"IP 不变"的假设。
因此更严谨的说法是:
-
在没有 NAT 或隧道等中间处理的情况下,IP 地址端到端保持不变;
-
而 MAC 地址始终只在本地链路有效,必然每跳更新。
6、常见误区澄清
| 误区 | 正确理解 |
|---|---|
| "MAC 地址全球唯一,永不重复" | 厂商应保证唯一,但虚拟化、克隆、手动设置可能导致冲突 |
| "IP 地址决定谁发数据,MAC 地址不重要" | 没有正确 MAC 地址,数据连"第一跳"都出不去 |
| "路由器根据 IP 地址转发,所以不需要 MAC" | 路由器在发送帧前,必须通过 ARP 获取下一跳的 MAC 地址 |
7、总结
-
MAC 地址是链路层的"身份证" ,用于本地通信寻址;
-
IP 地址是网络层的"邮政编码" ,用于跨网络路由;
-
二者协同工作:IP 决定"去哪里",MAC 决定"怎么迈出下一步";
-
理解"IP 不变、MAC 变"是掌握网络转发机制的核心钥匙。
八、认识 MTU(Maximum Transmission Unit)
1、什么是 MTU?
MTU (Maximum Transmission Unit,最大传输单元)是指数据链路层一次能够传输的最大有效载荷 (Payload)字节数,不包括链路层帧头和帧尾 。MTU类似于快递包裹的尺寸限制。这一限制源于不同数据链路层对应的物理层特性。
-
MTU 是由底层物理网络技术决定的;
-
不同网络类型具有不同的 MTU 值;
-
以太网的标准 MTU 为 1500 字节,这是互联网中最常见的默认值。

常见网络类型的 MTU 示例:
| 网络类型 | MTU(字节) |
|---|---|
| 标准以太网 | 1500 |
| PPPoE(如家庭宽带) | 1492 |
| IEEE 802.11(Wi-Fi) | 通常 1500,但受加密开销影响可能更低 |
| FDDI | 4352 |
| Jumbo Frame(巨帧) | 9000+(需全链路支持) |
2、以太网帧的长度限制
以太网不仅规定了最大载荷 (MTU = 1500 字节),还规定了最小帧长:
-
最小有效载荷:46 字节;
-
原因 :确保在半双工以太网中,发送方能在帧完全发出前检测到碰撞(CSMA/CD 机制要求);
-
填充(Padding):若上层数据不足 46 字节(如 ARP 报文仅 28 字节),链路层会自动在数据后添加填充字节,使总载荷 ≥ 46 字节。
注意: 最小帧长限制(64 字节含头部)在全双工交换式以太网中已无实际意义,但标准仍保留以兼容旧设备。
3、MTU 对 IP 协议的影响:分片机制
当 IP 层需要发送的数据长度 超过当前出口链路的 MTU 时,必须进行 IP 分片(Fragmentation)。
由于数据链路层MTU的限制,较大的IP数据包需要进行分片处理。具体过程如下:
-
将大IP包分割为多个小包,并为每个小包添加标识标签
-
所有小包的IP协议头中16位标识(id)字段保持相同值
-
每个小包的IP协议头3位标志字段中:
-
第2位设为0,表示允许分片
-
第3位作为结束标记(1表示是最后一个包,0表示还有后续包)
-
-
接收端会按照顺序重组这些小包,还原后交给传输层
-
若任意小包丢失,重组将失败。但IP层不会自动重传数据

(1)分片发生在哪一层?
-
IP 层(网络层)负责分片与重组;
-
分片可能发生在:
-
源主机(若初始数据 > 出口 MTU);
-
中间路由器(若下一跳网络的 MTU < 当前包大小)。
-
现代趋势:
-
路由器分片已被视为不良实践(性能差、易丢包)。
-
IPv6 禁止路由器分片,仅允许源端分片;
-
IPv4 也推荐通过 Path MTU Discovery(PMTUD)避免分片。
(2)IP 分片的关键字段(IPv4 头部)
| 字段 | 长度 | 作用 |
|---|---|---|
| 标识(Identification) | 16 位 | 同一原始数据包的所有分片具有相同 ID |
| 标志(Flags) | 3 位 | 第 0 位:保留 |
| 标志(Flags) | 3 位 | 第 1 位(DF, Don't Fragment):1=禁止分片 |
| 标志(Flags) | 3 位 | 第 2 位(MF, More Fragments):1=还有后续分片,0=最后一片 |
| 标志(Flags) | 3 位 | IP分片的标志字段(Flags)用于控制和指示分片行为,其中关键位包括:MF(More Fragments)位表示后面还有更多分片,DF(Don't Fragment)位禁止分片,若置1则路由器不得对数据包分片。 |
| 片偏移(Fragment Offset) | 13 位 | 表示该分片在原始数据中的起始位置(单位:8 字节) |
(3)重组与失败处理
-
接收端 IP 层根据 ID、偏移、MF 重组原始数据;
-
只要任一分片丢失 → 重组失败 → 整个数据包作废;
-
IP 层不重传,依赖上层协议(如 TCP)感知丢包并重传。
关键影响 :分片显著增加丢包概率。例如:
-
单包丢包率 = 0.01%;
-
若分成 10 片,则整包成功概率 = (1−0.0001)/10 ≈ 99.9% → 丢包率升至 ≈ 0.1%;
-
分得越多,整体可靠性越低。
4、MTU 对 UDP 的影响
UDP 是无连接、不可靠协议,对分片极为敏感:
-
UDP 最大安全载荷(不分片):MTU−IP 头(20)−UDP 头(8)=1500−28=1472 字节
-
若应用层发送 >1472 字节的 UDP 数据 → IP 层分片;
-
任一分片丢失 → 整个 UDP 报文丢失;
-
UDP 无重传机制 → 应用层直接感知"丢包"。
-
如果其中任何一个IP数据报丢失,都会导致接收端网络层重组失败。这意味着,当UDP数据报在网络层被分片时,整体数据丢失的风险将显著增加。
建议 :UDP 应用(如 DNS、VoIP、游戏)通常将单次发送控制在 ≤1472 字节,甚至更小(如 512 字节)以避免分片。
5、MTU 对 TCP 的影响:MSS 机制
TCP 通过 MSS(Maximum Segment Size)主动规避 IP 分片:
(1)什么是 MSS?
-
MSS 表示 TCP 报文段中"数据部分"的最大长度(不含 TCP/IP 头部);
-
理想 MSS = MTU - IP 头 - TCP 头;
-
默认 TCP 头 = 20 字节(无选项);
-
因此以太网下 MSS = 1500 - 20 - 20 = 1460 字节。
-
(2)MSS 协商过程
-
在 TCP 三次握手 的 SYN 报文中,双方 通过 TCP 选项字段(Kind=2)通告自己的 MSS;
-
双方取 较小值 作为本次连接的 MSS;
-
此后,TCP 发送的数据段长度 ≤ MSS,确保 IP 层无需分片。
示例:
-
主机 A(MSS=1460) ↔ 主机 B(MSS=1452);
-
最终使用 MSS = 1452;
-
每个 TCP 段:IP 头(20) + TCP 头(20) + 数据(1452) = 1492 字节 < 1500 → 安全。
(3)为什么 TCP 要避免分片?
-
分片增加丢包概率 → 触发 TCP 重传 → 降低吞吐量;
-
重传整个大包(而非单个分片)效率低下;
-
不分片 = 更高可靠性和性能。
让我们回顾TCP协议的关键要点:
-
TCP数据报大小同样受限于MTU,其单个数据报的最大长度称为MSS(Maximum Segment Size)。
-
TCP连接建立时,通信双方会协商MSS值:
-
双方在SYN报文的TCP头部中写入各自支持的MSS值
-
通过比较后,选择较小的MSS值作为最终标准
-
MSS值记录在TCP首部的40字节变长选项中(kind=2)
-
-
理想情况下,MSS值应设置为IP层无需分片处理的最大长度,这个长度仍然受数据链路层MTU限制。
6、Path MTU Discovery(PMTUD)------现代最佳实践
为避免中间路由器分片,TCP/IP 使用 路径 MTU 发现机制:
-
源主机发送 IP 包时设置 DF=1(Don't Fragment);
-
若路径中某链路 MTU < 包大小,路由器丢弃包并返回 ICMP "Fragmentation Needed" 错误;
-
源主机收到 ICMP 后,减小 MSS 并重传;
-
最终找到整条路径的最小 MTU(即 Path MTU)。
问题 :许多防火墙会过滤 ICMP,导致 PMTUD 失败("黑洞"连接)→ 出现"能通小包、不通大包"现象。
解决方案:手动设置较小 MSS,或启用 TCP MSS Clamping(在 NAT 网关处修改 SYN 中的 MSS)。
7、总结对比:MTU 对各协议的影响
| 协议 | 是否分片敏感 | 应对机制 | 推荐最大载荷(以太网) |
|---|---|---|---|
| IP | 是 | 自身分片/重组 | --- |
| UDP | 极高 | 无内置机制 | ≤1472 字节 |
| TCP | 高(但可规避) | MSS 协商 + PMTUD | ≤1460 字节(数据部分) |
MSS和MTU的关系:


8、查看硬件地址和MTU
使用ifconfig命令可以查看IP地址、MAC地址和MTU信息。如下:
bash
ifconfig

9、结语
MTU 是连接物理网络能力 与上层协议设计的关键桥梁。理解 MTU、分片、MSS 的关系,是排查网络性能问题(如大文件传输慢、视频卡顿)、设计高可靠应用的基础。
学习建议:
-
生产环境中尽量避免 IP 分片;
-
对 UDP 应用严格控制报文大小;
-
确保 ICMP 端不可达消息不被防火墙阻断,以保障 PMTUD 正常工作。
九、数据跨网络传输的过程
1、核心思想:分层封装 + 逐跳转发
在 TCP/IP 网络中,端到端通信 (如主机 A → 主机 B)是通过多跳路由 实现的。每一跳都发生在相邻的两个节点之间 (如同一局域网内的主机与路由器),而整个过程依赖于网络层(IP)。
-
IP 层负责"全局路径规划":确定数据从源到目的的逻辑路径;
-
链路层负责"本地一跳投递":将数据从当前设备送到下一跳设备;
-
每经过一个路由器,链路层帧头(MAC 地址)都会被替换,但 IP 数据报保持不变(除非 NAT 干预)。
这正是"IP 网络"得名的原因:IP 是贯穿全程的统一抽象层,屏蔽了底层异构链路的差异。
2、详细传输流程(以主机 A → 主机 B 为例)

假设:
-
主机 A(IP: 192.168.1.10, MAC: AA)位于网络 N1;
-
主机 B(IP: 10.0.0.20, MAC: BB)位于网络 N3;
-
假设中间经过路由器 R1(连接 N1/N2)、R2(连接 N2/N3)。(多了路由器不好讲解,就讲解两个吧)
第 1 跳:主机 A → 路由器 R1
-
A 的应用层生成数据 → TCP/UDP 封装 → IP 层封装为 IP 数据报(源 IP=192.168.1.10,目的 IP=10.0.0.20);
-
A 查询路由表,发现目的 IP 不在本地网段 → 下一跳为 默认网关 R1(IP: 192.168.1.1);
-
A 通过 ARP 协议获取 R1 的 MAC 地址(假设为 RR1);
-
A 的链路层封装 以太网帧:
-
源 MAC = AA
-
目的 MAC = RR1
-
类型 = 0x0800(IPv4)
-
载荷 = 上述 IP 数据报
-
FCS = CRC 校验
-
-
帧广播到 N1 局域网;
-
只有 R1(因 MAC 匹配)接收并解封装,提取出 IP 数据报,交给其 IP 层。
第 2 跳:路由器 R1 → 路由器 R2
-
R1 的 IP 层检查目的 IP(10.0.0.20),查询路由表 → 下一跳为 R2(IP: 172.16.0.2);
-
R1 通过 ARP(或邻居缓存)获取 R2 在 N2 网段的 MAC 地址(RR2);
-
R1 重新封装以太网帧(针对 N2 网络):
-
源 MAC = R1 的 N2 接口 MAC
-
目的 MAC = RR2
-
载荷 = 原 IP 数据报(未修改!)
-
-
帧发送到 N2;
-
只有 R2 接收并向上交付 IP 数据报。
第 3 跳:路由器 R2 → 主机 B
-
R2 的 IP 层发现目的 IP(10.0.0.20)属于其直连网段 N3;
-
R2 通过 ARP 获取 B 的 MAC 地址(BB);
-
R2 封装新帧(针对 N3):
-
源 MAC = R2 的 N3 接口 MAC
-
目的 MAC = BB
-
载荷 = 原 IP 数据报
-
-
B 收到帧,MAC 匹配 → 解封装 → IP 层处理 → 交付给上层应用。
3、关键观察:地址的变化规律
| 字段 | 是否变化 | 说明 |
|---|---|---|
| 源 IP / 目的 IP | 通常不变 | 端到端标识(除非经过 NAT) |
| 源 MAC / 目的 MAC | 每跳更新 | 仅用于当前局域网内的"下一跳"寻址 |
根本原因:
-
MAC 地址是链路层本地标识 ,只在同一广播域内有效;
-
路由器作为网络层设备 ,不转发 MAC 帧,而是剥离旧帧、构造新帧。
4、类比:包裹运输系统(深化理解)
| 网络概念 | 现实类比 |
|---|---|
| IP 数据报 | 包裹本身(含收件人/发件人地址) |
| MAC 帧 | 包裹外的运输标签(写明"本段由谁送到哪") |
| 路由器 | 中转站(如快递分拨中心) |
| 链路层协议(以太网/Wi-Fi/PPP) | 运输工具(卡车、火车、无人机) |
| ARP | 查询"下一个中转站的联系电话" |
-
包裹从上海到乌鲁木齐:
-
上海 → 南京:贴"顺丰卡车"标签;
-
南京 → 郑州:撕掉旧标签,贴"高铁专列"标签;
-
郑州 → 乌鲁木齐:再换"本地配送车"标签;
-
-
包裹内容始终不变 ,但每段运输的标签不断更新。
这就是"IP 网络"的精髓:IP 是不变的"包裹",链路层是可变的"运输方式"。
5、补充:NAT 对 IP 地址的影响(重要例外)
虽然 IP 地址通常端到端不变,但在以下场景会变化:
-
NAT(网络地址转换):
-
家庭路由器将私有 IP(如 192.168.1.10)替换为公网 IP(如 203.0.113.1);
-
此时源 IP 被修改,目的 IP 返回时也被还原;
-
-
负载均衡器 / 代理服务器:也可能重写 IP 或端口。
因此更严谨的说法是:在没有 NAT、隧道、代理等中间处理的情况下,IP 地址端到端保持不变。
6、路由器的核心作用总结
-
解封装:剥离入站链路层帧头;
-
路由决策:查路由表,确定出接口和下一跳;
-
重封装:添加出站链路层帧头(新 MAC);
-
转发:将帧发送到下一跳。
路由器不关心上层协议(TCP/UDP/ICMP),只处理 IP 层及以下。
7、为什么叫"IP 网络"?
-
整个互联网以 IP 协议为统一网络层;
-
无论底层是光纤、5G、卫星、以太网还是 Wi-Fi,只要能承载 IP 数据报,就能互联;
-
IP 提供了"逻辑统一性",而链路层提供"物理多样性";
-
这种设计使得互联网具有极强的可扩展性与异构兼容性。
8、结语
数据跨网络传输的本质,是 "IP 不变,MAC 常变" 的协同过程。理解这一机制,是掌握路由、NAT、防火墙、VPN 等高级网络技术的基础。
学习动手建议:
-
使用
traceroute(Linux/macOS)或tracert(Windows)观察数据包经过的每一跳; -
用 Wireshark 抓包对比不同网段的 MAC 地址变化,直观验证本节原理。