计算机网络---IPv6
一、IPv6地址格式:128位地址的结构与编码逻辑
IPv6的128位地址是其最核心的技术特征,不仅解决了地址短缺问题,更通过分层结构实现了高效路由与场景适配。理解其格式需要从地址分层、类型划分和编码规则三个维度展开。
1. 128位地址的分层结构
IPv6地址采用"分层路由"设计,将128位地址划分为多个功能段,类似邮政地址的"国家-城市-街道-门牌号"结构,便于路由器快速定位目标网络。典型分层如下:
-
全球路由前缀(Global Routing Prefix):由IANA(互联网编号分配机构)分配给区域互联网注册机构(如APNIC、ARIN),再逐级分配给ISP和大型企业,长度通常为48位(部分场景为32位或64位),用于全球范围的路由聚合。例如,某ISP获得的前缀为
2001:0db8:1234::/48
。 -
子网ID(Subnet ID):由企业或组织自主分配,用于划分内部子网,长度通常为16位(当全球路由前缀为48位时,48+16=64位)。例如,
2001:0db8:1234:5678::/64
中,5678
为子网ID,可支持2¹⁶=65536个子网。 -
接口标识(Interface Identifier):地址的后64位,用于标识子网内的具体设备,类似IPv4的主机位。通常由设备的MAC地址转换生成(EUI-64格式),或通过随机生成(隐私扩展模式)。
2. 地址的表示与简化规则
IPv6地址采用冒分十六进制编码,将128位分为8组,每组4位十六进制数(0-9、a-f),组间用冒号分隔。例如:2001:0db8:0000:0000:0000:0000:1428:57ab
。为降低书写复杂度,定义了两项简化规则:
-
前导零省略:每组中开头的连续零可省略,例如
0db8
保持不变,0000
简化为0
,0001
简化为1
。 -
零压缩(Zero Compression):连续多组全零(至少两组)可替换为
::
,但整个地址中仅能出现一次。例如:- 原地址
2001:0db8:0000:0000:0000:0000:1428:57ab
可简化为2001:0db8::1428:57ab
; - 链路本地地址
fe80:0000:0000:0000:020c:29ff:fe9a:5c9b
简化为fe80::020c:29ff:fe9a:5c9b
。
- 原地址
注意:零压缩不可用于单组零(如2001:1:0:1
不能写成2001:1::1
),也不可用于非连续零(如2001:0:1:0:2
不能压缩)。
3. 地址类型与具体格式
IPv6定义了三类地址,每类地址的前缀和格式都有明确规范,用于适配不同通信场景。
(1)单播地址(Unicast Address)
用于一对一通信,是最常用的地址类型,细分为:
-
全球单播地址(Global Unicast Address)
可在互联网上路由的公网地址,前缀范围为2000::/3
(即前3位为001
),包含2000::/12
至3fff::/12
等网段。其结构为:- 前3位:固定为
001
(标识全球单播类型); - 接下来的45位:全球路由前缀(由IANA分配);
- 16位子网ID;
- 64位接口标识。
示例:2001:0db8:1234:5678:020c:29ff:fe9a:5c9b
(2001:0db8:1234
为全球路由前缀,5678
为子网ID)。
- 前3位:固定为
-
链路本地地址(Link-Local Address)
仅在本地链路(如同一交换机下的设备)内有效,无法跨路由器路由,前缀为fe80::/10
(前10位为1111111010
)。其结构为:- 前10位:固定为
1111111010
; - 接下来的54位:全为0(保留位);
- 64位接口标识。
示例:fe80::020c:29ff:fe9a:5c9b
,常用于设备与本地路由器的通信(如DHCPv6请求、路由器发现)。
- 前10位:固定为
-
唯一本地地址(Unique Local Address, ULA)
类似IPv4的私有地址(如192.168.x.x
),仅在企业或组织内部使用,前缀为fc00::/7
(前7位为1111110
),细分为:fc00::/8
:由中央机构分配(暂未启用);fd00::/8
:随机生成前缀,确保全球唯一性(推荐使用)。
结构为:前7位固定,1位标志位(0),40位全局ID(随机生成),16位子网ID,64位接口标识。示例:fd12:3456:7890:abcd::1
。
(2)组播地址(Multicast Address)
用于一对多通信,仅向订阅该组的设备发送数据,前缀为ff00::/8
(前8位为11111111
)。结构为:
- 前8位:固定为
11111111
(标识组播类型); - 第9位:标志位(
0
为永久组播,1
为临时组播); - 第10-11位:范围位(
00
=接口本地,01
=链路本地,10
=站点本地,11
=全球等); - 后112位:组播组ID。
常见组播地址:
ff02::1
:链路本地范围内的所有节点;ff02::2
:链路本地范围内的所有路由器;ff05::1:3
:站点本地范围内的DHCPv6服务器。
(3)任播地址(Anycast Address)
用于"一对最近节点"通信,多个设备可共享同一任播地址,数据包会被路由到拓扑上最近(或负载最低)的设备。任播地址复用单播地址格式,通过路由配置标识(在路由表中标记为任播),不单独定义前缀。典型应用:
- DNS根服务器(13组任播地址,全球部署节点,用户请求被路由到最近节点);
- CDN边缘节点(用户访问被导向最近的缓存服务器)。
4. 接口标识的生成:EUI-64格式
IPv6地址的后64位(接口标识)通常由设备的MAC地址转换生成,采用EUI-64(扩展唯一标识符) 标准,步骤如下:
- MAC地址为48位(如
00:0c:29:9a:5c:9b
),先转换为十六进制字符串000c299a5c9b
; - 在第3字节和第4字节之间插入
fffe
,得到000c29fffe9a5c9b
(共64位); - 翻转第7位(U/L位,全局/本地标志位):原第7位为0(表示本地MAC),翻转后为1,最终得到
020c29fffe9a5c9b
。
因此,MAC地址00:0c:29:9a:5c:9b
对应的接口标识为020c:29ff:fe9a:5c9b
,结合链路本地前缀fe80::
,完整地址为fe80::020c:29ff:fe9a:5c9b
。
注:为保护隐私,现代操作系统(如Windows 10+、iOS)默认启用"隐私扩展",随机生成接口标识,而非基于MAC地址,避免设备被跟踪。
二、IPv6工作原理:从数据包结构到通信流程
IPv6的工作原理涵盖数据包格式、地址解析、自动配置、路由转发等核心环节,其设计在简化处理流程的同时,增强了灵活性与安全性。
1. IPv6数据包结构:简化头部与扩展头部
IPv6数据包由基本头部和有效载荷(含扩展头部与上层数据)组成,与IPv4相比,头部更简洁且可扩展。
(1)基本头部(Fixed Header)
固定长度为40字节,包含8个字段,所有IPv6数据包必须携带:
字段 | 长度(位) | 作用描述 |
---|---|---|
版本(Version) | 4 | 固定为6(标识IPv6协议) |
流量类别(Traffic Class) | 8 | 类似IPv4的TOS字段,用于QoS标记(如区分实时流与普通数据) |
流标签(Flow Label) | 20 | 标记特定数据流(如视频通话),路由器通过标签为流分配专用资源,保障QoS |
有效载荷长度(Payload Length) | 16 | 表示扩展头部+上层数据的总长度(字节),最大值为65535 |
下一个头部(Next Header) | 8 | 指示基本头部后紧跟的扩展头部类型(如6=TCP,17=UDP,0=逐跳选项头部) |
跳数限制(Hop Limit) | 8 | 类似IPv4的TTL,每经过一个路由器减1,为0时丢弃数据包,防止环路 |
源地址(Source Address) | 128 | 发送端的IPv6地址 |
目的地址(Destination Address) | 128 | 接收端的IPv6地址(单播/组播/任播) |
关键改进:移除IPv4的校验和字段(由上层协议如TCP/UDP负责校验),简化路由器处理逻辑;移除"选项字段",将扩展功能移至扩展头部,按需添加。
(2)扩展头部(Extension Headers)
IPv6通过扩展头部实现额外功能(如分片、加密),仅在需要时添加,避免基本头部臃肿。常见扩展头部及处理顺序如下(按路由器/接收端处理顺序):
-
逐跳选项头部(Hop-by-Hop Options Header):所有经过的路由器都需处理,用于传递网络-wide选项(如巨型数据包标记),"下一个头部"值为0。
-
路由头部(Routing Header):类似IPv4的源路由,指定数据包需经过的中间节点(如移动设备切换网络时),"下一个头部"值为43。
-
分片头部(Fragment Header):仅在源设备发送大于路径MTU的数据包时使用,记录分片偏移量和标识符,"下一个头部"值为44。与IPv4不同,IPv6路由器不执行分片,仅源设备负责。
-
认证头部(Authentication Header, AH):提供数据完整性校验和身份认证(不加密),"下一个头部"值为51,属于IPsec组件。
-
封装安全载荷头部(Encapsulating Security Payload, ESP):提供加密、完整性校验和身份认证,"下一个头部"值为50,属于IPsec组件。
-
目的地选项头部(Destination Options Header):仅由目的设备处理,传递针对接收端的选项,"下一个头部"值为60。
处理规则:路由器仅处理"逐跳选项头部"和基本头部,其他扩展头部由目的设备处理,大幅提升路由效率。
2. 地址解析:从IPv6地址到链路层地址(NDP协议)
IPv4通过ARP(地址解析协议)实现IP地址到MAC地址的映射,而IPv6采用NDP(邻居发现协议),基于ICMPv6(互联网控制消息协议v6)实现,功能更强大且安全。
NDP的核心消息类型及作用:
-
路由器请求(Router Solicitation, RS):新接入网络的设备发送组播消息(目标地址
ff02::2
),请求路由器发送网络配置信息。 -
路由器通告(Router Advertisement, RA):路由器定期(或收到RS后)发送组播消息(目标地址
ff02::1
),包含网络前缀、MTU、默认网关寿命等信息,用于设备自动配置地址。 -
邻居请求(Neighbor Solicitation, NS):设备发送组播消息(目标为"请求节点组播地址",由目标IPv6地址后24位生成),询问目标IPv6地址对应的MAC地址,格式为
ff02::1:ffxx:xxxx
(如查询fe80::1
时,目标组播地址为ff02::1:ff00:1
)。 -
邻居通告(Neighbor Advertisement, NA):收到NS的设备回复单播消息,告知自身MAC地址,完成地址解析。
-
重复地址检测(Duplicate Address Detection, DAD):设备生成IPv6地址后,发送NS消息(源地址为
::
,目标为自身地址对应的请求节点组播地址),若收到NA回复,说明地址冲突,需重新生成;否则确认地址可用。
优势:NDP使用组播而非广播,减少网络冗余;支持安全扩展(如SEcure Neighbor Discovery, SEND),通过数字签名防止ARP欺骗攻击。
3. 地址自动配置:SLAAC与DHCPv6
IPv6设备无需手动配置地址,可通过两种方式自动获取:
(1)无状态地址自动配置(SLAAC)
完全基于NDP协议,无需DHCP服务器,步骤如下:
- 设备接入网络后,生成链路本地地址(
fe80::
+EUI-64),并执行DAD确认唯一性; - 发送RS消息,请求路由器通告;
- 路由器回复RA消息,包含全球单播前缀(如
2001:0db8:1234::/64
)、前缀长度(64位)、前缀有效期等; - 设备将前缀与自身接口标识(EUI-64或随机生成)组合,生成全球单播地址,再次执行DAD;
- 以路由器的链路本地地址为默认网关,完成配置。
适用于简单网络(如家庭、小型企业),无需维护DHCP服务器。
(2)有状态地址自动配置(DHCPv6)
当网络需要集中管理地址(如固定IP分配、DNS服务器地址指定)时,使用DHCPv6,步骤如下:
- 设备通过SLAAC生成链路本地地址;
- 发送DHCPv6 solicit消息(组播到
ff02::1:2
,即DHCPv6服务器组); - DHCPv6服务器回复advertise消息,提供可用地址池信息;
- 设备选择服务器并发送request消息,请求分配地址;
- 服务器回复reply消息,包含分配的IPv6地址、子网前缀、DNS服务器、租期等;
- 设备配置地址并执行DAD。
混合模式:实际网络中常采用"无状态DHCPv6",即SLAAC生成地址,DHCPv6仅提供DNS服务器等参数,兼顾自动配置与集中管理。
4. 路由转发:IPv6路由协议与流程
IPv6的路由转发逻辑与IPv4类似(基于最长前缀匹配),但路由协议针对128位地址优化,主要包括:
-
RIPng(Routing Information Protocol Next Generation):基于距离矢量算法,适用于小型网络,最大跳数为15,更新消息使用组播地址
ff02::9
。 -
OSPFv3(Open Shortest Path First version 3):基于链路状态算法,适用于中大型网络,支持VLSM和路由聚合,使用组播地址
ff02::5
(所有OSPF路由器)和ff02::6
(DR/BDR路由器)。与OSPFv2相比,OSPFv3完全独立于IPv4,支持多实例和地址族扩展。 -
BGP4+(Border Gateway Protocol version 4+):用于自治系统间路由,支持IPv6地址族,通过MP-BGP(多协议BGP)扩展实现IPv6路由传递。
转发流程示例:
- 源设备生成IPv6数据包,封装基本头部(含源/目的地址、流标签等)和扩展头部(如需);
- 检查目的地址是否在本地链路:
- 是:通过NDP获取目的MAC地址,直接发送;
- 否:将数据包发送至默认网关(通过RA消息获取的路由器链路本地地址);
- 路由器接收数据包,检查跳数限制(减1,若为0则丢弃),根据目的地址在路由表中匹配最长前缀的路由条目;
- 按路由条目指示转发至下一跳(可能是另一路由器或目的子网);
- 重复步骤3-4,直至数据包到达目的子网;
- 目的子网的路由器通过NDP获取目的设备MAC地址,完成最后一跳转发;
- 目的设备接收数据包,按"下一个头部"字段解析扩展头部和上层数据(如TCP/UDP)。
5. 安全性:IPsec的原生集成
IPv6将IPsec(互联网协议安全)纳入标准,强制支持数据安全传输,而IPv4中IPsec为可选功能。IPsec通过AH和ESP扩展头部实现:
-
AH(认证头部):提供数据完整性校验(通过哈希算法如SHA-256)和身份认证(通过共享密钥或数字证书),但不加密数据,适用于需要防篡改但无需保密的场景(如公开公告)。
-
ESP(封装安全载荷):提供加密(如AES算法)、完整性校验和身份认证,可加密整个有效载荷(包括上层数据和扩展头部),适用于敏感数据传输(如金融交易)。
优势:IPv6的IPsec集成无需额外端口或协议,从网络层原生保障安全,避免了IPv4中IPsec配置复杂、易被防火墙拦截的问题。
IPv6通过128位地址空间解决了根本性的地址短缺问题,其技术设计围绕"高效、灵活、安全"三大目标:简化的基本头部提升路由效率,扩展头部实现功能按需扩展,NDP协议替代ARP实现更安全的地址解析,SLAAC与DHCPv6满足不同场景的自动配置需求,原生IPsec保障通信安全。