首页/网络/IP 与子网速查/IPv4 映射地址 ::ffff:0:0/96 与兼容地址的废弃
IPv6 与下一代网络42 条

IPv4 映射地址 ::ffff:0:0/96 与兼容地址的废弃

::ffff:a.b.c.d 供双栈程序内部表示 IPv4 节点(如绑定 :: 的套接字收到 v4 连接时);不可路由。IPv4 兼容地址 ::a.b.c.d 已废弃(RFC 4291),不要再在任何场景使用。

IP 与子网速查网络更新于 2026-10-13

地址映射形式是什么

双栈主机在同一个套接字上同时接受两种协议的连接时,内部需要一个统一的表示方式:把四层地址写成六层地址的特定前缀形式。这个前缀占据高位九十六位,低三十二位保存原来的四层地址。它只是程序内部的表示,不应出现在网络报文里。

兼容形式为什么被废弃

早期还有另一种把四层地址直接嵌在低位的形式,本意是用于自动隧道。实际部署中发现它与真实六层地址难以区分,容易造成误解与错误路由,标准后来明确将其废弃。今天写文档或配置时不应再使用那种写法。

基本信息

映射前缀高位九十六位为固定形式,低三十二位保存原地址
映射范围规模低三十二位可表示全部四层地址
可否路由不可,仅用于主机内部表示
兼容形式标准已废弃,不应再使用
地址库表现映射地址被判定为非全局,需还原后再判断

典型使用场景

  • 读日志:服务日志里出现带前缀的四层地址,说明流量来自四层连接,还原后才是真实来源
  • 排查双栈监听:监听在通配地址上时,两种协议的连接会落到同一个端口,需要知道如何区分
  • 写访问控制:遇到映射形式先还原成四层地址再匹配规则,直接匹配前缀往往不生效
  • 协议栈行为分析:理解主机为何只需一个通配监听就能同时服务两种协议
  • 代码解析:解析日志与地址字段时调用地址库的还原方法,而不是手工截取字符串
  • 文档规范:写方案时明确区分内部表示形式与真实地址,避免读者误配

两种形态

两种形态
映射形式:高位前缀 + 四层地址,仅主机内部使用,不可路由
兼容形式:四层地址直接嵌在低位,标准已废弃,不要再用
# 看到带前缀的地址,先还原出四层地址再判断来源与策略

观察与还原

观察与还原
ss -lntp | grep ':::'      # 通配监听,两种协议连接共用
python -c "import ipaddress as ip; a=ip.ip_address('::ffff:192.0.2.1'); print(a.ipv4_mapped, a.is_global)"
# 输出 192.0.2.1 False  还原后为四层地址,且被判定为非全局
python -c "import ipaddress as ip; print(ip.ip_address('::192.0.2.1').ipv4_mapped)"
# 输出 None,说明该写法不是映射形式(已废弃的兼容写法)

两种写法对照

写法名称现状用途
前缀加四层地址映射形式现行使用双栈程序内部表示
低位直接嵌入兼容形式已废弃历史自动隧道方案
解析结果还原后为四层地址地址库可识别日志与规则处理
可否路由均不可—不得出现在链路上
地址库会把映射形式判定为非全局地址,因此不要把它直接投入访问控制或地址清单匹配,先还原成四层地址再按原有规则判断才是正确做法。
这种前缀形式的地址不应出现在链路上:如果抓到它的报文,说明存在实现缺陷或人为构造的异常流量,需要结合来源与设备版本一起分析。

易错点

  • 把映射形式的前缀当可路由地址写进访问控制规则,规则不会按预期匹配,先还原再判断
  • 在新系统或新文档中继续使用已废弃的兼容写法,造成实现不一致与排障困难
  • 手工截取字符串来还原地址,遇到压缩写法时解析出错,应使用地址库的还原方法

数据来源与参考

  • RFC 4291 §2.5.5(IPv4 映射/兼容)
  • RFC 4038(应用迁移)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌