IPv6网络协议

目录

1.引言

2.地址转换技术NAT

2.1地址转换技术的分类

2.2地址转换技术PAT

3.IPv6首部

4.IPv6地址表示

5.IPv4到IPv6的过渡技术

6.IPv4和IPv6的区别

7.结语


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。

  1. SNAT:修改的是数据包的源IP地址;
  2. DNAT:修改的是数据包的目的IP地址。

其中,SNAT分类中的PAT技术,是实际互联网中使用最广泛的地址转换技术,也是缓解IPv4地址枯竭的关键技术,下一小节再谈。

SNAT和DNAT的对比:

|------|--------------------|-------------------|
| 特性 | SNAT | DNAT |
| 修改字段 | 修改数据包的源IP | 修改数据包的目的IP |
| 核心用途 | 让内网设备共享公网 IP 访问互联网 | 让公网设备访问内网的服务器 |
| 触发方式 | 由内网设备主动发起请求触发 | 需管理员手动配置端口转发的映射关系 |

SNAT转换过程:

  1. 内网设备发起请求:内网设备(如 192.168.1.100)向公网服务器(如 223.5.5.5)发送数据包,数据包到达 NAT 路由器。
  2. 地址转换:NAT 路由器将数据包的源 IP 替换为自身公网 IP(如 202.100.10.5),并在 NAT 映射表中记录 192.168.1.100<--->202.100.10.5的对应关系。
  3. 公网返回数据:公网服务器将响应数据包发送到 202.100.10.5。
  4. 反向转换再转发:NAT 路由器查询映射表,将数据包的目的 IP 替换为 192.168.1.100,然后再转发给内网设备。

DNAT的转换过程和SNAT的过程差不多,不过公网到内网的映射表是静态的,也就是说,这张表是由人为写入的。

2.2地址转换技术PAT

PAT,它不仅修改数据包的源IP,还把端口也改了,借助TCP/UDP的端口号(0-65535)来实现多个内网设备复用同一个公网IP(它们的端口不一样),然后通过不同的端口号就可以区分不同的回话,进而大幅的缓解了公网IP的消耗。

转换过程:

  1. 网关的公网接口只有一个公网 IP:202.100.10.5。
  2. 内网设备 A(192.168.1.10:50001)向公网服务器(223.5.5.5:80)发送 HTTP 请求,数据包到达网关。
  3. 网关修改数据包的源 IP 为 202.100.10.5,同时修改源端口为一个未被使用的公网端口(如 60001),并在映射表中记录:
  4. 内网:192.168.1.10:50001 <---> 公网:202.100.10.5:60001
  5. 内网设备 B(192.168.1.11:50002)发起另一个请求,网关分配新的公网端口(如 60002),映射表项为:
  6. 内网:192.168.1.11:50002 <---> 公网:202.100.10.5:60002。
  7. 公网服务器响应设备 A 的请求,数据包目的地址为 202.100.10.5:60001,网关查询映射表,将目的 IP 和端口改为 192.168.1.10:50001,转发到内网。

通过端口来区分不同的连接,理论上,一个公网IP可以被6万多个内网设备复用。

地址转化技术PAT,把公网IP节省到了极致,但同时也给网关带来了性能上的开销,因为它需要维护映射表。

3.IPv6首部

  1. 版本:用来标识IP协议版本,因为是IPv6,所以该字段固定为6。通过上图的协议首部,就可以看出IPv4和IPv6不兼容了。
  2. 通信量类:相当于IPv4的服务类型字段,高优先级的数据包(比如语音、视频)会被路由器优先转发。
  3. 流标号:IPv6 新增核心字段,用于标识属于同一流的数据包。流:指从源地址到目的地址的一系列数据包(如一个视频流),路由器可基于流标号做快速转发,无需逐包解析,提升传输效率。
  4. 有效载荷长度:除了基本首部之外的长度。
  5. 下一个首部:标识紧接在基本首部之后的首部类型,可能是 扩展首部(如路由选项首部)或 上层协议(如 TCP=6、UDP=17)。
  6. 跳数限制:等价于IPv4的TTL生存时间,只是语义上更明确。
  7. 源地址:128位的源IP地址,表示数据包从哪来。
  8. 目的地址: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的区别

  1. 地址空间的差异,这一点是IPv4和IPv6的核心差异。IPv4它只有43亿个公网地址,现在已经枯竭,但是IPv6的地址数,足以给地球上的每一粒沙分配一个唯一地址,从根本上解决了地址枯竭的问题。
  2. 首部设计上,IPv4的首部因为包含了可选字段,所以它的长度是不固定的,在20到60字节之间。这样的话,路由器在转发时,需要计算IPv4的首部长度,但是IPv6的首部长度是固定的,40个字节,所以路由去不需要计算IPv6首部的长度,自然也就少了这部分的消耗。
  3. IPv6首部,去除了校验和字段。如果使用的是IPv4,那么每一个数据包到达路由器后,路由器都需要计算校验和。但是IPv6认为,链路层和传输层已经有了校验机制,不需要重复校验,所以相对于IPv4来说,路由器要消耗更少的CPU。
  4. IPv4支持广播,会向数据链路内的所有主机发送数据包,容易引发广播风暴。到了IPv6,取消了广播,取而代之的是多播。只有主动加入多播组的主机才会收到数据包,避免了带宽的浪费。
  5. 在安全上,IPv4中,IPsec是可选项,但是IPv6强制内置IPsec,所有数据包都加密传输,安全性要优于IPv4。

7.结语

IPv4:网络协议IPv4


相关推荐
小小ken2 小时前
ubuntu添加新网卡时,无法自动获取IP原因及解决办法
linux·网络·tcp/ip·ubuntu·dhcp
Xの哲學2 小时前
Linux 软中断深度剖析: 从设计思想到实战调试
linux·网络·算法·架构·边缘计算
一个学Java小白2 小时前
LV.8 网络编程开发及实战(上)
网络
夏侯羽2 小时前
HTTPS 是怎么工作的
网络协议·http·https
科技块儿2 小时前
提升广告转化ROI的关键一步:IP数据赋能广告定向
网络·网络协议·tcp/ip
捷米研发三部2 小时前
EtherNet/IP转Profibus DP协议转换网关实现汇川PLC与西门子PLC通讯在矿山与冶金的应用案例
网络·网络协议
YYYing.3 小时前
【计算机网络 | 第五篇】计网之链路层
网络·网络协议·tcp/ip·计算机网络
一代明君Kevin学长3 小时前
记录一个上手即用的Spring全局返回值&异常处理框架
java·网络·python·spring
Xの哲學3 小时前
Linux自旋锁深度解析: 从设计思想到实战应用
linux·服务器·网络·数据结构·算法