IPv6下端口如何工作?

191

传统的IPv4点分十进制表示法使用冒号分隔地址和端口,就像这个在环回接口上的Web服务器示例:

127.0.0.1:80

但是使用IPv6表示法,地址本身可以包含冒号。例如,这是环回地址的简写形式:

::1

在IPv6地址/端口终点的文本表示中,如何表示端口(或它们的功能等效物)?

6个回答

267

43

IPv6使用的协议与IPv4中使用的协议相同。两个版本之间唯一变化的是地址方案,DHCP [DHCPv6]和ICMP [ICMPv6]。因此,基本上所有与TCP/UDP相关的内容,包括端口范围(0-65535),都保持不变。

编辑: TCP中0号端口是保留端口,但确实存在。请参见RFC793


12

维基百科指出,IPv6地址的语法中包含冒号,并且具有短格式,不能进行固定长度解析,因此必须用 [] 来限定地址部分。这完全避免了奇怪的解析错误。

(摘自一篇编辑,由Peter Wone修改原始问题)


8

我非常确定端口只在TCP和UDP中起作用。因此,即使您使用新的IP协议,情况也完全相同。


1
DCCP和SCTP也有端口,但由于额外的关联标识符,SCTP中的端口略有不同。 - james woodyatt

7

我认为最好的参考资料是URL中文本IPv6地址格式,其中定义了[]的使用方法。

此外,如果涉及到编程和代码,特别是Java,我建议阅读Inet6Address类java/net/URL定义,其中详细介绍了在Inet6上下文中使用Inet4地址和其他情况。对于我的情况,IPv4映射地址形式::ffff:w.x.y.z用于表示IPv4地址,这也解决了我的问题。它允许本地程序在与IPv4和IPv6节点通信时使用相同的地址数据结构和套接字。这在Amazon云Linux盒子的默认设置中是适用的。


7

它们是相同的,不是吗?现在我对自己失去了信心,但我真的认为IPv6只是一个寻址变化。TCP和UDP仍然像在IPv4下一样被寻址。


4
这不仅仅是地址更改,它应该会带来一些酷炫的功能(例如全局组播)。但是,对于上层来说它是透明的。 - Tarnay Kálmán
5
这只是一个地址更改。你说的是地址分配(addressing)。但会让人感到担忧或困惑的原因在于网络设计中将“addressing”视为地址,“services”视为端口号。但在TCP或UDP中,两者缺一不可,所以大多数人都试图使套接字级别的寻址正常工作,并且不理解为什么人们一直在创造或更改分隔符:空格、点、冒号、井号?因此,我能理解IPv6会让人们感到担忧。 - benc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接