URL 始终具有以下格式:
<protocol>://<host>[:<port>]/[<path>][#<hash>]
Run Code Online (Sandbox Code Playgroud)
问题是 IPv6 使用冒号,就像端口和主机的分隔符一样,例如:
2001:db8:1f70::999:de8:7648:6e8
Run Code Online (Sandbox Code Playgroud)
但是,如果这是主机,并且我想通过端口 100 上的 HTTP 连接到它呢?
http://2001:db8:1f70::999:de8:7648:6e8:100/
Run Code Online (Sandbox Code Playgroud)
问题是最后一个冒号。由于用双冒号(在 1f70 和 999 之间)省略了零,因此不知道 ':100' 属于 IP 还是端口号。我们怎么知道这个?
sys*_*138 128
在这种情况下,表示法是将 IPv6 IP 编号编码在方括号中:
http://[2001:db8:1f70::999:de8:7648:6e8]:100/
Run Code Online (Sandbox Code Playgroud)
那是RFC 3986,第 3.2.2 节:主机
由 Internet 协议文本地址(版本 6 [RFC3513] 或更高版本)标识的主机通过将 IP 文本括在方括号(“[”和“]”)中来区分。这是 URI 语法中唯一允许使用方括号字符的地方。预计未来尚未定义的 IP 文字地址格式,实现可以使用可选版本标志来明确指示这种格式,而不是依赖于启发式确定。
归档时间: |
|
查看次数: |
34875 次 |
最近记录: |