Sockets IPv6:Is`:';相当于“0.0.0.0';当监听连接时?
当我检查的输出时,我在Sockets IPv6:Is`:';相当于“0.0.0.0';当监听连接时?,sockets,ipv6,Sockets,Ipv6,当我检查的输出时,我在0.0.0.0以及:上看到侦听器 我相信监听0.0.0.0上的端口等同于监听任何网络适配器上的端口,至少我对Windows socket API的记忆中是这样说的 对我来说,::在IPv6术语中意味着等效,因此[:]:49156上的侦听器将在所有IPv6网络适配器上侦听端口49156,其中as[::1]:1434将仅在IPv6环回适配器上侦听端口1434 这是正确的吗 我假设IPv6侦听端点仅适用于IPv6适配器。也就是说,如果适配器只有IPv4地址,那么[:]:49156
0.0.0.0
以及:
上看到侦听器
我相信监听0.0.0.0
上的端口等同于监听任何网络适配器上的端口,至少我对Windows socket API的记忆中是这样说的
对我来说,::
在IPv6术语中意味着等效,因此[:]:49156
上的侦听器将在所有IPv6网络适配器上侦听端口49156
,其中as[::1]:1434
将仅在IPv6环回适配器上侦听端口1434
这是正确的吗
我假设IPv6侦听端点仅适用于IPv6适配器。也就是说,如果适配器只有IPv4地址,那么[:]:49156
上的侦听器将不会接收到与它的端口49156
的连接
另外,是否有人注意到GetActiveTcpListeners()
的MSDN文章错误地声明了返回的对象“包括除侦听状态之外的所有TCP状态的侦听器。”?IPv6地址::“未明确指定,不是有效地址,也不等同于IPv4地址“0.0.0”。见:
虽然你的措辞有误导性,而且到目前为止是错误的,但我认为你的意思是说对了:未指明的地址
0:0:0:0:0
a.k.a.::
意味着相应的端口没有监听特定的地址,而是监听所有的地址-基本上与IPv4中0.0.0
所说的相同
我相信监听0.0.0.0
上的端口等同于监听任何网络适配器上的端口,至少我对Windows socket API的记忆中是这样说的
这是正确的0.0.0.0
定义为INADDR\u ANY
,可用于侦听所有本地IPv4适配器
对我来说,::
在IPv6术语中意味着等效,因此::49156
上的侦听器将侦听所有IPv6网络适配器上的端口49156
,其中as::1:1434
将仅是IPv6环回适配器上的端口1434
从倾听的角度来看,是的:
定义为INADDR6\u ANY
,可用于侦听所有本地IPv6适配器<代码>::1定义为INADR6\u环回
我假设IPv6侦听端点仅适用于IPv6适配器。也就是说,如果适配器只有IPv4地址,那么::49156
上的侦听器将不会接收到与它的端口49156
的连接
这取决于听众。仅IPv6侦听器无法在IPv4适配器上侦听,也无法接受IPv4客户端。但是,绑定到
INADDR6\u ANY
的侦听器可以绑定到IPv4和IPv6适配器并同时接受IPv4和IPv6客户端,其中IPv4地址由accept()
、wsaaaccept()
和getpeername()
as报告。在Linux上,这仅由setsockoptIPv6\u v6
控制,请参见手册页。也可在Windows上查看。参见。在IPv4中,0.0.0.0是“未指定地址”(RFC1122),其含义和目的与:“或”::0”基本相同。
2.5.2 The Unspecified Address
The address 0:0:0:0:0:0:0:0 is called the unspecified address. It
must never be assigned to any node. It indicates the absence of an
address. One example of its use is in the Source Address field of
any IPv6 packets sent by an initializing host before it has learned
its own address.`
The unspecified address must not be used as the destination address
of IPv6 packets or in IPv6 Routing Headers. An IPv6 packet with a
source address of unspecified must never be forwarded by an IPv6
router.