目录
1.引言
IPv4和IPv6是IP协议的两个主要版本,IPv4的地址枯竭是推出IPv6的直接原因。IPv4的地址总数在40多亿,但是目前需要联网的移动设备已经超过100亿。在IPv4地址枯竭这个问题上,地址转换技术NAT可以在一定程度上缓解,但是要彻底解决的话,还是要看IPv6。
2.地址转换技术NAT
NAT(地址转换技术)只是一个技术上的概念,它通过修改数据包的IP地址、端口来实现对公网IP的复用,进而大幅缓解了公网IP的直接消耗。
局域网内的设备,是不能直接通过私有IP(不需要向ICANN申请)访问公网的,因为私有IP只在局域网内有效。如果要访问公网,就需要进行地址转换。以下是私有IP地址段的划分:
|--------|-------------------------------|-------------|
| 私有地址类别 | 地址范围 | 适用场景 |
| A类 | 10.0.0.0 - 10.255.255.255 | 大型企业 / 校园内网 |
| B类 | 172.16.0.0 - 172.31.255.255 | 中型企业内网 |
| C类 | 192.168.0.0 - 192.168.255.255 | 家庭 / 小型办公内网 |
2.1地址转换技术的分类
地址转换技术NAT,根据修改的IP字段不同,可以分为源地址转换SNAT和目的地址转换DNAT。
- SNAT:修改的是数据包的源IP地址;
- DNAT:修改的是数据包的目的IP地址。
其中,SNAT分类中的PAT技术,是实际互联网中使用最广泛的地址转换技术,也是缓解IPv4地址枯竭的关键技术,下一小节再谈。
SNAT和DNAT的对比:
|------|--------------------|-------------------|
| 特性 | SNAT | DNAT |
| 修改字段 | 修改数据包的源IP | 修改数据包的目的IP |
| 核心用途 | 让内网设备共享公网 IP 访问互联网 | 让公网设备访问内网的服务器 |
| 触发方式 | 由内网设备主动发起请求触发 | 需管理员手动配置端口转发的映射关系 |
SNAT转换过程:
- 内网设备发起请求:内网设备(如 192.168.1.100)向公网服务器(如 223.5.5.5)发送数据包,数据包到达 NAT 路由器。
- 地址转换:NAT 路由器将数据包的源 IP 替换为自身公网 IP(如 202.100.10.5),并在 NAT 映射表中记录 192.168.1.100<--->202.100.10.5的对应关系。
- 公网返回数据:公网服务器将响应数据包发送到 202.100.10.5。
- 反向转换再转发:NAT 路由器查询映射表,将数据包的目的 IP 替换为 192.168.1.100,然后再转发给内网设备。
DNAT的转换过程和SNAT的过程差不多,不过公网到内网的映射表是静态的,也就是说,这张表是由人为写入的。
2.2地址转换技术PAT
PAT,它不仅修改数据包的源IP,还把端口也改了,借助TCP/UDP的端口号(0-65535)来实现多个内网设备复用同一个公网IP(它们的端口不一样),然后通过不同的端口号就可以区分不同的回话,进而大幅的缓解了公网IP的消耗。
转换过程:
- 网关的公网接口只有一个公网 IP:202.100.10.5。
- 内网设备 A(192.168.1.10:50001)向公网服务器(223.5.5.5:80)发送 HTTP 请求,数据包到达网关。
- 网关修改数据包的源 IP 为 202.100.10.5,同时修改源端口为一个未被使用的公网端口(如 60001),并在映射表中记录:
- 内网:192.168.1.10:50001 <---> 公网:202.100.10.5:60001
- 内网设备 B(192.168.1.11:50002)发起另一个请求,网关分配新的公网端口(如 60002),映射表项为:
- 内网:192.168.1.11:50002 <---> 公网:202.100.10.5:60002。
- 公网服务器响应设备 A 的请求,数据包目的地址为 202.100.10.5:60001,网关查询映射表,将目的 IP 和端口改为 192.168.1.10:50001,转发到内网。
通过端口来区分不同的连接,理论上,一个公网IP可以被6万多个内网设备复用。
地址转化技术PAT,把公网IP节省到了极致,但同时也给网关带来了性能上的开销,因为它需要维护映射表。
3.IPv6首部

- 版本:用来标识IP协议版本,因为是IPv6,所以该字段固定为6。通过上图的协议首部,就可以看出IPv4和IPv6不兼容了。
- 通信量类:相当于IPv4的服务类型字段,高优先级的数据包(比如语音、视频)会被路由器优先转发。
- 流标号:IPv6 新增核心字段,用于标识属于同一流的数据包。流:指从源地址到目的地址的一系列数据包(如一个视频流),路由器可基于流标号做快速转发,无需逐包解析,提升传输效率。
- 有效载荷长度:除了基本首部之外的长度。
- 下一个首部:标识紧接在基本首部之后的首部类型,可能是 扩展首部(如路由选项首部)或 上层协议(如 TCP=6、UDP=17)。
- 跳数限制:等价于IPv4的TTL生存时间,只是语义上更明确。
- 源地址:128位的源IP地址,表示数据包从哪来。
- 目的地址:128位的目的IP地址,表示数据包要到哪去。
IPv6的128位地址空间约为3.4×10³⁸个地址,相当于给地球上每一滴水(约1.4×10²¹滴)分配一个独立标签后,还能剩下足够多的标签给其他星球的海洋使用。在可见的未来,这种数量级使得地址枯竭的可能性几乎不存在。
4.IPv6地址表示
IPv6的地址长度为128位,所以如果用IPv4的方式来表示的话,IPv6地址的长度将长的可怕。
IPv6的128地址被平均分成8个段,每个段16位(2字节),然后用16进制表示。
2001:0db8:0000:0000:0000:0000:1428:57ab
这个就是一个标准的IPv6地址。但是,还是太长了。于是,推出了零压缩规则来进行优化。
零压缩规则说的是,可以用冒号::来替换连续的全0段,但是一个IPv6地址中,只能使用一次零压缩。、
采用零压缩后:
2001:0db8::1428:57ab
除了零压缩外,还引入了一个简化规则------单个段内的前导零可以省略。
比如:
原地址:2001:0db8:0000:0000:0000:0000:1428:57ab
省略段内导零:2001:db8:0:0:0:0:1428:57ab (0db8 ---> db8)
零压缩:2001:db8::1428:57ab
常见的IPv6类型的地址表示特征:
|--------|--------------------|--------------------------|--------------------|
| 地址类型 | 前缀特征 | 典型表示示例 | 用途 |
| 全球单播地址 | 通常以 2001: 2002: 开头 | 2001:db8::1 | 互联网上的全局唯一地址 |
| 链路本地地址 | 以 fe80::/10 为前缀 | fe80::a00:27ff:fe12:3456 | 同一链路内通信,无需路由 |
| 环回地址 | 固定为 ::1/128 | ::1 | 本机测试,等价于 127.0.0.1 |
| 组播地址 | 以 ff 开头 | ff02::1 | 一对多通信 |
| 任播地址 | 与单播地址格式相同 | 2001:db8::2 | 一对最近通信 |
单播:一对一通信,一个节点对一个节点。
组播:一对多通信,一个节点对多个节点。
任播:一对最近通信,一个节点对一组节点中,拓扑最近的节点通信。
5.IPv4到IPv6的过渡技术
因为目前IPv4还是广泛使用,从IPv4过渡到IPv6仍需不少时间,所以就出现了从IPv4到IPv6过渡的技术。主要有两种,一种是双协议栈,另一种是隧道技术。
双协议栈指主机或路由器同时运行 IPv4 和 IPv6 两套协议栈,设备会同时配置 IPv4 地址和 IPv6 地址,能够根据数据包的地址类型,来自动选择对应的协议栈进行数据包的封装、转发和解析。但是由于需要同时维护双地址和双协议栈,配置成本较高。
隧道技术的核心是 "封装转发":从IPv6网络进入到IPv4网络前,将 IPv6 数据包作为负载,封装到 IPv4 数据包中,让 IPv6 数据包能在 IPv4 骨干网中传输;到达目的网络后,再解开 IPv4 封装,还原出 IPv6 数据包。
6.IPv4和IPv6的区别
- 地址空间的差异,这一点是IPv4和IPv6的核心差异。IPv4它只有43亿个公网地址,现在已经枯竭,但是IPv6的地址数,足以给地球上的每一粒沙分配一个唯一地址,从根本上解决了地址枯竭的问题。
- 首部设计上,IPv4的首部因为包含了可选字段,所以它的长度是不固定的,在20到60字节之间。这样的话,路由器在转发时,需要计算IPv4的首部长度,但是IPv6的首部长度是固定的,40个字节,所以路由去不需要计算IPv6首部的长度,自然也就少了这部分的消耗。
- IPv6首部,去除了校验和字段。如果使用的是IPv4,那么每一个数据包到达路由器后,路由器都需要计算校验和。但是IPv6认为,链路层和传输层已经有了校验机制,不需要重复校验,所以相对于IPv4来说,路由器要消耗更少的CPU。
- IPv4支持广播,会向数据链路内的所有主机发送数据包,容易引发广播风暴。到了IPv6,取消了广播,取而代之的是多播。只有主动加入多播组的主机才会收到数据包,避免了带宽的浪费。
- 在安全上,IPv4中,IPsec是可选项,但是IPv6强制内置IPsec,所有数据包都加密传输,安全性要优于IPv4。
7.结语
IPv4:网络协议IPv4
完