053 网络层 —— IP 协议

053 网络层 —— IP 协议
小米里的大麦网络层 —— IP 协议
为什么大家的 IP 都是 192.168 开头的?| B 站(荐)
【硬核科普】IP 地址是什么东西?IPV6 和 IPV4 有什么区别?公网 IP 和私有 IP 又是什么?| B 站(荐)
1. IP 地址的本质:网络号 + 主机号
IP 地址由两部分组成:
| 部分 | 作用 | 举例 |
|---|---|---|
| 网络号 (Network ID) | 表示属于哪个子网 | 192.168.10.0 |
| 主机号 (Host ID) | 表示子网内的哪台主机 | 192.168.10.15 |
规律:
- 同一子网内:网络号相同,主机号不同。
- 不同子网:网络号不同,主机号可以重复。
举例:
- 子网 A:192.168.1.0/24
- 子网 B:192.168.2.0/24
两个子网的主机号范围都可是 1–254,不冲突,因为网络号不同。
2. IP 地址划分基础
1. 划分目的
根本目的就是为了高效管理、节省地址、提升安全和性能。
最初,互联网只分为 A、B、C 类地址(分类地址),但从 1993 年起,RFC 1519 正式引入 CIDR,CIDR(无类别域间路由) + 子网掩码灵活划分 彻底取代了 A/B/C 类的刚性结构,于是就出现了现代 IP 地址分类图:
| 类别 | 起始位 | 首字节范围 | 网络(号)位数 | 主机(号)位数 | 用途 | 典型示例 |
|---|---|---|---|---|---|---|
| A 类 | 0 | 0–127 | 8 | 24 | 特大型网络 | 10.0.0.0 |
| B 类 | 10 | 128–191 | 16 | 16 | 中型网络 | 172.16.0.0 |
| C 类 | 110 | 192–223 | 24 | 8 | 小型网络(家庭/小公司) | 192.168.0.0 |
| D 类 | 1110 | 224–239 | —— | —— | 多播/组播(Multicast) | 224.0.0.1 |
| E 类 | 11110 | 240–255 | —— | —— | 保留(实验/未来) | 240.0.0.0 |
问题:
- 某公司有 1000 台主机,用 C 类不够(254),用 B 类又太多(浪费),IP 资源有限,这样分配太粗。
- 而且所有主机在一个广播域,广播风暴、安全隔离都成问题。
所以,必须打破 A/B/C 类的限制,按实际需求“切分”IP 地址块 —— 这就是 子网划分 的核心目的,于是 子网划分 就此出现。
2. CIDR 是什么?
CIDR = Classless Inter-Domain Routing(无类别域间路由),核心思想:不再看第一个字节的前几位来判断是 A/B/C,而是用“斜杠 + 数字”表示网络位长度。 例如:
192.168.1.0/24→ 不管它是 C 类,我们说“前 24 位是网络号”10.0.0.0/8→ 不管它是 A 类,我们说“前 8 位是网络号”172.16.0.0/16→ 不管它是 B 类,我们说“前 16 位是网络号”
现在所有网络设备(路由器、交换机、Linux、Windows)都支持 CIDR! 而我们只需要记住:
- 私有 IP 地址范围(面试常问!)
- A 类:
10.0.0.0/8→ 10.0.0.0 ~ 10.255.255.255。 - B 类:
172.16.0.0/12→ 172.16.0.0 ~ 172.31.255.255。 - C 类:
192.168.0.0/16→ 192.168.0.0 ~ 192.168.255.255。
- A 类:
- 公有 IP 地址 → 由 ISP 分配,全球唯一,可用于互联网访问。
- 子网划分完全基于 CIDR 和子网掩码,与 A/B/C 无关!
3. 什么是子网(Subnet)—— 网络号相同的一组主机
同一子网:网络号相同的一组主机;不同子网:网络号不同的主机。后文会提到。
子网:把原来的一个网络再细分成多个更小的网络(称为“子网”),每个子网都能独立使用。这样做有两个核心目的:
- 节约 IP 地址 —— 合理利用地址空间。
- 便于网络管理 —— 不同部门、楼层或业务线用不同子网,方便隔离与路由。
4. 子网掩码(Subnet Mask)
子网划分的关键就是 子网掩码,它用来区分“网络号”和“主机号”。它和 IP 地址配合,告诉设备:“哪些位是网络部分,哪些是主机部分”。常见写法:
255.255.255.0(等价于/24)。255.255.0.0(等价于/16)。255.255.255.128(等价于/25)。
记住:/后面的数字 = 网络位的总位数(从左往右数 1 的个数)
1. 举个实际例子
有一个 C 类地址:192.168.1.0/24,默认只能有 1 个网络,254 台主机(192.168.1.1 ~ 192.168.1.254)。但公司有 3 个部门,希望彼此隔离(财务、研发、销售),怎么办?
划分子网! 把 /24 改成 /26:
- 网络位从 24 位 → 26 位(多借 2 位)。
- 可用子网数:2² = 4 个子网。
- 每个子网主机数:2^(32-26) - 2 = 64 - 2 = 62 台(减 2 是去掉网络地址和广播地址)。
子网划分结果:
| 子网 | 网络地址 | 可用 IP 范围 | 广播地址 |
|---|---|---|---|
| 1 | 192.168.1.0 | 192.168.1.1 ~ 192.168.1.62 | 192.168.1.63 |
| 2 | 192.168.1.64 | 192.168.1.65 ~ 192.168.1.126 | 192.168.1.127 |
| 3 | 192.168.1.128 | … | 192.168.1.191 |
| 4 | 192.168.1.192 | … | 192.168.1.255 |
3. IP(IPv4) 协议报头解析
IPv4 报头 20 字节起,包含版本、长度、TOS、总长、ID、标志、偏移、TTL、协议、校验和、源/目的 IP。其中 TTL 用于防环,协议号决定上层协议,校验和只保护报头,分片靠 ID + 偏移 + 标志控制。现代网络主要用 CIDR 和 TTL/Protocol,选项基本废弃。
- IP 报头标准长度 = 20 字节(无选项时)
- IP 报头最大长度 = 60 字节(带选项时)
- 本质是内核里的结构体:
struct iphdr(Linux 中定义在<linux/ip.h>)
| 字段名 | 位数 | 作用 | 说明 |
|---|---|---|---|
| 版本 (Version) | 4 | 指定 IP 协议版本 | IPv4 为 4,IPv6 为 6 |
| 首部长度 (IHL) | 4 | 表示报头长度(单位:4 字节) | 常见值为 5 → 5×4 = 20 字节;最大 15→60 字节 |
| 服务类型 (TOS / DSCP) | 8 | 指导路由器如何转发(QoS) | 可指定最小延迟、最大吞吐、最高可靠、最低成本 |
| 总长度 (Total Length) | 16 | 报文整体长度(头 + 数据) | 最大 65535 字节 |
| 标识 (Identification) | 16 | 数据分片标识 | 同一报文的所有分片使用相同 ID |
| 标志 (Flags) | 3 | 控制分片行为 | 含 DF(不分片)和 MF(后续有分片) |
| 片偏移 (Fragment Offset) | 13 | 当前分片在原报文中的偏移位置 | 单位为 8 字节 |
| 生存时间 (TTL) | 8 | 报文能经过的最大路由跳数 | 每过一跳减 1,为 0 时丢弃,防止死循环 |
| 协议 (Protocol) | 8 | 指明 IP 的有效载荷交付上层的协议类型 | TCP = 6,UDP = 17,ICMP = 1 |
| 首部校验和 (Header Checksum) | 16 | 检查报头是否被破坏 | 每个路由器都要重新计算一次 |
| 源 IP 地址 (Source Address) | 32 | 发送端地址 | IPv4 地址 |
| 目的 IP 地址 (Destination Address) | 32 | 接收端地址 | IPv4 地址 |
| 可选项 (Options) | 可变 | 一些特殊用途 | 如时间戳、安全、路由记录等 |
4. 路由器到底是什么?
路由器 = 有多张网卡的特殊主机。
1. 路由器本质是一台多网卡的专用主机
每个物理/逻辑接口(网卡)连接一个子网,每个接口必须配置一个 属于该子网的 IP 地址,它在每个连接的子网中,都相当于一台普通主机。所以:路由器本身“属于”多个子网,但它 不是普通主机(不跑业务应用,只转发)。
2. 路由器必须至少连接两个子网
一张网卡对应一个子网,两张网卡以上才能“转发”不同子网的数据,所以路由器一定“同时属于多个子网”。否则就叫“单臂路由”或根本不是路由器(比如家用光猫只接一个 LAN,其实是桥接)。
| 接口 | 连接子网 | 配置 IP |
|---|---|---|
| eth0 | 192.168.1.0/24 | 192.168.1.1 |
| eth1 | 192.168.2.0/24 | 192.168.2.1 |
这样它就能把 A 子网和 B 子网互联。
3. 路由器接口 IP 通常是 .1,但不是强制规定!
一般路由器是子网中第一台设备(方便识别)。所以它的地址常为 “网络号 + .1”。例如:192.168.10.0/24 → 路由器常用 IP:192.168.10.1,因为:
网络地址(.0)不能用、广播地址(.255)不能用
.1 最顺手、易记(这不是硬性规定,而是一种行业约定,便于统一管理)。
但可以设成 .254、.100,只要在子网范围内就行!
关键:所有主机的“默认网关”要指向这个 IP。
4. 路由器的核心功能
| 功能 | 说明 |
|---|---|
| 数据转发 | 根据路由表选择下一跳,把 IP 报文送到目标子网 |
| 子网构建 | 可以划分并管理局域网(LAN) |
| DHCP 分配 | 自动给新主机分配 IP(DHCP 服务器功能) |
| NAT 转换 | 私网 IP ↔ 公网 IP 转换,实现上网访问 |
| 防火墙 / ACL | 过滤、限制特定流量 |
路由器不“构建”子网,它“连接”子网! 子网是由 IP 地址 + 子网掩码 定义的逻辑网络,物理上靠交换机/网线连接,逻辑上靠路由器互联。
“子网是由 IP 地址和子网掩码定义的逻辑网络,路由器通过多个接口连接不同子网,每个接口配置对应子网的 IP(通常为 .1),负责跨子网 IP 转发和广播隔离。子网划分基于 CIDR,DHCP 仅用于自动分配地址,非路由器核心功能。”
5. 特殊的 IP 地址
我们把 IPv4 的 32 位地址分成两部分:网络号(Net ID) 和 主机号(Host ID)。根据主机号的取值(全 0、全 1、特殊段),出现了几种特殊地址:
| 类型 | 主机号情况 | 举例 | 含义 | 特点 |
|---|---|---|---|---|
| 网络地址 | 主机号全为 0 | xxx.xxx.xxx.0(主机位全 0) 如 192.168.1.0/24 | 表示整个子网 | 不能分配给具体主机 |
| 广播地址 | 主机号全为 1 | xxx.xxx.xxx.255(主机位全 1) 如``192.168.1.255/24` | 用于给子网内所有主机广播/发包 | 局域网广播,不能分配给主机 |
| 环回地址 | 127.0.0.0/8 段 | 常用 127.0.0.1 | 回环测试(本机通信) | 仅本机可用,不经过网卡 |
| 私有地址 | 特定保留段 | 10.0.0.0/8/172.16.0.0/12/192.168.0.0/16 | 局域网内部使用,即内网专用,不能上公网 | 可在局域网自由使用,不可直接访问公网 |
| 公网地址 | 非保留段 | 例:8.8.8.8 | 由 ISP 分配,用于互联网通信 | 唯一、可路由 |
| 0.0.0.0 | 特殊源地址 | 具体含义需结合使用场景、上下文进行判断 | 不是真实地址,而是占位符。表示“任意地址”/“本机未配置 IP”/“默认路由” 等 | 不能配置给主机,路由表中表示默认网关 |
提示:
- 主机号全 0:代表“网络本身”。
- 主机号全 1:代表“该网络内的广播”。
- “为什么不能 ping 通 192.168.1.0?” → 因为是网络地址,不是主机。
6. IPv4 地址数量限制
1. 为什么“43 亿” IP 地址不够用?
IPv4 是 32 位二进制地址,理论总数:2³² = 4,294,967,296(约 43 亿)。 实际可用远少于 43 亿:
- 有大量地址被保留(例如环回、私网、广播等)。
- 每个设备的 每张网卡 都要一个 IP(一台服务器常常有多个网卡,就要多个 IP)。
- 早期大公司(如 MIT、Ford)拿走了整段 A 类地址(1600 万个 IP),导致 地址分配不均,造成巨大浪费。
- 网络分段、地址浪费(如传统 A/B/C 类)。
- 不能按主机数分配:即使一台电脑,也可能配多个 IP(虚拟主机、容器等)。
2. 如何解决 IPv4 地址枯竭?
1. 动态分配 IP(DHCP)
原理:IP 地址池共享,设备上线时分配,下线时回收。优点:提高利用率,局限:无法解决“同时在线设备数 > 可用公网 IP”的问题。 场景:
- 家庭/公司路由器:100 台设备,但只有 50 人同时在线 → 只需 50 个 IP。
- 学校机房:500 台电脑,但分批使用 → IP 复用。
2. NAT(网络地址转换)—— 最广泛应用!
原理:内网用私有 IP(如 192.168.x.x),出公网时由路由器将 私有 IP + 端口 映射为 一个公网 IP + 不同端口。
- 效果: 成千上万台内网设备,共享 1 个公网 IP 上网,公网看不到内网结构,还提升了安全性。
- 类型:
- SNAT(源 NAT):内网 → 外网(最常见)。
- DNAT(目的 NAT):外网 → 内网(如端口映射:公网 80 → 内网 192.168.1.100:80)。
- Linux 实现:
iptables/nftables的MASQUERADE或SNAT规则。
NAT 是解决 IPv4 地址不足的核心技术,通过端口复用实现多对一映射。
3. IPv6 —— 终极解决方案
地址长度:128 位 → 地址数 = 2¹²⁸ ≈ 3.4×10³⁸(地球每平方米可分配 10²⁸ 个 IP!)。特点:
- 无 NAT(理论上每个设备都有公网 IP)。
- 自动配置(SLAAC)。
- 报头更简洁,支持流标签、安全扩展。
虽然 IPv6 是未来,但因历史包袱和成本,IPv4 + NAT 仍是当前主流。
3. 杂谈
中国的 IPv6 技术目前遥遥领先!
中国的互联网设备数量庞大——光是手机、电脑、物联网设备加起来,早已超过这个数十倍。所以必须找一个更大的地址空间方案,就是 IPv6。对中国来说,这意味着 从根本上解决地址短缺、NAT 层层嵌套等痛点问题。从国家战略层面来说:是为了实现自主可控 + 下一代网络主导权:
- IPv6 是未来网络的核心基础,涉及骨干网、物联网、云计算、AI 等所有领域。
- 早早布局 IPv6,可以减少对旧技术的依赖,在全球网络标准中占据话语权。
1. 为什么不能“一键切换” IPv4 → IPv6?
这点很多人误解了。IPv6 并不是 IPv4 的“升级包”,而是一个 全新的协议体系。具体困难主要在三点:
- 不兼容设计: IPv4 和 IPv6 报头结构完全不同,IPv6 无法直接理解 IPv4 报文(例如校验和、地址长度都不同)。所以 IPv4 网络设备、路由器、应用软件都得重新支持 IPv6。
- 全球网络规模太庞大: 互联网中有无数旧设备、老系统(银行、工厂、政府网络等)仍在用 IPv4,不可能让全球数十亿设备在同一时刻同时换协议。
- 转换与过渡成本太高: 企业需要重新配置网络、防火墙、DNS、安全策略,用户端还要兼容双栈(IPv4 + IPv6)运行,否则很多旧网站上不了。所以现在全球都采用“双栈机制”:IPv4 和 IPv6 并行运行,慢慢过渡。
7. 私网 IP 地址和公网 IP 地址
私有 IP 用于内网通信,公网 IP 全球唯一;运营商通过光纤、基站和 IP 分配构建网络基础设施;全球互联网像大学层级体系,靠子网掩码和路由表实现高效寻址;NAT 技术将私有 IP 映射为公网 IP,使内网设备能访问互联网,是 IPv4 时代解决地址枯竭的核心机制。
1. 私有 IP 与 公网 IP:谁负责“内部”,谁负责“对外”
| 对比 | 私有 IP | 公网 IP |
|---|---|---|
| 定义 | 仅在局域网内有效,不能在互联网上路由(不可直接上公网) | 全球唯一,可在互联网上直接通信 |
| 用途 | 局域网内部设备通信(手机、电脑、摄像头) | 全球互联网上通信(全球唯一) |
| 地址范围 | -10.0.0.0/8(10.x.x.x) -172.16.0.0/12(172.16~31.x.x) -192.168.0.0/16(192.168.x.x) | 除私有地址、保留地址外的所有 IPv4 地址 |
| 谁分配 | 用户/管理员自行规划(如家用路由器自动分配) | 由 IANA → RIR(如 APNIC)→ ISP(运营商) 逐级分配 |
| 能否重复 | 可以(不同公司都用 192.168.1.0/24) | 不可重复 |
| 举例 | 家用 WiFi、公司内网 | 云服务器、网站 IP |
私有 IP 就像“宿舍楼房间号”,只有本楼人懂;公网 IP 是“身份证号”,全国唯一。
2. 运营商:互联网的“基建狂魔”
运营商即互联网服务提供商,它们的作用可以分为两层:
基础设施建设: 铺设光纤、建基站、建骨干网、机房、IDC 等,就像大学建教学楼、宿舍楼、操场,提供“物理层”环境。
提供网络接入:
分配公网 IP:家庭宽带、移动数据、企业专线等。
提供接入服务:光猫(调制解调器)把光纤信号转成电信号,路由器再分发给内网设备,路由器再给每台设备分配 私有 IP,并通过 NAT 技术“借用”一个 公网 IP 出门上网。
维护骨干网:确保跨省、跨国流量高效转发。
3. 全球互联网与网段划分 —— 大学的“层级管理”
互联网的 IP 地址分配体系非常像大学的组织结构:
| 网络层级 | 对应 | 类比:大学体系 |
|---|---|---|
| IANA(国际互联网数字分配/管理机构) | 全球 IP 地址总管家 | 教育部:统一分配全国高校编号 |
| RIR(区域互联网注册机构,如 APNIC、ARIN 等) | 按大洲分配地址块 | 教育厅:给各省分配高校名额 |
| ISP(运营商,如中国电信、移动) | 向用户/企业提供公网 IP | 省教育厅 → 给某大学分配学号段(如 20250001~20259999) |
| 企业/家庭网络 | 使用私有 IP 或少量公网 IP | 大学内部:院系 → 年级 → 班级 → 学生 |
| 子网掩码 | 划分网络边界 | 学号结构:前 4 位 = 院系,中间 2 位 = 年级,后 4 位 = 个人编号 |
| 路由器 | 跨子网转发 | 班主任、院办、校务处:负责信息在不同层级间传递 |
学号类比: 每个学生(设备)都有唯一“学号”(IP),通常学号前几位能看出学院、年级、专业(就像子网掩码划分出的网段),如果学生证(IP)丢了,被其他学院的人(另一个网络)捡到,也能通过学号前缀快速查出属于哪个学院(网段)——这就是 路由转发原理。
4. 私有网络与公网的关系:靠 NAT 桥接
问题: 私有 IP 不能上公网!因为公网路由器 不认识 192.168.1.100,会直接丢弃,而且全球有无数个 192.168.1.100,无法区分。
解决方案:NAT(网络地址转换),工作过程:
- 你(
192.168.1.100:50000)访问www.baidu.com:80。 - 路由器收到包,把源 IP 改成自己的公网 IP(如
203.0.113.45),端口映射为60000。 - 发往公网:
源=203.0.113.45:60000,目的 =110.242.68.4:80。 - 百度回包给
203.0.113.45:60000。 - 路由器查 NAT 表,还原为
192.168.1.100:50000,转发给你。
效果:成千上万台内网设备,共享 1 个公网 IP,外网无法主动访问内网(天然防火墙),节省公网 IP 资源(核心价值!)。
云服务器为什么需要公网 IP? 因为我们要主动访问它(如 SSH、Web 服务),它必须有一个 全球可达的地址,所以云厂商会分配公网 IP(或通过 EIP 弹性绑定)。
8. NAT 技术的核心作用:让有限的公网 IP 服务更多设备
1. NAT 是什么?
NAT(Network Address Translation) —— 网络地址转换。它的本质是:在数据包经过路由器时,动态修改 IP 地址(以及端口号),以便多个内网设备共用一个公网 IP 上网。
2. 为什么需要 NAT?
IPv4 只有约 43 亿个地址(2³² 个),但设备早就远超这个数量。于是:每个家庭、公司内部设备(电脑、手机、打印机…)都使用 私有 IP,路由器对外只暴露一个 公网 IP,NAT 技术负责在出入网时做“翻译”。
3. NAT 的工作过程
假设:
- 家庭内网:192.168.0.10(你的电脑)。
- 路由器公网 IP:42.101.8.5。
你访问百度时:源 IP = 192.168.0.10 → 目的 IP = 180.101.49.12(百度),在出网时,NAT 做了替换:源 IP = 42.101.8.5:40001(公网IP+端口) → 目的 IP = 180.101.49.12,路由器保存一条映射表:42.101.8.5:40001 ↔ 192.168.0.10:12345,当百度返回数据时:目的 IP = 42.101.8.5:40001。路由器查表,发现要转给内网的 192.168.0.10,于是数据成功回到你的电脑。
好处: 成千上万设备共享一个公网 IP,屏蔽内网结构,提高安全性,有效缓解 IPv4 地址不足问题。
4. NAT 的三种常见类型(按转换粒度区分)
| 类型 | 说明 | 典型场景 |
|---|---|---|
| 静态 NAT | 一对一映射 | 内网服务器要对外提供服务 |
| 动态 NAT | 多对多临时映射 | 企业网络动态分配公网地址池 |
| 端口复用 NAT(PAT) | 多对一,通过端口区分 | 家用路由器、校园网、公司常用 |
家用路由器几乎都是 PAT(端口复用型 NAT)。因为只有一个公网 IP,但要让几十台设备同时上网,必须通过不同端口区分。
大公司网络虽与家用网络共享 IP 路由原理,但采用精细 IP 规划、多层架构和有限 NAT 策略,对外服务通常直接使用公网 IP 以保障性能与可靠性,其高昂费用主要来自公网 IP、专线带宽和高可用基础设施。家庭路由器是 NAT 的小型实现,大公司机房是它的企业级放大版。运营商卖的不是“网速”,而是带宽 + 公网资源 + 可靠性。
9. 路由转发原理:IP 报文如何找到“回家的路”
1. 基本逻辑
所有 IP 报文的转发都是根据 目的 IP 地址 来决定的,与源 IP 无关。无论是主机还是路由器,都维护着一张 路由表,都靠 本地路由表 决定“下一跳去哪”。路由表每一项通常包括:
| 项目 | 含义 |
|---|---|
| 目的网络(Destination) | 目标网段 |
| 子网掩码(Netmask) | 区分网络号和主机号 |
| 下一跳(Next Hop) | 报文应该转发给的下一个路由器地址 |
| 出口接口(Interface) | 报文应从哪块网卡发出 |
2. 查找路由表的过程
当主机要发送数据时,它会:
- 先判断目标是否在同一网段:
- 用自己的 IP 与目标 IP 分别和子网掩码做按位与;
- 若结果相同 → 同一网段,直接通过局域网(ARP 找 MAC)通信;
- 若不同 → 不同网段,交给默认网关(通常是路由器)。
- 路由器转发时:
- 路由器查自己的路由表;
- 对每一条记录执行
(目标IP & 子网掩码); - 找出最长匹配的网段(即 最长前缀匹配原则);
- 按照该记录指示的接口或下一跳转发。
比喻理解:主机查路由表就像问路
- 有人告诉你“到市中心走这条路”(有明确路)。
- 有人说“我不知道,但我知道到高速入口怎么走”(下一跳)。
- 若没人知道,就交给默认路由(缺省出口)。
3. 大概转发过程
1 | [主机A] → [家用路由器] → [运营商路由器] → [目标网络路由器] → [主机B] |
每经过一个路由器:路由器查路由表,目的 IP 不变,源 MAC、目的 MAC 每跳都会变(数据链路层负责)。
关键点:网络层靠 IP 地址确定“去哪”,数据链路层靠 MAC 地址确定“怎么到下一跳”。
10. IP 分片机制:大报文如何被拆开传输?
1. 为什么要分片?
因为不同链路的最大传输单元(MTU)不同。比如:以太网 MTU = 1500 字节,若 IP 报文超过 1500 字节,就必须拆分,否则底层帧发不出去。
2. 分片的字段结构
IP 报头里有三个关键字段:
| 字段 | 作用 |
|---|---|
| 16 位标识(Identification) | 标识同一份数据(同一 IP 报文分片的共同编号) |
| 3 位标志(Flags) | 控制分片行为 |
| 13 位片偏移(Fragment Offset) | 表示该分片在原报文中的偏移位置(单位 8 字节) |
Flags 含义如下:
- bit0:保留。
- bit1:DF(Don’t Fragment)是否允许分片。
- bit2:MF(More Fragment)是否还有后续分片。
举例:MF = 1 表示后面还有分片,MF = 0 且 Offset = 0 表示仅此一个分片。
3. 分片与组装
分片在发送端或中间路由器完成,组装必须在接收端完成。 如果一个分片丢了,即使其他分片都到了,整份报文也无法重组,只能重传,增加延迟和负担。因此:网络设计时会 尽量避免分片,TCP 会在三次握手阶段协商 MSS,控制单次传输不超过 MTU(常见 1460 字节)。
4. 为什么不建议分片?
- 增加路由器 CPU 开销;
- 增加丢包概率;
- 丢一个片就得重传整个报文;
- 对实时性要求高的通信极其不利(如视频流)。
所以实际网络中:分片尽量只在端系统进行,路由器最好只转发,不分片。
11. 数据链路层简述:局域网内的一跳通信
IP 报文转发靠查路由表,逐跳找到目标网络;若目标过大,IP 层会按 MTU 进行分片,接收端再组装;而每一跳之间的实际传输靠 MAC 帧完成,MAC 只在局域网内有效。
虽然之后会细讲,但这里要先有个框架,可以先做一个简单了解。
1. 主要作用
负责 点对点或点对多点的数据传输,以 MAC 帧(Frame) 为基本传输单位,通过 MAC 地址 标识网络设备。
2. 通信过程(以以太网为例)
发送方将 IP 报文封装为 MAC 帧,MAC 帧头包含:目的 MAC、源 MAC、类型字段,所有主机都能收到这个帧,只有目的 MAC 匹配的主机才会上交给上层处理。这一层只在局域网中有效,数据一旦跨路由器转发,MAC 地址必然变化。
3. 数据帧长度与碰撞
有效载荷:46–1500 字节,过短帧会触发填充,过长则被丢弃,交换机通过分隔碰撞域减少冲突。




















