传统的IPv4点分十进制表示法使用冒号分隔地址和端口,就像这个在环回接口上的Web服务器示例:
127.0.0.1:80
但是使用IPv6表示法,地址本身可以包含冒号。例如,这是环回地址的简写形式:
::1
在IPv6地址/端口终点的文本表示中,如何表示端口(或它们的功能等效物)?
它们的工作方式与今天几乎相同。然而,请确保在您的IP周围包含[]
。
例如: http://[1fff:0:a88:85a3::ac1f]:8001/index.html
维基百科有一篇关于IPv6的非常好的文章:http://en.wikipedia.org/wiki/IPv6#Addressing
IPv6使用的协议与IPv4中使用的协议相同。两个版本之间唯一变化的是地址方案,DHCP [DHCPv6]和ICMP [ICMPv6]。因此,基本上所有与TCP/UDP相关的内容,包括端口范围(0-65535),都保持不变。
编辑: TCP中0号端口是保留端口,但确实存在。请参见RFC793。
维基百科指出,IPv6地址的语法中包含冒号,并且具有短格式,不能进行固定长度解析,因此必须用 [] 来限定地址部分。这完全避免了奇怪的解析错误。
(摘自一篇编辑,由Peter Wone修改原始问题)
我非常确定端口只在TCP和UDP中起作用。因此,即使您使用新的IP协议,情况也完全相同。
我认为最好的参考资料是URL中文本IPv6地址格式,其中定义了[]的使用方法。
此外,如果涉及到编程和代码,特别是Java,我建议阅读Inet6Address类和java/net/URL定义,其中详细介绍了在Inet6上下文中使用Inet4地址和其他情况。对于我的情况,IPv4映射地址形式::ffff:w.x.y.z用于表示IPv4地址,这也解决了我的问题。它允许本地程序在与IPv4和IPv6节点通信时使用相同的地址数据结构和套接字。这在Amazon云Linux盒子的默认设置中是适用的。
它们是相同的,不是吗?现在我对自己失去了信心,但我真的认为IPv6只是一个寻址变化。TCP和UDP仍然像在IPv4下一样被寻址。