八个十六进制组表示原文示例地址。连续三个全零组合并为一次双冒号,前导零与大小写写法同时规范化。地址所表示的一百二十八位保持不变。

IPv6 文本规范化保留地址,端点上下文仍须另外处理

IPv6 地址包含一百二十八位,通常写成八组十六进制数字。文本可以省略组内前导零,并用一次 :: 代替连续全零组。这些规则缩短写法而不丢失地址。RFC 4291 定义有效形式,RFC 5952 推荐一致的显示与交换形式。语法是否有效,和拼写是否符合推荐规范,是相关但不同的问题,不能用一个判断替代另一个。 坏掉的样子 直接比较原始字符串,可能把同一个地址当成多个身份。大写字母、前导零和展开的零组都能改变文本,却不改变底层位值,从而拆散资产记录,或破坏应用原本想进行的地址比较。应先使用适合输入类型的库解析,再比较地址值。仅转换成小写,不会处理所有零组和压缩差异,因此不能称为完整规范化。 压缩本身也有限制。:: 最多出现一次,否则无法确定各个省略段的长度。推荐表示应压缩最长连续零组;长度相同时选择最前一组,并且不要压缩单个零字段。一般 IPv6 语法允许部分推荐显示规则不采用的写法。规范化工具应区分有效但非首选的形式与真正非法输入,而不是把两者都报告成相同错误。 地址也未必构成完整端点。URL 中的 IPv6 字面量需要括号,将地址内部冒号与端口分隔符区别开。链路本地目的地还可能需要区域标识,以选择正确接口范围。如果没有明确比较策略就删除区域,或把映射 IPv4 地址扁平化,可能丢失调用方建立正确连接所需的信息。字符串变短,不代表端点含义仍完整。 文本规范化保留地址值,端点的其他组成仍须保留。两列按组展示,写出完整地址时用冒号分隔。规则与示例均来自原文,本草稿未重跑解析示例。 快速验证 将脚本保存为 check-ipv6-text.py,使用 Python 3.12 或更新版本执行 python3 check-ipv6-text.py。保留的旧审阅记录曾在 Python 3.12.14 原样运行此脚本,只调用标准库解析,不产生网络流量。程序比较有效变体、拒绝错误输入并检查端点组成,没有配置示例地址、发送 IPv6 报文或证明这些地址具有可用路由。解析验证与网络可达性在这里明确分开: ...

十一月 30, 2026 · 1 分钟 · XB Field Notes