87 网址始终具有以下格式: <protocol>://<host>[:<port>]/[<path>][#<hash>] 问题在于IPv6使用冒号,就像端口和主机的分隔符一样,例如: 2001:db8:1f70::999:de8:7648:6e8 但是,如果这是主机,并且我想通过端口100上的HTTP连接到主机,该怎么办? http://2001:db8:1f70::999:de8:7648:6e8:100/ 问题是最后一个冒号。由于用双冒号(在1f70和999之间)省略了零,因此未知':100'是否属于IP或端口号。我们怎么知道呢? ipv6 url — 右折 source
118 在这种情况下,标记是将IPv6 IP号编码在方括号中: http://[2001:db8:1f70::999:de8:7648:6e8]:100/ 这是RFC 3986第3.2.2节:主机 由Internet协议文字地址版本6 [RFC3513]或更高版本标识的主机通过将IP文字括在方括号(“ [”和“]”)中来区分。这是URI语法中唯一允许方括号字符的地方。预期将来还有尚未定义的IP文字地址格式,实现可以使用可选的版本标志来显式指示这种格式,而不是依靠启发式确定。 — sysadmin1138 source 38 值得指出的是,括号不是可选的。这是浏览器可以识别数字IPv6地址的唯一明确机制。 — tylerl 端口不应该放在括号内吗? — jayarjo 2 @jayarjo不,因为这里使用方括号来区分包含冒号的IP地址和以冒号与IP地址分隔的端口之间的歧义。 — sysadmin1138