IPv6协议
IPv6(Internet Protocol version 6)是下一代互联网协议,旨在解决IPv4地址枯竭等问题,并为现代网络需求提供更高效、灵活的基础架构。以下是IPv6的核心内容介绍:
目录
1. IPv6的核心特点
2. IPv6 vs IPv4 关键区别
3. IPv6的优势
4. IPv6地址类型
IP和组播MAC的映射关系
1. IPv6的核心特点
地址空间极大扩展:128位地址长度(IPv4为32位),拥有无限大地址空间,彻底解决地址不足问题。
地址表示法:8组4位十六进制数,用冒号分隔(2001:0db8:85a3:0000:0000:8a2e:0370:7334
),支持简写(如2001:db8::1
)。
简写规则:1.十六进制前导零可以省略
2.连续出现多个0000的地方可以简写为::,但是一个地址中只能出现一次(如果多处省略会引发歧义)
简化的报文头结构:固定40字节基础包头,IPv6取消了IPv4报头中的选项字段(如校验和),提升路由效率。引入了多种扩展头部(Extension Headers),在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。
当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:
IPv6基本报头
逐跳选项扩展报头(Hop-by-Hop header)
目的选项扩展报头(Destination options header)
路由扩展报头(Routing header)
分片扩展报头(Fragment header)
授权扩展报头
封装安全有效载荷扩展报头(esp header)
目的选项扩展报头(指那些将被分组报文的最终目的地处理的选项。)(Destination options header)
上层扩展报头(Upper-layer header)
安全性:
IPv6协议本身有ESP/AH安全协议的,提供安全性,提供端到端加密与认证。
支持自动地址配置:
- 无状态地址自动配置:设备可通过路由器广播信息自动生成全球唯一地址(无需DHCP服务器),但是缺乏DNS的设置能力。
- 有状态地址自动配置:需要DHCP服务器
改进的多播与任播:
- 组播(Multicast):替代IPv4广播,减少网络拥塞。
2. 任播(Anycast):多个节点共享同一地址,请求路由到最近节点(如DNS根服务器)。
允许新旧协议共存:ipv6和ipv4的环境可以同时存在并使用。
2. IPv6 vs IPv4 关键区别
特性 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位(约43亿地址) | 128位(近乎无限地址) |
地址配置 | 手动或DHCP | SLAAC(自动配置)或DHCPv6 |
安全性 | IPsec为可选扩展 | IPsec原生支持 |
包头结构 | 可变长度,包含校验和 | 固定包头,无校验和 |
广播 | 支持广播 | 取消广播,由组播替代 |
3. IPv6的优势
海量地址:可以满足物联网(IoT)、5G、智能设备爆发式增长对IP地址的需求。
高效路由:层次化地址结构(如全球路由前缀+子网+接口ID)优化路由聚合。
低延迟:简化包头减少处理开销,提升传输效率。
增强移动性:设备切换网络时无需更改IP。
更好的QoS:TC字段流标签字段支持优先级标记,适应实时应用(如视频通话)。
即插即用:无状态自动获取地址,不需要DHCP服务器。
4. IPv6地址类型
单播地址
- ::/128:未指定地址
- ::1/128:本地环回地址
- FE80::/10:链路本地地址,仅用于同链路内部通讯,由 MAC 地址使用 EUI-64 算法计算出接口标识符自动产生
- FEC0::/10:站点本地地址,类似ipv4的私有地址
- 2000::/3:全球单播地址,类似IPv4的公网地址全球为由IANA分配,可在整个Internet环境传播
EUI-64算法介绍(怎么生成地址)
1.把 MAC 地址转换为二进制表示。
2.在 MAC 地址的第三段和第四段之间插入 FFFE,也就是二进制的 11111111 11111110,使整个地址变成 8 段。
3.设置 U/L 位,把从左至右第7 位(二进制)设置为 1。
4.把地址转换回十六进制,每 4位十六进制数字合并为一段,就得到了 4段的十六进制接口标识符。
组播地址:
格式:FF00::/8
常见的组播地址
组播地址 | 范围 | 含义 | 描述 |
---|---|---|---|
FF01::1 | 节点 (Node) | 所有节点 | 在本地接口范围的所有IPv6节点(设备) |
FF01::2 | 节点 (Node) | 所有路由器 | 在本地接口范围的所有IPv6路由器 |
FF02::1 | 本地链路 (Link-Local) | 所有节点 | 在本地链路范围内的所有IPv6节点 |
FF02::2 | 本地链路 (Link-Local) | 所有路由器 | 在本地链路范围内的所有IPv6路由器 |
FF02::5 | 本地链路 (Link-Local) | OSPF路由器 | 所有OSPFv3路由器(用于OSPF协议通信) |
FF02::6 | 本地链路 (Link-Local) | OSPF DR路由器 | 所有OSPFv3的指定路由器(DR) |
FF02::9 | 本地链路 (Link-Local) | RIP路由器 | 所有RIPng路由器(用于RIP协议通信) |
FF02::13 | 本地链路 (Link-Local) | PIM路由器 | 所有PIM(协议无关组播)路由器 |
FF05::2 | 站点 (Site) | 所有路由器 | 在一个站点范围内的所有IPv6路由器 |
IP和组播MAC的映射关系
IPv4 组播地址到 MAC 地址的映射
字段 | 规则 | 示例 |
---|---|---|
前 24 位 | 固定为 01:00:5e (十六进制) | IPv4 组播地址 224.0.0.1 → MAC 地址 01:00:5e:00:00:01 |
第 25 位 | 固定为 0 (忽略 IPv4 地址的高 4 位) | |
后 23 位 | 从 IPv4 组播地址的后 23 位直接复制(IPv4 地址的 28 位组播空间 中取后 23 位) | - IPv4 地址 224.0.0.1 (二进制 1110 0000.0000 0000.0000 0000.0000 0001 )- 后 23 位为 000 0000.0000 0000.0000 0001 → 转换为 00:00:01 |
IPv6 组播地址到 MAC 地址的映射
字段 | 规则 | 示例 |
---|---|---|
前 16 位 | 固定为 33:33 (十六进制) | IPv6 被请求节点组播地址 ff02::1:ff00:1 → MAC 地址 33:33:ff:00:00:01 |
后 32 位 | 从 IPv6 被请求节点组播地址的后 32 位直接复制 | - IPv6 单播地址 2001:db8::1 - 对应的被请求节点组播地址为 ff02::1:ff00:1 - 后 32 位为 ff00:0001 → 转换为 ff:00:00:01 |
被请求节点组播地址:
地址格式:FF02::1:FF00:/104 + 单播地址的后24bit
主要用途
MAC地址解析
NS 报文:邻居请求,Type=135,一般用于解析 MAC 地址请求,建立 ND 邻居
NA 报文:邻居公告,Type=136,一般用于应答本机 MAC 地址,响应 ND 邻居建立
字段 | NS(Neighbor Solicitation) | NA(Neighbor Advertisement) |
---|---|---|
用途 | 主动请求目标IPv6地址对应的MAC地址(类似IPv4的ARP请求) | 响应NS报文,告知请求方自己的MAC地址(类似IPv4的ARP应答) |
源IP | 发送方的IPv6地址(单播地址,或未配置地址时使用:: ) | 发送方的IPv6地址(单播地址) |
目的IP | 目标的被请求节点组播地址(格式ff02::1:ffXX:XXXX ) | 目标的IPv6单播地址(即NS报文中的SIP) |
源MAC | 发送方接口的MAC地址 | 发送方接口的MAC地址 |
目的MAC | 目标的被请求节点组播地址映射的MAC地址(格式33:33:ffXX:XXXX ) | 目标的MAC地址(直接单播回复,使用目标接口的MAC地址) |
ND 协议的功能
解析 MAC 地址:类似于 ARP 协议。
邻居不可达检测:ND 协议解析了对方 MAC 地址后,就会为该主机建立一个邻居关系,并维护该关系。
地址重复检测:防止 IPv6 地址冲突。
无状态地址自动配置:在无需 DHCP 的情况下,就能使主机自动获得全球单播地址。
路由器重定向:对数据包进行路由重定向。
任播地址:
从单播地址中分配,只能用作目的地址,通过用于一个设备到一个对象组之间的通信,没有单独的地址空间,使用单播地址的地址空间。
作用:一般用于DNS中