
🎬 个人主页 :艾莉丝努力练剑
❄专栏传送门 :《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》
《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》
⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平
🎬 艾莉丝的简介:

文章目录
- 前言
- [1 ~> IP:网段划分](#1 ~> IP:网段划分)
-
- [1.1 ~> IP 地址基础与网段划分](#1.1 ~> IP 地址基础与网段划分)
-
- [1.1.1 ~> IP 地址的核心构成](#1.1.1 ~> IP 地址的核心构成)
- [1.1.2 ~> 网段划分的核心目的(重点理解)](#1.1.2 ~> 网段划分的核心目的(重点理解))
- [1.1.3 ~> 网段划分的故事类比(辅助理解)](#1.1.3 ~> 网段划分的故事类比(辅助理解))
- [1.1.4 ~> 同一网段的核心规则](#1.1.4 ~> 同一网段的核心规则)
- [1.1.5 为什么要进行网段划分 && 补充知识的知识图谱](#1.1.5 为什么要进行网段划分 && 补充知识的知识图谱)
- [1.2 ~> 网络层核心设备:路由器](#1.2 ~> 网络层核心设备:路由器)
-
- [1.2.1 ~> 路由器的工作层级与核心功能](#1.2.1 ~> 路由器的工作层级与核心功能)
- [1.2.2 ~> 路由器的 IP 配置规则](#1.2.2 ~> 路由器的 IP 配置规则)
- [1.2.3 ~> 路由器与光猫的区别](#1.2.3 ~> 路由器与光猫的区别)
- [1.3 ~> IP 地址自动分配:DHCP 协议](#1.3 ~> IP 地址自动分配:DHCP 协议)
-
- [1.3.1 ~> DHCP 的作用与应用场景](#1.3.1 ~> DHCP 的作用与应用场景)
- [1.3.2 ~> DHCP 的工作层级与传输协议](#1.3.2 ~> DHCP 的工作层级与传输协议)
- [1.3.3 ~> DHCP 的局限性](#1.3.3 ~> DHCP 的局限性)
- [1.4 ~> IP 地址早期划分:分类划分法](#1.4 ~> IP 地址早期划分:分类划分法)
-
- [1.4.1 ~> 分类划分法的背景](#1.4.1 ~> 分类划分法的背景)
- [1.4.2 ~> 五类 IP 地址的划分规则](#1.4.2 ~> 五类 IP 地址的划分规则)
- [1.4.3 ~> 分类划分法的核心缺陷](#1.4.3 ~> 分类划分法的核心缺陷)
- [1.5 ~> 现代网段划分:CIDR 无类别域间路由](#1.5 ~> 现代网段划分:CIDR 无类别域间路由)
-
- [1.5.1 ~> CIDR 的核心:子网掩码](#1.5.1 ~> CIDR 的核心:子网掩码)
- [1.5.2 ~> 网络号的计算方法](#1.5.2 ~> 网络号的计算方法)
- [1.5.3 ~> 子网掩码的核心意义](#1.5.3 ~> 子网掩码的核心意义)
- [1.5.4 ~> 网段划分实例计算](#1.5.4 ~> 网段划分实例计算)
- [1.5.5 ~> 主机号的特殊规则](#1.5.5 ~> 主机号的特殊规则)
- [1.5.6 ~> 真机网段查看实操(原 PDF 真机命令内容)](#1.5.6 ~> 真机网段查看实操(原 PDF 真机命令内容))
- [1.6 ~> 特殊 IP 地址详解](#1.6 ~> 特殊 IP 地址详解)
-
- [1.6.1 ~> 网络号地址](#1.6.1 ~> 网络号地址)
- [1.6.2 ~> 广播地址](#1.6.2 ~> 广播地址)
- [1.6.3 ~> 本地环回地址](#1.6.3 ~> 本地环回地址)
- [1.7 ~> IPv4 地址数量限制与解决方案](#1.7 ~> IPv4 地址数量限制与解决方案)
-
- [1.7.1 ~> IPv4 地址的总量问题](#1.7.1 ~> IPv4 地址的总量问题)
- [1.7.2 ~> 地址不足的核心解决方案](#1.7.2 ~> 地址不足的核心解决方案)
- [1.8 ~> 私有 IP 地址与公网 IP 地址](#1.8 ~> 私有 IP 地址与公网 IP 地址)
-
- [1.8.1 ~> 私有 IP 地址规范(RFC1918+RFC6598)](#1.8.1 ~> 私有 IP 地址规范(RFC1918+RFC6598))
- [1.8.2 ~> 私有 IP 与公网 IP 的核心区别](#1.8.2 ~> 私有 IP 与公网 IP 的核心区别)
- [1.9 ~> 网络运营商(ISP)与网络架构](#1.9 ~> 网络运营商(ISP)与网络架构)
-
- [1.9.1 ~> 运营商的核心作用](#1.9.1 ~> 运营商的核心作用)
- [1.9.2 ~> "九通一平" 概念](#1.9.2 ~> "九通一平" 概念)
- [1.9.3 ~> 家用路由器与企业级路由器的区别](#1.9.3 ~> 家用路由器与企业级路由器的区别)
- [1.9.4 ~> 路由器的 LAN 口与 WAN 口 IP](#1.9.4 ~> 路由器的 LAN 口与 WAN 口 IP)
- [1.9.5 ~> 多级网络架构](#1.9.5 ~> 多级网络架构)
- [1.10 ~> 核心技术:NAT 网络地址转换](#1.10 ~> 核心技术:NAT 网络地址转换)
-
- [1.10.1 ~> NAT 的全称与核心作用](#1.10.1 ~> NAT 的全称与核心作用)
- [1.10.2 ~> NAPT(网络地址端口转换)原理](#1.10.2 ~> NAPT(网络地址端口转换)原理)
- [1.10.3 ~> 多级 NAT(运营商级 CGN)](#1.10.3 ~> 多级 NAT(运营商级 CGN))
- [1.10.4 ~> 运营商 NAT 的特性](#1.10.4 ~> 运营商 NAT 的特性)
- [1.10.5 ~> NAT 技术的三大核心价值](#1.10.5 ~> NAT 技术的三大核心价值)
- [1.10.6 ~> 报文从内网到公网的完整转发流程](#1.10.6 ~> 报文从内网到公网的完整转发流程)
- [1.11 ~> IP 报头格式与源代码体现](#1.11 ~> IP 报头格式与源代码体现)
-
- [1.11.1 ~> IP 报头的字段构成](#1.11.1 ~> IP 报头的字段构成)
- [1.11.2 ~> Linux 内核中 iphdr 结构体的完整定义](#1.11.2 ~> Linux 内核中 iphdr 结构体的完整定义)
- [1.12 ~> 课程安排与学习建议](#1.12 ~> 课程安排与学习建议)
-
- [1.12.1 ~> 后续课程安排](#1.12.1 ~> 后续课程安排)
- [1.12.2 ~> 复习期间的学习重点建议](#1.12.2 ~> 复习期间的学习重点建议)
- [1.12.3 ~> 关于 AI 辅助项目学习方法](#1.12.3 ~> 关于 AI 辅助项目学习方法)
- [2 ~> 核心总结](#2 ~> 核心总结)
-
- [2.1 完整逻辑链条](#2.1 完整逻辑链条)
- [**2.2 核心重点汇总**](#2.2 核心重点汇总)
- 结尾

前言
一、思维导图

二、导入语
本文是网络层 IPv4 协议的完整进阶学习笔记,严格还原原 PDF 的全部内容,从 IP 地址的本质构成出发,深入讲解网段划分的底层逻辑、路由器的工作原理、DHCP 自动分配机制、IP 地址分类的演进、CIDR 与子网掩码的计算、私有 / 公网 IP 的区别、运营商网络架构,以及解决 IPv4 地址枯竭的核心技术 NAT 的完整工作流程。本文不仅包含理论知识,还加入了大量实际案例、真机命令实操、C 语言代码实现和学习建议,形成了 "概念→原理→计算→实操→架构" 的完整逻辑链条,是复习网络层协议、构建完整网络知识体系的核心资料,能帮你快速唤醒课堂学习记忆,彻底搞懂 IP 协议的底层运行机制。
1 ~> IP:网段划分

1.1 ~> IP 地址基础与网段划分
1.1.1 ~> IP 地址的核心构成
IP 地址是一个 32 位的正整数,被划分为网络号 和主机号两部分,二者组合构成一个子网(也称为同一网段或局域网):
- 网络号:保证相互连接的两个网段具有不同的标识,不同网段的网络号必须不同;
- 主机号:同一网段内,主机之间具有相同的网络号,但必须有不同的主机号。
IP 地址的标准 CIDR 表示形式为192.168.128.10/24,其中/24表示从头数到第 24 位为止属于网络标识,剩余的 8 位为主机标识。
1.1.2 ~> 网段划分的核心目的(重点理解)
网段划分是理解 IP 协议的第一个关键节点,其核心目的不是为了节省 IP 地址 ,而是为了快速筛定目标网段,大幅提高路由查找效率。
路由的本质是查找,而查找的本质是排除。如果没有网段划分,路由器需要在全网 43 亿个 IP 中逐个查找目标主机,效率极低。划分子网后,路由器只需根据网络号批量排除非目标网段,一次排除整个子网的所有主机,查找效率呈指数级提升。
1.1.3 ~> 网段划分的故事类比(辅助理解)
可以将整个互联网类比为一所学校:
- 每个学院相当于一个子网,学院号就是网络号;
- 每个学生的学号后几位就是主机号;
- 学生会主席相当于路由器,负责跨学院传递消息。
当你捡到一个学号为06321的学生证时,你不需要认识全校所有学生,只需知道06是机械学院的院号,直接把消息交给机械学院的学生会主席即可。这就是网段划分的核心逻辑:只关心网络号,不关心具体主机号,通过批量排除提高效率。
1.1.4 ~> 同一网段的核心规则
- 同一网段内所有主机的网络号完全相同;
- 同一网段内所有主机的主机号必须唯一;
- 不同网段的网络号必须配置不同的值;
- 两个不同网段的主机通信,必须通过路由器转发。
补充主机网段判别核心逻辑 :主机收到目标 IP 后,将本机 IP & 本机配置的子网掩码 算出本机网络号,再用目的 IP & 本机子网掩码算出目标网络号;两个网络号一致则同网段,数据包内网直接转发;不一致则判定跨网段,报文交给网关路由器转发。
1.1.5 为什么要进行网段划分 && 补充知识的知识图谱

1.2 ~> 网络层核心设备:路由器
1.2.1 ~> 路由器的工作层级与核心功能
- 工作层级 :当代路由器主要工作在网络层,同时已经延伸到应用层,可以部署 HTTP 服务(如路由器的管理界面);
- 核心功能 :构建子网,是家庭或局域网联网的第一台设备。没有路由器,就没有能够上网的 IP 地址,所有局域网 IP 都是由路由器分配的。
1.2.2 ~> 路由器的 IP 配置规则
- 路由器本身也是网络主机,必须配置 IP 地址;
- 连接两个不同子网的路由器,需要配置两个不同网段的 IP 地址;
- 路由器会优先为自己分配 IP 地址,主机号固定为
1(例如192.168.128.1/24)。
1.2.3 ~> 路由器与光猫的区别
- 光猫(调制解调器):负责将光纤中的光信号转换为电信号,是物理层设备;
- 路由器:负责构建子网、分配 IP 地址、跨网段转发报文,是网络层设备。
1.3 ~> IP 地址自动分配:DHCP 协议
1.3.1 ~> DHCP 的作用与应用场景
手动管理子网内的 IP 地址非常繁琐,DHCP(动态主机配置协议)能够自动为子网内新增的主机节点分配 IP 地址、子网掩码和默认网关,避免了手动配置的不便。
常见应用场景:
- 家庭无线路由器(内置 DHCP 服务器功能);
- 企业和学校内部网络;
- 公共场所的 Wi-Fi 热点。
典型流程 :当你把手机连上家里的 Wi-Fi 时,路由器作为 DHCP 服务器会自动给你的手机分配 IP 地址(如192.168.1.101)、子网掩码(255.255.255.0)和网关(192.168.1.1),然后你就能正常上网了。
1.3.2 ~> DHCP 的工作层级与传输协议
- 协议层级 :严格来说 DHCP 横跨应用层和传输层,但标准归类为应用层协议,因为它负责为操作系统提供网络配置服务;
- 依赖协议 :使用UDP 协议传输报文,而不是 TCP;
补充端口细节:DHCP 固定使用 UDP,客户端端口 68,DHCP 服务器端口 67,客户端无 IP 依靠广播收发报文。
- 特殊性:客户端在还没有 IP 地址时就需要工作,因此采用了特殊的广播机制,服务器和客户端都通过 UDP 的特定端口通信。
1.3.3 ~> DHCP 的局限性
- 静态 IP 需求:服务器、网络打印机等需要固定 IP 的设备,建议手动设置静态 IP,或者在 DHCP 服务器上设置 "地址保留",让特定设备每次都获得同一个 IP;
- 安全风险:DHCP 本身不加密,在公共 Wi-Fi 中容易遭遇 "DHCP 欺诈",攻击者会发送恶意的 DHCP 响应,给设备分配恶意的网关或 DNS 服务器,从而劫持流量。大型网络通常会部署 DHCP Snooping 功能来防护这种攻击。
1.4 ~> IP 地址早期划分:分类划分法
1.4.1 ~> 分类划分法的背景
IP 地址是有限的宝贵资源,早期为了满足不同规模国家和组织的需求,提出了分类划分法,将所有 IP 地址分为 A、B、C、D、E 五类。
1.4.2 ~> 五类 IP 地址的划分规则
| 类别 | 首位标识 | 网络号位数 | 主机号位数 | 地址范围 | 用途 |
|---|---|---|---|---|---|
| A 类 | 0 | 7 位 | 24 位 | <0.0.0.0> ~ <127.255.255.255> | 大型网络(国家、大型企业),<127.0.0.0/8> 整段预留环回,禁止分配组网 |
| B 类 | 10 | 14 位 | 16 位 | <128.0.0.0> ~ <191.255.255.255> | 中型网络(高校、中型企业) |
| C 类 | 110 | 21 位 | 8 位 | <192.0.0.0> ~ <223.255.255.255> | 小型网络(家庭、小型办公室) |
| D 类 | 1110 | - | 多播组号 | <224.0.0.0> ~ <239.255.255.255> | 多播通信 |
| E 类 | 1111 | - | 保留 | <240.0.0.0> ~ <247.255.255.255> | 备用 |
1.4.3 ~> 分类划分法的核心缺陷
这种划分方式粒度简单粗暴,导致 IP 资源严重浪费:
- A 类地址的主机号有 24 位,理论上一个子网可以容纳 1600 多万台主机,实际中几乎没有这样的网络,大量地址被闲置;
- 大多数组织都申请 B 类网络地址,导致 B 类地址很快就分配完了;
- 无法根据实际需求灵活划分子网,地址利用率极低。
1.5 ~> 现代网段划分:CIDR 无类别域间路由
1.5.1 ~> CIDR 的核心:子网掩码
为了解决分类划分法的缺陷,提出了 CIDR(无类别域间路由)技术,其核心是引入了子网掩码的概念。
- 子网掩码定义:一个 32 位的正整数,通常用一串 "0" 来结尾;
- 核心优势:网络号和主机号的划分与 IP 地址是 A 类、B 类还是 C 类无关,可以根据实际需求灵活划分网段;
- 兼容性:CIDR 技术与旧的分类划分法完全兼容,不会影响原有网络的运行。
补充 A 类网段拆分案例:原生 A 类网段掩码
255.0.0.0(/8),若修改子网掩码为255.255.0.0(/16),从原主机位借 8 位充当子网位,总共拆分为KaTeX parse error: Expected group after '^' at position 2: 2^̲个子网,剩余 16 位作为主机位,每个子网容纳KaTeX parse error: Expected '}', got 'EOF' at end of input: 2^{16个主机,常用于国家级 A 类地址按省份拆分子网。
1.5.2 ~> 网络号的计算方法
将IP 地址和子网掩码进行 "按位与" 操作,得到的结果就是网络号。
示例 : IP 地址:140.252.20.68(二进制:10001100.11111100.00010100.01000100) 子网掩码:255.255.255.0(二进制:11111111.11111111.11111111.00000000) 按位与结果:140.252.20.0,即网络号。
1.5.3 ~> 子网掩码的核心意义
子网掩码的存在,使得我们可以更加充分、更细粒度地使用分类网段。例如,一个 A 类地址可以按照省、直辖市拆分成多个更小的子网,大大提高了 IP 地址的利用率。
1.5.4 ~> 网段划分实例计算
示例 1:/24 网段(子网掩码 <255.255.255.0>)
- IP 地址:
140.252.20.68 - 网络号:
140.252.20.0 - 地址范围:
140.252.20.0 ~ 140.252.20.255 - 可用主机数:
2^8 - 2 = 254(减去全 0 的网络号和全 1 的广播地址)
示例 2:/28 网段(子网掩码 <255.255.255.240>)
- IP 地址:
140.252.20.68 - 子网掩码二进制:
11111111.11111111.11111111.11110000 - 按位与结果:
140.252.20.64(二进制:01000000) - 地址范围:
140.252.20.64 ~ 140.252.20.79 - 可用主机数:
2^4 - 2 = 14
1.5.5 ~> 主机号的特殊规则
- 主机号全 0:代表网络号,不可分配给主机;
- 主机号全 1:代表广播地址,用于向同一链路中的所有主机发送数据包,不可分配给主机。
1.5.6 ~> 真机网段查看实操(原 PDF 真机命令内容)
1.Linux 系统 ifconfig 查看: 腾讯云服务器 eth0:inet192.168.202.164 netmask255.255.0.0 broadcast192.168.255.255; 本地虚拟机 eth0:inet 192.168.100.239 netmask255.255.255.0 broadcast192.168.100.255; lo 环回网卡统一:inet 127.0.0.1 netmask 255.0.0.0。 2.Windows cmd ipconfig 查看:以太网适配器可查看 IPv4 地址、子网掩码、默认网关,家用环境大多为 192.168.x.x/24。
1.6 ~> 特殊 IP 地址详解
1.6.1 ~> 网络号地址
将 IP 地址中的主机地址全部设为 0,就成为了网络号,代表整个局域网。例如192.168.128.0/24代表192.168.128这个网段。
1.6.2 ~> 广播地址
将 IP 地址中的主机地址全部设为 1,就成为了广播地址。例如192.168.128.255/24是192.168.128网段的广播地址,向这个地址发送的数据包会被该网段内的所有主机接收。
1.6.3 ~> 本地环回地址
127.*段的 IP 地址用于本机环回测试,最常用的是127.0.0.1。
环回网卡工作原理 :当你向127.0.0.1发送数据时,数据不会经过物理网卡,而是直接在本机的 TCP/IP 协议栈内部完成收发。这使得我们可以在没有网络连接的情况下测试本机的网络程序。
1.7 ~> IPv4 地址数量限制与解决方案
1.7.1 ~> IPv4 地址的总量问题
IPv4 地址是一个 4 字节 32 位的正整数,理论上一共有2^32 ≈ 43亿个地址。但由于以下原因,实际可用的地址远少于 43 亿:
- 大量特殊 IP 地址(网络号、广播地址、环回地址等)不能分配给主机;
- 每个网卡都需要配置一个或多个 IP 地址,而不是每台主机一个。
随着互联网的飞速发展,入网设备的数量早已超过了 43 亿,IPv4 地址枯竭成为了一个严重的问题。
1.7.2 ~> 地址不足的核心解决方案
- 动态分配 IP 地址:只给接入网络的设备分配 IP 地址,同一个 MAC 地址的设备每次接入网络得到的 IP 地址可能不同。这种方式在局域网中应用广泛,但在广域网中应用有限;
- NAT 技术:目前的主流解决方案,通过网络地址转换实现内网设备共享公网 IP 上网;
- IPv6:使用 16 字节 128 位来表示一个 IP 地址,地址空间几乎无限。但 IPv6 与 IPv4 是互不相干的两个协议,彼此不兼容,目前还没有全面普及。
1.8 ~> 私有 IP 地址与公网 IP 地址
1.8.1 ~> 私有 IP 地址规范(RFC1918+RFC6598)
如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连接到 Internet,理论上可以使用任意的 IP 地址。但 RFC1918 规定了常规局域网私有 IP 地址段:
10.0.0.0 ~ 10.255.255.255:前 8 位是网络号,共 16,777,216 个地址;172.16.0.0 ~ 172.31.255.255:前 12 位是网络号,共 1,048,576 个地址;192.168.0.0 ~ 192.168.255.255:前 16 位是网络号,共 65,536 个地址。
补充运营商专属私网段:RFC6598 规定
100.64.0.0/10,用于运营商 CGN 大内网,仅运营商内部使用,无法直接访问公网。
1.8.2 ~> 私有 IP 与公网 IP 的核心区别
- 私有 IP :只能在局域网内部使用,不能出现在公网中。不同局域网的私有 IP 可以重复;
- 公网 IP:全球唯一,用于公网通信,由运营商分配。只有公网 IP 才能标识互联网上的唯一一台主机。
常见误区纠正 :以前我们说 "IP 地址标识一台主机",这个说法不准确。准确的说法是:公网 IP 能够标识网络当中唯一一台主机,而私有 IP 只能标识局域网内的一台主机。
1.9 ~> 网络运营商(ISP)与网络架构

1.9.1 ~> 运营商的核心作用
我国的主要运营商是中国移动、中国联通和中国电信,它们的核心作用是:
- 搭建公网骨干网,负责光纤、基站等基础设施建设;
- 提供互联网接入服务,是内网接入公网的唯一通道;
- 进行流量管控、欠费管理和网络内容审查。
补充欠费断网原理:用户欠费后,访问外网的报文在运营商骨干链路处被直接丢弃;各类网络管控策略部署在运营商骨干内网,用户物理链路必经运营商线路,无法绕开运营商实现直连公网。
1.9.2 ~> "九通一平" 概念
"九通一平" 是中国城市规划和产业园区开发中的经典概念,指一个区域为吸引投资而必须具备的基础设施标准:
- 九通:道路、供水、排水、供电、供气、供热、通信、有线电视、宽带网络;
- 一平:土地平整。
其中最重要的就是 "通信",也就是我们常说的 "光纤入户"。
1.9.3 ~> 家用路由器与企业级路由器的区别
| 对比维度 | 家用路由器 | 企业级路由器 |
|---|---|---|
| 设计目标 | 满足家庭日常上网,追求易用和性价比 | 7×24 小时不间断运行,追求极致稳定、安全和高效 |
| 带机量 | 通常支持 20-50 台设备,超过容易卡顿或掉线 | 单 AP 即可支持 100 台以上,整网可轻松承载数百上千终端 |
| 硬件性能 | 芯片和内存配置较低,满足基础数据处理 | 采用高性能 CPU、大容量内存,散热设计更强,处理能力是家用级的几十上百倍 |
| 功能特性 | 基本的路由、DHCP、NAT 功能 | 支持 VPN、防火墙、流量控制、负载均衡等高级功能 |
1.9.4 ~> 路由器的 LAN 口与 WAN 口 IP
路由器有两种类型的 IP 地址:
- LAN 口 IP :也叫子网 IP,是路由器对内的 IP 地址,用于连接家庭或企业内网设备。例如
192.168.1.1就是常见的 LAN 口 IP; - WAN 口 IP:是路由器对外的 IP 地址,用于连接运营商的网络。WAN 口 IP 可能是公网 IP,也可能是运营商分配的私有 IP(10./100.64./172 段)。
1.9.5 ~> 多级网络架构
实际的网络是一个多级嵌套的结构:
- 你的手机和电脑连接到家用路由器,组成家庭子网;
- 家用路由器连接到运营商的路由器,组成运营商子网;
- 运营商的路由器连接到公网骨干网。
这就是为什么你访问抖音服务器时,报文需要先经过家用路由器,再经过运营商的路由器,最后才能到达公网。
1.10 ~> 核心技术:NAT 网络地址转换
1.10.1 ~> NAT 的全称与核心作用
NAT 的全称是Network Address Translation(网络地址转换) ,它的核心作用是解决私有 IP 无法出现在公网的问题,实现内网设备共享公网 IP 上网。
1.10.2 ~> NAPT(网络地址端口转换)原理
单单把源 IP 替换成路由器的 WAN 口 IP 是不够的,因为如果内网有两台电脑同时向公网发起请求,当公网服务器回包时,路由器无法分辨这个包该给哪台电脑。因此实际使用的是 NAPT(网络地址端口转换)技术:
- 转换规则:路由器不仅会把内网源 IP 替换成自己的 WAN 口 IP,还会修改源端口号;
- 映射表:路由器会在内存中维护一张 NAT 转换表,记录 "内网 IP: 端口" 与 "公网 IP: 端口" 的对应关系;
- 回包转发:当公网服务器回包给 "公网 IP: 端口" 时,路由器查表找到对应的内网 IP 和端口,把目的 IP 和端口改回去,精准转发给目标设备。
示例:
- PC1:
192.168.1.2:8080→ 路由器转换为210.21.21.21:10001 - PC2:
192.168.1.3:8080→ 路由器转换为210.21.21.21:10002 - 回包给
210.21.21.21:10001时,路由器转发给192.168.1.2:8080 - 回包给
210.21.21.21:10002时,路由器转发给192.168.1.3:8080
1.10.3 ~> 多级 NAT(运营商级 CGN)
在实际网络中,通常存在多级 NAT:
- 家用路由器 NAT:将家庭内网的私有 IP 转换为运营商分配的 WAN 口 IP(通常也是 10 段 / 100.64 段私有 IP);
- 运营商 CGN(运营商级 NAT):当报文到达运营商的骨干网出口路由器时,运营商会再次执行 NAT 转换,将私网 WAN 口 IP 转换为真实的公网 IP。
1.10.4 ~> 运营商 NAT 的特性
- 端口块分配:运营商会给每个宽带账号分配一个端口块(例如 1000 个端口),如果你的设备并发连接数超过了端口块的大小,后续的连接会被直接丢弃;
- 日志留存:运营商会强制记录 NAT 转换日志,包括 "时间、公网 IP: 端口、宽带账号、私网 IP" 等信息。这是为了合规,方便在出现网络安全事件时反向追查具体用户。
1.10.5 ~> NAT 技术的三大核心价值
- 实现了 "1 到 N" 的 IPv4 地址复用:一个公网 IP 可以同时带着几千上万台内网设备上网,彻底缓解了 IPv4 地址枯竭的问题;
- 实现了内网拓扑的 "隐藏" 与天然的安全隔离:公网上的设备无法主动访问内网设备,因为当一个外网数据包到达路由器时,路由器查不到对应的 NAT 映射记录,会直接把包丢弃;
- 实现了灵活的局域网内部业务变动:内网设备的 IP 地址或网络拓扑发生变化时,只要出口路由器的公网 IP 没变,外部互联网完全无感知。
1.10.6 ~> 报文从内网到公网的完整转发流程
以访问抖音服务器为例:
- 你的手机(
192.168.1.201)向抖音服务器(122.77.241.3)发送请求报文,源 IP 是192.168.1.201,目的 IP 是122.77.241.3; - 家用路由器收到报文后,执行 NAT 转换,将源 IP 改为自己的 WAN 口 IP(
10.1.1.2),并修改源端口号,记录 NAT 映射表; - 运营商路由器收到报文后,执行二次 NAT 转换,将源 IP 改为公网 IP(
122.77.241.4),再次修改源端口号,记录运营商级 NAT 映射表; - 报文以公网 IP
122.77.241.4的身份到达抖音服务器; - 抖音服务器回包,源 IP 是
122.77.241.3,目的 IP 是122.77.241.4; - 运营商路由器收到回包后,查表找到对应的私网 IP 和端口,将目的 IP 改为
10.1.1.2,转发给家用路由器; - 家用路由器收到回包后,查表找到对应的内网 IP 和端口,将目的 IP 改为
192.168.1.201,转发给你的手机。
1.11 ~> IP 报头格式与源代码体现
1.11.1 ~> IP 报头的字段构成
IP 首部无选项字段时固定 20 字节,携带可选 Options 字段时长度可变,最长 60 字节,ihl 字段以 4 字节为单位标识首部总长。核心字段:
- 版本(4 位):IP 协议的版本,IPv4 为 4,IPv6 为 6;
- 首部长度(4 位):IP 报头的长度,以 4 字节为单位。固定 20 字节时,值为 5;
- 服务类型(8 位):用于区分不同的服务质量;
- 总长度(16 位):整个 IP 数据报的长度(包括报头和数据);
- 标识(16 位):用于标识同一个数据报的不同分片;
- 标志(3 位)+ 片偏移(13 位):标志位控制是否允许分片,片偏移标记分片在原始报文的位置,用于链路 MTU 超限拆分数据包;
- 生存时间(TTL,8 位):数据报在网络中最多可以经过的路由器跳数,每经过一个路由器减 1,减到 0 时丢弃;
- 协议(8 位):标识上层协议,如 TCP 为 6,UDP 为 17;
- 首部检验和(16 位) :仅校验 IP 头部数据,不校验上层载荷数据,用于检验 IP 报头的完整性;
- 源 IP 地址(32 位):发送方的 IP 地址;
- 目的 IP 地址(32 位):接收方的 IP 地址;
- 选项(可选):用于扩展功能,最长 40 字节。
1.11.2 ~> Linux 内核中 iphdr 结构体的完整定义
c
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4;
#elif defined(__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
/*The options start here.*/
};
说明:
ihl:首部长度(Internet Header Length);tos:服务类型(Type Of Service);tot_len:总长度(Total Length);id:标识(Identification);frag_off:片偏移(Fragment Offset);ttl:生存时间(Time To Live);protocol:上层协议;check:首部检验和;saddr:源 IP 地址(Source Address);daddr:目的 IP 地址(Destination Address);__be16、__be32:表示大端序的 16 位和 32 位整数,因为网络字节序是大端序。
1.12 ~> 课程安排与学习建议
1.12.1 ~> 后续课程安排
- 数据链路层
- 五种 IO 模型与非阻塞 IO
- 多路转接 select
- Reactor 反应堆模式
1.12.2 ~> 复习期间的学习重点建议
- 如果时间紧张,系统部分倾向于把理论补完;
- 网络部分理论补到 TCP,同时要重点练习代码;
- 写代码的目的是让理论更深刻,不是为了写代码而写代码。
1.12.3 ~> 关于 AI 辅助项目学习方法
对于 AI 生成的项目代码,可以通过以下方法加深理解:
- 模块梳理:让 AI 帮你把整个项目的模块梳理清楚,形成模块与需求的对应关系表格;
- Demo 验证:对于看不懂的模块,让 AI 生成一个不影响源代码的简单 Demo,先理解功能再看代码;
- 核心逻辑吃透:重点搞清楚数据库表结构、数据获取方式和核心接口的实现逻辑,前后端的交互逻辑可以不用那么深入;
- 手写版本对比:如果有手写版本的项目,可以先把手写版本搞懂,再看 AI 生成的版本,大思路就清楚了。
2 ~> 核心总结
2.1 完整逻辑链条
IP 地址构成(网络号 + 主机号)→ 网段划分(提升路由效率、主机同跨网段判别)→ 路由器(构建子网、跨网转发、LAN/WAN 口区分)→ DHCP(自动分配 IP、UDP67/68 端口、安全隐患)→ 分类划分法(ABCDE 五类,127 段环回隔离)→ CIDR + 子网掩码(按位与算网络号、A 类子网拆分、真机 ifconfig/ipconfig 实操)→ 特殊 IP(网络号 / 广播 / 环回) → IPv4 地址危机 → RFC1918+100.64 私网 / 公网 IP 区分 → NAT + 多级 CGN(NAPT 端口映射、运营商端口管控与日志)→ IP 报文头部(可变首部、分片、头部校验)→ IP 内核源码 → 学习规划
2.2 核心重点汇总

- 网段划分本质:依托网络号批量排除网段,优化路由查找效率;主机依靠 IP & 掩码运算区分内网直连 / 网关转发。
- 子网掩码 & CIDR:打破 ABC 类固定边界,精细化切分大网段,解决老式分类 IP 浪费;主机位全 0 网络号、全 1 广播地址均不可分配主机。
- 地址分类易错点 :A 类 0~127 段中 <127.0.0.0/8> 专属环回,禁止商用组网;D 类多播、E 类保留。
- 私有 IP 两类标准 :RFC1918 家用私网(10/172.16/192.168)、RFC6598 运营商 CGN 私网(<100.64.0.0/10>),全部无法裸奔公网。
- DHCP 关键参数:应用层、UDP 协议、客户端 68 / 服务器 67 端口,无 IP 靠广播收发,存在 DHCP 劫持风险。
- NAT 是 IPv4 续命核心:NAPT 同时替换源 IP + 源端口,依靠映射表实现 1 个公网 IP 承载成千上万内网终端;家用 NAT + 运营商 CGN 构成双层地址转换;运营商限制端口池并留存转换日志。
- IP 首部细节:首部 20~60 字节可变,校验和只校验头部,标志 + 片偏移用于 IP 分片,TTL 限制路由跳数。
- 运营商链路规则:全量外网流量必经运营商骨干,欠费 / 管控报文在运营商侧直接丢弃,无法物理绕开。
结尾
uu们,本文的内容到这里就全部结束了,艾莉丝在这里再次感谢您的阅读!
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ### 艾莉丝努力练剑 C/C++ & Linux 底层探索者 | 一个正在努力练剑的技术博主 *** ** * ** *** 👀 【关注】 跟随我一起深耕技术领域,见证每一次成长。 ❤️ 【点赞】 让优质内容被更多人看见,让知识传递更有力量。 ⭐ 【收藏】 把核心知识点存好,在需要时随时查、随时用。 💬 【评论】 分享你的经验或疑问,评论区一起交流避坑! 不要忘记给博主"一键四连"哦! "今日练剑达成!"
"技术之路难免有困惑,但同行的人会让前进更有方向。" |
结语:希望对学习Linux相关内容的uu有所帮助,不要忘记给博主"一键四连"哦!
往期回顾:
🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡 ૮₍ ˶ ˊ ᴥ ˋ˶₎ა
