IPv6 与 ICMP
IPv6 是为解决 IPv4 地址耗尽问题而设计的新一代 IP 协议——128 位地址让地球上的每粒沙子都能分配一个 IP,同时简化了包头、取消了 NAT。ICMP 是网络层的"诊断工具"
IPv4 地址已经不够用了——这是一场”地址危机”
2024 年全球设备数量超过 300 亿——而 IPv4 只有约 43 亿个地址。即使有 NAT 和私有地址缓解,也已经不够分了。
🏫 类比:手机号位数升级 以前中国手机号 7 位就够用,后来用户多了升到 8 位、11 位。IPv4→IPv6,就像手机号从 7 位升到 20 位——永远不用担心号码不够。
IPv4 地址池现状:
- 2011 年:IANA(互联网号码分配机构)的顶层地址池耗尽
- 2015 年:亚太区的地址池耗尽
- 2024 年:运营商开始大规模部署 IPv6
IPv6 到底有多大?
IPv6 地址 128 位——总量是 2¹²⁸ = 340,282,366,920,938,463,463,374,607,431,768,211,456 个。
如果地球表面 70% 是海洋、只有 30% 是陆地——每平方米能分到 6.5×10²³ 个 IPv6 地址。 你脚下的每粒沙子都能有上亿个 IP 地址。
IPv6 地址长什么样?
IPv6 地址写成 8 组 16 进制数,每组 4 个 16 进制字符,用冒号隔开:
完整:2001:0db8:85a3:0000:0000:8a2e:0370:7334
简化:2001:db8:85a3::8a2e:370:7334
简化规则:
① 每组的前导 0 可以省略 → 0370 → 370
② 连续的 0 组可以用 :: 代替一次 → 0000:0000 → ::
# 查看你的 IPv6 地址
ip addr show | grep inet6 # Linux
ifconfig | grep inet6 # macOS
ipconfig | find "IPv6" # Windows
IPv6 vs IPv4——简化了哪些地方?
IPv6 的包头比 IPv4 简单多了——没有校验和、没有分片、没有选项字段,长度固定为 40 字节:
IPv4 包头:20-60 字节 IPv6 包头:40 字节(固定)
┌──────────────┐ ┌──────────────┐
│ 版本/服务类型 │ │ 版本/流量标签 │
│ 总长度/分片 │ │ 负载长度 │
│ TTL/协议/校验 │ │ 下一头部/TTL │
│ 源地址(32位) │ │ 源地址(128位)│
│ 目标地址(32位)│ │ 目标地址(128位)│
│ 选项(可变) │ └──────────────┘
└──────────────┘
IPv6 简化带来的好处:
| 变化 | IPv4 | IPv6 | 好处 |
|---|---|---|---|
| 校验和 | 有 | 没有了 | 路由器不用算了,加快转发 |
| 分片 | 路由器可以做 | 发送方做 | 路由器不用处理分片,更快 |
| 选项 | 可变长,处理慢 | 扩展头部 | 只在需要时才处理 |
| NAT | 必须用 | 不需要 | 每个设备有全球唯一公网 IP |
💡 IPv6 去掉了校验和——因为数据链路层(CRC)和传输层(TCP/UDP 校验和)已经做了错误检测,IP 层的校验和是多余的。减少了一个处理步骤,路由器转发更快。
ICMP——网络层的”诊断工具”
ICMP(Internet Control Message Protocol) 不是用来传数据的——它是网络层的”信使”,报告错误和诊断信息。
你每天都在用的 ICMP——ping
$ ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: icmp_seq=0 ttl=52 time=15.3 ms
64 bytes from 39.156.66.10: icmp_seq=1 ttl=52 time=14.8 ms
64 bytes from 39.156.66.10: icmp_seq=2 ttl=52 time=15.1 ms
ping 发送的是 ICMP Echo Request(类型 8),对方回复 ICMP Echo Reply(类型 0)。
常见的 ICMP 消息
| 类型 | 用途 | 你在哪里会遇到 |
|---|---|---|
| 0/8 | Echo Reply / Echo Request | ping——测试网络连通性 |
| 3 | 目标不可达 | 端口没开、网络不存在时看到 |
| 5 | 重定向 | 路由器告诉你”你应该走另一条路更快” |
| 11 | 超时(TTL exceeded) | traceroute 的核心机制 |
TTL 超时——traceroute 的秘密武器
$ traceroute google.com
traceroute to google.com (142.250.80.4), 30 hops max
1 192.168.1.1 (192.168.1.1) 1.5 ms
2 10.0.0.1 (10.0.0.1) 5.2 ms
3 172.16.1.2 (172.16.1.2) 8.1 ms
4 * * * ← 有的路由器不响应 ICMP(防火墙屏蔽)
5 72.14.237.1 11.3 ms
...
8 142.250.80.4 12.5 ms
工作原理:
- 发送 TTL=1 的 UDP 包 → 第一台路由器收到,TTL 减为 0 → 丢弃并回复 ICMP 超时
- 发送 TTL=2 的 UDP 包 → 第一台转发,第二台 TTL=0 → 回复 ICMP 超时
- ……直到到达目标
💡 你看到的
* * *说明某台路由器配置了防火墙不回复 ICMP——这不代表网络不通,只是它不泄露自己的存在。
小结
| 概念 | 要点 | 一句话 |
|---|---|---|
| IPv6 | 128 位地址,地球每粒沙子都能分到 IP | ”永远用不完的地址” |
| IPv6 vs IPv4 | 无校验和、无分片、无 NAT | ”更简洁、更快” |
| ICMP | 错误报告和诊断工具 | ”网络层的信使” |
| ping | ICMP Echo Request/Reply | ”你在吗?——我在” |
| traceroute | 利用 ICMP 超时报文逐跳探测 | ”查查去北京要走哪些站” |
为什么先学这个? IPv6 是互联网的未来,ICMP 是排查网络问题的第一把钥匙。下一节看看NAT 与 DHCP——IPv4 时代”续命”的两大技术。