端口如何与IPv6协同工作?

传统的IPv4虚线四进制表示法将地址与端口用冒号分开,如在回送接口上的web服务器的示例中所示:

127.0.0.1:80 

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

 ::1 

如何用IPv6地址/端口端点的文本表示来表示端口(或其function等同物)?

他们的工作和今天几乎一样。 但是,请确保您的IP包含[]

例如: http://[1fff:0:a88:85a3::ac1f]:8001/index.html : http://[1fff:0:a88:85a3::ac1f]:8001/index.html : http://[1fff:0:a88:85a3::ac1f]:8001/index.html : http://[1fff:0:a88:85a3::ac1f]:8001/index.html : http://[1fff:0:a88:85a3::ac1f]:8001/index.html :: http://[1fff:0:a88:85a3::ac1f]:8001/index.html : http://[1fff:0:a88:85a3::ac1f]:8001/index.html

维基百科有关IPv6的一篇不错的文章: http : //en.wikipedia.org/wiki/IPv6#Addressing

IPv6中使用的协议与IPv4中的协议相同。 这两个版本之间唯一改变的是寻址scheme,DHCP [DHCPv6]和ICMP [ICMPv6]。 所以基本上,TCP / UDP相关的任何东西,包括端口范围(0-65535)都保持不变。

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

我不知道你在做什么。 TCP和UDP层是相同的结构。 顾名思义,IPV6是关于增强的IP层,而不是TCP或UDP层。

他们是一样的,不是吗? 现在我对自己失去信心,但我真的认为IPv6只是一个寻址改变。 TCP和UDP仍然是在IPv4下处理的。

我很确定端口只有在tcp和udp的一部分。 所以即使您使用新的IP协议也是如此

Wikipeida 指出 ,IPv6地址的语法包含冒号,并且具有防止固定长度parsing的简短forms,因此您必须用[]分隔地址部分。 这完全解释了奇怪的parsing错误。

(摘自彼得·沃恩 编辑原始问题。)

我想说的最好的参考是URL中用于定义[] 的用法的文字IPv6地址的格式 。

另外,如果是编程和代码,特别是Java,我会build议这读Inet6Address java / net / URL定义的Inet4地址在Inet6内涵和其他情况下使用详细介绍。 对于我来说,IPv4映射地址的forms:: ffff:wxyz,对于用IPv6地址来表示一个IPv4地址也解决了我的问题。 它允许本地程序在与IPv4和IPv6节点通信时使用相同的地址数据结构和相同的套接字。 亚马逊云Linux框默认设置就是这种情况。