从帧到包:深入解析链路层与局域网通信的核心机制

目录

一、链路层解决的问题

1、网络层与传输层的角色回顾

2、链路层的核心任务

(1)物理地址寻址(MAC地址)

(2)帧的封装与解封装

(3)差错检测

(4)介质访问控制(MAC)

(5)局域网内的拓扑支持

3、为什么链路层不可或缺?

4、总结:各层分工协作

二、局域网技术

1、常见的局域网技术

(1)以太网(Ethernet)

[(2)令牌环网(Token Ring)](#(2)令牌环网(Token Ring))

[(3)无线局域网(Wireless LAN, WLAN)](#(3)无线局域网(Wireless LAN, WLAN))

2、IP如何屏蔽底层局域网差异?

(1)分层封装与解封装

(2)路由器的"帧转换"作用

(3)对上层透明

3、示例:跨网络数据传输过程

4、总结

三、以太网通信原理

1、什么是以太网?

2、传统共享式以太网的广播特性

3、现代交换式以太网的改进

4、混杂模式与网络抓包

[(1)混杂模式(Promiscuous Mode)](#(1)混杂模式(Promiscuous Mode))

(2)网络抓包的实现前提

5、以太网帧结构简述(补充)

6、总结

[四、以太网的介质访问控制:CSMA/CD 与碰撞处理机制](#四、以太网的介质访问控制:CSMA/CD 与碰撞处理机制)

1、共享信道与冲突问题

2、以太网采用的机制:CSMA/CD

[(1)载波侦听(Carrier Sense)](#(1)载波侦听(Carrier Sense))

[(2)多路访问(Multiple Access)](#(2)多路访问(Multiple Access))

[(3)碰撞检测(Collision Detection)](#(3)碰撞检测(Collision Detection))

3、碰撞后的退避与重传:二进制指数退避算法

4、类比说明:会议发言规则

5、以太网的重传机制定位

[6、现代以太网中的 CSMA/CD 状态](#6、现代以太网中的 CSMA/CD 状态)

[7、总结对比:CSMA/CD vs CSMA/CA](#7、总结对比:CSMA/CD vs CSMA/CA)

结语

[五、令牌环网(Token Ring Network)](#五、令牌环网(Token Ring Network))

1、基本概念与历史背景

2、拓扑结构:物理星型,逻辑环形

3、传输介质与速率

[4、核心机制:令牌传递(Token Passing)](#4、核心机制:令牌传递(Token Passing))

(1)什么是"令牌"?

(2)发送流程

5、与互斥锁的类比(深化理解)

6、优点与缺点

7、与以太网的对比

8、补充:现代"令牌"思想的延续

结语

[六、以太网帧格式(Ethernet Frame Format)](#六、以太网帧格式(Ethernet Frame Format))

[1、标准以太网帧结构(DIX Ethernet II)](#1、标准以太网帧结构(DIX Ethernet II))

2、关键字段详解

[(1)MAC 地址(硬件地址)](#(1)MAC 地址(硬件地址))

[(2)类型字段(Type Field)](#(2)类型字段(Type Field))

[(3)帧校验序列(FCS / CRC)](#(3)帧校验序列(FCS / CRC))

3、帧解析与上层交付流程

[步骤 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)

6、总结:以太网帧的核心作用

[七、认识 MAC 地址](#七、认识 MAC 地址)

[1、什么是 MAC 地址?](#1、什么是 MAC 地址?)

[2、MAC 地址是否真的"不可修改"?](#2、MAC 地址是否真的“不可修改”?)

[3、MAC 地址 vs IP 地址:本质区别与协作关系](#3、MAC 地址 vs IP 地址:本质区别与协作关系)

4、路由过程中的"双地址体系"

公交车类比(优化版):

实际转发过程示例:

[5、关于 NAT 的重要补充](#5、关于 NAT 的重要补充)

6、常见误区澄清

7、总结

[八、认识 MTU(Maximum Transmission Unit)](#八、认识 MTU(Maximum Transmission Unit))

[1、什么是 MTU?](#1、什么是 MTU?)

2、以太网帧的长度限制

[3、MTU 对 IP 协议的影响:分片机制](#3、MTU 对 IP 协议的影响:分片机制)

(1)分片发生在哪一层?

[(2)IP 分片的关键字段(IPv4 头部)](#(2)IP 分片的关键字段(IPv4 头部))

(3)重组与失败处理

[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 对各协议的影响)

8、查看硬件地址和MTU

9、结语

九、数据跨网络传输的过程

[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)

3、关键观察:地址的变化规律

4、类比:包裹运输系统(深化理解)

[5、补充:NAT 对 IP 地址的影响(重要例外)](#5、补充:NAT 对 IP 地址的影响(重要例外))

6、路由器的核心作用总结

[7、为什么叫"IP 网络"?](#7、为什么叫“IP 网络”?)

8、结语


一、链路层解决的问题

在计算机网络的分层体系中(如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)路由器的"帧转换"作用

在跨网络传输过程中,数据包需经过一个或多个路由器转发。路由器的工作流程如下:

  1. 接收帧:从某个接口(如以太网口)收到数据帧;

  2. 解封装:剥离当前局域网的链路层头部,提取出IP数据包;

  3. 路由决策:根据IP包的目的地址查询路由表,确定下一跳出接口;

  4. 重新封装 :根据下一跳网络的类型(可能是Wi-Fi、PPP、光纤等),构造新的链路层帧头(如新的MAC地址或PPP头),再发送出去。

关键点IP数据包在整个传输过程中保持不变 (除非发生分片),而链路层帧头在每一跳都会被替换。这种"逐跳重构"的机制,使得数据可以在以太网→Wi-Fi→光纤等多种异构网络间无缝穿越。

(3)对上层透明

  • 对于传输层(TCP/UDP)和应用层(HTTP、DNS等)而言,它们只看到"IP地址"和"端口号",完全无需关心底层是Wi-Fi还是千兆以太网。

  • 这正是网络分层设计的核心优势:各层职责分离,底层变化不影响上层功能。

3、示例:跨网络数据传输过程

假设主机A(位于以太网)向主机B(位于Wi-Fi网络)发送数据:

  1. A的TCP将数据交给IP层,生成IP包(源IP=A,目的IP=B);

  2. A的链路层查询默认网关MAC地址(通过ARP),封装成以太网帧发送;

  3. 路由器R1收到以太网帧,剥离帧头,解析IP包;

  4. R1查路由表,发现B位于其Wi-Fi接口所连网络;

  5. R1通过ARP或邻居发现获取B的MAC地址(或Wi-Fi中的关联地址);

  6. R1将同一IP包封装成802.11无线帧,通过Wi-Fi发送给B;

  7. 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):

  1. 每次碰撞后,主机将重传尝试次数 k 加 1;

  2. 随机选择一个等待时隙数 r,其中 r∈[0,2^k−1](最大 k=10);

  3. 等待 r×时隙时间(通常为 512 位时间 ≈ 51.2 μs @10 Mbps)后重试;

  4. 若重传失败达 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)发送流程

  1. 主机 A 想发送数据,监听环上是否有空闲令牌

  2. 当空闲令牌到达 A 时,A 将其修改为"忙"状态 ,并在其后附加自己的数据帧

  3. 数据帧随环继续传递,每台主机检查目的地址

    • 若是自己,则复制一份(但不移除帧);

    • 所有主机(包括发送方)最终都会收到该帧;

  4. 当帧回到发送方 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 数据报

  1. A 构造以太网帧:

    • 目的 MAC = B 的 MAC(通过 ARP 获取);

    • 源 MAC = A 的 MAC;

    • Type = 0x0800

    • Payload(有效载荷) = IP 数据包;

    • FCS = CRC 计算结果。

  2. 帧发送到局域网;

  3. B 收到帧:

    • 目的 MAC 匹配 → 保留;

    • CRC 校验通过 → 提取 Payload(有效载荷);

    • Type = 0x0800 → 交给 IP 层处理。

  4. 其他主机:目的 MAC 不匹配 → 丢弃(即使 CRC 正确)。

4、MAC 帧如何分离头部、载荷与尾部?

  • 头部(14 字节) :目的 MAC(6)+ 源 MAC(6)+ 类型(2)→ 固定长度

  • 尾部(4 字节) :FCS → 固定长度

  • 中间部分:即为有效载荷(46--1500 字节)。

因此,底层驱动只需:

  1. 从帧开头跳过 14 字节 → 得到载荷起始位置;

  2. 从帧末尾回退 4 字节 → 得到载荷结束位置;

  3. 中间内容即为上层数据。

这种固定头部+显式长度/类型字段的设计,极大简化了帧解析,是高效网络处理的基础。

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数据包需要进行分片处理。具体过程如下:

  1. 将大IP包分割为多个小包,并为每个小包添加标识标签

  2. 所有小包的IP协议头中16位标识(id)字段保持相同值

  3. 每个小包的IP协议头3位标志字段中:

    • 第2位设为0,表示允许分片

    • 第3位作为结束标记(1表示是最后一个包,0表示还有后续包)

  4. 接收端会按照顺序重组这些小包,还原后交给传输层

  5. 若任意小包丢失,重组将失败。但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协议的关键要点:

  1. TCP数据报大小同样受限于MTU,其单个数据报的最大长度称为MSS(Maximum Segment Size)。

  2. TCP连接建立时,通信双方会协商MSS值:

    • 双方在SYN报文的TCP头部中写入各自支持的MSS值

    • 通过比较后,选择较小的MSS值作为最终标准

    • MSS值记录在TCP首部的40字节变长选项中(kind=2)

  3. 理想情况下,MSS值应设置为IP层无需分片处理的最大长度,这个长度仍然受数据链路层MTU限制。

6、Path MTU Discovery(PMTUD)------现代最佳实践

为避免中间路由器分片,TCP/IP 使用 路径 MTU 发现机制:

  1. 源主机发送 IP 包时设置 DF=1(Don't Fragment);

  2. 若路径中某链路 MTU < 包大小,路由器丢弃包并返回 ICMP "Fragmentation Needed" 错误;

  3. 源主机收到 ICMP 后,减小 MSS 并重传

  4. 最终找到整条路径的最小 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

  1. A 的应用层生成数据 → TCP/UDP 封装 → IP 层封装为 IP 数据报(源 IP=192.168.1.10,目的 IP=10.0.0.20);

  2. A 查询路由表,发现目的 IP 不在本地网段 → 下一跳为 默认网关 R1(IP: 192.168.1.1);

  3. A 通过 ARP 协议获取 R1 的 MAC 地址(假设为 RR1);

  4. A 的链路层封装 以太网帧

    • 源 MAC = AA

    • 目的 MAC = RR1

    • 类型 = 0x0800(IPv4)

    • 载荷 = 上述 IP 数据报

    • FCS = CRC 校验

  5. 帧广播到 N1 局域网;

  6. 只有 R1(因 MAC 匹配)接收并解封装,提取出 IP 数据报,交给其 IP 层。

第 2 跳:路由器 R1 → 路由器 R2

  1. R1 的 IP 层检查目的 IP(10.0.0.20),查询路由表 → 下一跳为 R2(IP: 172.16.0.2);

  2. R1 通过 ARP(或邻居缓存)获取 R2 在 N2 网段的 MAC 地址(RR2);

  3. R1 重新封装以太网帧(针对 N2 网络):

    • 源 MAC = R1 的 N2 接口 MAC

    • 目的 MAC = RR2

    • 载荷 = 原 IP 数据报(未修改!)

  4. 帧发送到 N2;

  5. 只有 R2 接收并向上交付 IP 数据报。

第 3 跳:路由器 R2 → 主机 B

  1. R2 的 IP 层发现目的 IP(10.0.0.20)属于其直连网段 N3;

  2. R2 通过 ARP 获取 B 的 MAC 地址(BB);

  3. R2 封装新帧(针对 N3):

    • 源 MAC = R2 的 N3 接口 MAC

    • 目的 MAC = BB

    • 载荷 = 原 IP 数据报

  4. 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、路由器的核心作用总结

  1. 解封装:剥离入站链路层帧头;

  2. 路由决策:查路由表,确定出接口和下一跳;

  3. 重封装:添加出站链路层帧头(新 MAC);

  4. 转发:将帧发送到下一跳。

路由器不关心上层协议(TCP/UDP/ICMP),只处理 IP 层及以下。

7、为什么叫"IP 网络"?

  • 整个互联网以 IP 协议为统一网络层

  • 无论底层是光纤、5G、卫星、以太网还是 Wi-Fi,只要能承载 IP 数据报,就能互联;

  • IP 提供了"逻辑统一性",而链路层提供"物理多样性";

  • 这种设计使得互联网具有极强的可扩展性与异构兼容性

8、结语

数据跨网络传输的本质,是 "IP 不变,MAC 常变" 的协同过程。理解这一机制,是掌握路由、NAT、防火墙、VPN 等高级网络技术的基础。

学习动手建议

  • 使用 traceroute(Linux/macOS)或 tracert(Windows)观察数据包经过的每一跳;

  • 用 Wireshark 抓包对比不同网段的 MAC 地址变化,直观验证本节原理。

相关推荐
googleccsdn16 小时前
ENSP Pro Lab笔记:配置BGP EVPN VXLAN双栈(1)
网络·笔记
天空属于哈夫克316 小时前
基于企业微信二次开发的外部群主动推送服务架构
网络·架构·企业微信
rfidunion16 小时前
ubuntu下使用qemu模拟ARM(一)-------安装samba服务器
服务器·arm开发·ubuntu
科技块儿16 小时前
金融级IP离线库深度测评:IP数据云 vs IPnews vs MaxMind
网络协议·tcp/ip·金融
回忆是昨天里的海16 小时前
dockerfile-镜像分层机制
linux·运维·服务器
翼龙云_cloud16 小时前
阿里云渠道商:阿里云弹性伸缩有哪几种
服务器·阿里云·云计算
双层吉士憨包17 小时前
如何安全访问 Kickass Torrents:代理选择、设置与最佳实践(2026)
运维·服务器
爱宇阳17 小时前
Windows 通过 SSH 下载服务器目录并完整上传到指定服务器目录(scp / rsync 实战教程)
服务器·windows·ssh
hanyi_qwe17 小时前
K8S网络和基本命令 【 K8S (二)】
网络·容器·kubernetes