Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

IPv6(进阶)

复习

  • IP 地址:IPv4 用 32 位标识网络与主机
  • 子网与 CIDR:用前缀长度表示地址范围
  • 路由表与最长前缀匹配:路由器按前缀转发

本章为进阶内容,零基础读者可以跳过,不影响后续阅读。

TL;DR

  • IPv6 用 128 位地址,从根本上缓解地址枯竭
  • 它还顺带简化了首部,取消了首部校验和
  • 地址更长,却也带来更方便的聚合与自动配置
  • 迁移是渐进的,新旧协议可以长期共存

正文

  IPv4 的地址是 32 位,能表示的地址大约 43 亿个。当年看着很多,如今却早已不够分。NAT 让许多设备共用一个公网地址,算是缓解,但并没有真正解决“地址不够”这个根本问题。

  IPv6 的思路很直接:把地址空间大幅扩到 128 位。

长到几乎用不完

  128 位能表示多少地址?这个数字大到可以把地球上的每一粒沙子都分配一堆地址还有富余。这样,地址枯竭的问题就从根上被缓解了。

  写法上,IPv6 用十六进制,并用 :: 压缩连续的零,方便书写。比如原本很长的地址,可以写得很短。

顺手简化的首部

  IPv6 不只是“地址变长”。它还对首部做了简化:

  • 首部长度固定,处理更简单
  • 去掉了首部校验和,把检错交给更底层和高层
  • 分片等字段被重新设计,不再让中途路由器做分片

  简化首部的好处是转发更快、处理更省事;代价是某些原本由首部完成的工作,要由别处接管。这又是一次取舍。

便于聚合与自动配置

  IPv6 还有一个常被忽略的优势:地址的层次结构更清晰,便于聚合。

  把大量地址按前缀归并,路由器就能用较少的表项覆盖大片区域,转发表不至于膨胀。同时,IPv6 支持设备根据网络前缀自动生成地址,减少了手工配置和 DHCP 的依赖。

新旧共存

  不过,换一套协议不可能一夜完成。于是现实采取了渐进策略:双栈,即一台设备同时支持 IPv4 和 IPv6;两种协议在相当长时间里并存。

  这提醒我们:再好的新方案,也要考虑与旧世界的衔接。 网络最看重的是连通,而不是最新。

思考题 1

  为什么把地址空间从 32 位扩到 128 位,能从根本上缓解地址枯竭?

思考题 2

  IPv6 去掉首部校验和、简化首部,会带来什么好处和代价?

小结

知识点

  • IPv6 用 128 位地址,缓解地址枯竭
  • 首部更简化,去掉了首部校验和
  • 层次清晰,便于聚合与自动配置
  • 通过双栈与 IPv4 渐进共存

参考资料

  1. Wikipedia(zh):IPv6:互联网协议第六版
  2. Wikipedia(zh):IPv6地址:128 位地址的表示方式

思考题答案(仅供参考)

思考题 1

  因为地址数量随位数呈指数增长。从 32 位到 128 位,可用地址的数量级一下子扩大了天文数字倍,远超过当前和可预见的设备规模,因此从根上缓解了地址不够分配的问题。

思考题 2

  好处是首部固定、处理更简单,转发更快、更省资源,也把可能出错的环节减少。代价是原本由首部校验和完成的检错要交给底层和高层去承担,如果这些层次没有做好,就可能失去一层保护。这是用简洁换计算效率的取舍。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪