例如,考虑一下这个 ipv4 映射的 ipv6 地址:::ffff:7f7f:7f7f
。在我测试过的所有浏览器的地址栏中提交 http://[::ffff:7f7f:7f7f]
时,格式均保留:
但是,netip
包(更具体地说,netip.addr
的 string
方法)通过以 ipv4 点十进制表示法写入其最低有效 32 位来格式化相关地址,如下所示: ::ffff:127.127 .127.127
。
package main import ( "fmt" "log" "net/netip" ) func main() { ip, err := netip.ParseAddr("::ffff:7f7f:7f7f") if err != nil { log.Fatal(err) } fmt.Println(ip) // ::ffff:127.127.127.127 }
(游乐场)
我需要复制浏览器地址栏格式 ipv4 映射的 ipv6 地址的方式。
有没有办法让 netip
格式化 ::ffff:7f7f:7f7f
,而不是 ::ffff:127.127.127.127
,而是 ::ffff:7f7f:7f7f
?
首先,请记住,不允许在网络上使用 IPv4 映射的 IPv6 地址,如 IANA IPv6 特殊用途地址注册中心,请注意,它们不能用作源地址或目标地址,不能可以转发或全局路由,并且它们由 IP 本身保留它们不是实际的 IPv6 地址,只是 IPv6 格式的 IPv4 地址的表示形式,以便拥有公共地址存储,例如数据库。它们不应该在您的浏览器中工作。