编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 网络工具 / IPv6展开压缩

IPv6展开压缩

IPv6 地址展开和压缩。

输入
结果

这个工具能做什么

这个工具做两件互为反向的事:把 IPv6 地址展开成完整的 8 组、每组 4 位十六进制的标准形式,或者把完整地址压缩成带 :: 的简写。IPv6 地址有 128 位,写全了是 39 个字符,日常配置、看路由表、核对防火墙规则时,同一个地址可能出现压缩写法、去掉前导零的写法、大小写混用等好几种样子,肉眼判断两个地址是不是同一个很容易出错。把地址统一成完整形式再逐组比对,或者反过来压成最短写法方便记录,是排查这类问题最省事的办法。整个转换在浏览器本地完成,地址不会上传。

压缩和展开遵循 RFC 4291 和 RFC 5952 的规则。展开时,把 :: 还原成若干组 0000,使总数补足 8 组,再把每组不足 4 位的用前导零补齐,比如 2001:db8::1 展开为 2001:0db8:0000:0000:0000:0000:0000:0001。压缩时反过来走两步:先去掉每组的前导零(0db8 变 db8,0000 变 0),再用 :: 替换掉最长的一段连续全零组。这里有两条硬性约束:一个地址里 :: 只能出现一次,否则无法确定它代表几组零;当有多段等长的全零时,按 RFC 5952 取最靠前的那一段,且单独一组零不建议用 :: 代替。规范写法还要求十六进制字母用小写,这也是本工具输出的默认形式。

实际用得最多的是核对和归一化。比如你在两处配置里分别看到 fe80::1 和 fe80:0000:0000:0000:0000:0000:0000:0001,展开后一眼就能确认是同一个链路本地地址;再比如接口返回或日志里记录的是压缩形式,而 ACL 里写的是完整形式,先都转成完整形式再做字符串比对,就不会漏判。反过来,当你要把一串又长又全的地址填进文档、命令行或聊天窗口时,压缩成 2001:db8::ff00:42:8329 这样的最短写法更好读也更少敲错。写脚本批量比对地址时,先统一成完整形式再比较,能避开写法差异带来的假阴性。

几个容易踩的边界:地址后面常带前缀长度(如 /64)或接口作用域标识(如 %eth0),这些不属于地址本身,转换时应保留原样、不参与压缩;内嵌 IPv4 的写法如 ::ffff:192.168.1.1,其中最后 32 位是点分十进制,展开时要把它并入十六进制表示(::ffff:c0a8:0101)。还要注意 :: 只能表示连续的零组,不能用来省略中间某一位;单个 :: 代表未指定地址(全零),::1 是回环地址,别和压缩规则混淆。本工具只做展开与压缩的形式转换,不校验地址是否可路由、属于哪类地址段,也不做 DNS 解析,如需判断地址类型请另配相应工具。

IPv6展开压缩是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“ipv6展开”、“ipv6压缩”、“ipv6简写”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

展开和压缩到底有什么区别?
展开是把地址还原成 8 组、每组 4 位的完整形式,补全所有前导零和被 :: 省略的零组;压缩是反向操作,去掉前导零并用 :: 替换最长的连续全零段,得到最短写法。两者表示的是同一个地址,只是形式不同。
为什么一个 IPv6 地址里只能有一个 ::?
因为 :: 代表一段长度不定的连续全零组,靠总组数补足到 8 组来推算它的长度。如果出现两个 ::,就无法确定每个各代表几组零,地址会产生歧义,所以规范只允许出现一次。
::1 展开后是什么样子?
::1 是回环地址,展开为 0000:0000:0000:0000:0000:0000:0000:0001,即前 7 组全零、最后一组为 1。单独的 :: 则代表未指定地址,展开是全零。
地址带的 /64 前缀或 %eth0 会被处理吗?
不会参与压缩展开。/64 是前缀长度、%eth0 是接口作用域标识,都不属于 128 位地址本体,工具会原样保留,只对地址部分做转换。
输出为什么用小写字母,能不能大写?
RFC 5952 规定规范写法的十六进制字母使用小写,所以默认输出小写。大小写不影响地址含义,A 和 a 是同一个值,如需大写可自行转换,比对时建议先统一大小写。

相关工具

查看全部「网络工具」工具 →

相关名词解释