web-dev-qa-db-ja.com

IPv6:接続をリッスンするときの「::」は「0.0.0.0」と同等ですか?

IPGlobalProperties.GetActiveTcpListeners() の出力を調べると、_0.0.0.0_および_::_のリスナーが表示されます。

_0.0.0.0_のポートをリッスンすることは、任意のネットワークアダプターのポートをリッスンすることと同等であると思います。少なくとも、WindowsソケットAPIの私のメモリはそうだと言っています。

_::_はIPv6用語で同等のものを意味するので、_[::]:49156_のリスナーは、_49156_であるすべてのIPv6ネットワークアダプターのポート_[::1]:1434_をリッスンします。 IPv6ループバックアダプターのみでポート_1434_になります。

これは正しいです?

IPv6リッスンエンドポイントはIPv6アダプターにのみ適用されると思います。つまり、アダプターにIPv4アドレスしかなかった場合、そのポートへの接続_49156_は、_[::]:49156_のリスナーによって受信されませんか?

また、GetActiveTcpListeners()に関するMSDNの記事で、返されたオブジェクトが「リスナーをすべてのTCP状態exceptリッスン状態。 "?

15
Xharlie

_0.0.0.0_のポートをリッスンすることは、任意のネットワークアダプターのポートをリッスンすることと同等であると思います。少なくとも、WindowsソケットAPIの私のメモリはそうだと言っています。

それは正しいです。 _0.0.0.0_は_INADDR_ANY_として定義され、すべてのローカルIPv4アダプターでlistenするために使用できます。

_::_はIPv6用語で同等のものを意味するので、_:::49156_のリスナーは、_49156_であるすべてのIPv6ネットワークアダプターのポート_::1:1434_をリッスンします。 IPv6ループバックアダプターのみでポート1434になります。

聞くという観点から、そうです。 _::_は_INADDR6_ANY_として定義され、すべてのローカルIPv6アダプターでlistenするために使用できます。 _::1_は_INADDR6_LOOPBACK_として定義されます。

IPv6リッスンエンドポイントはIPv6アダプターにのみ適用されると思います。つまり、アダプターにIPv4アドレスしかなかった場合、そのポートへの接続_49156_は、_:::49156_のリスナーによって受信されませんか?

それはリスナーに依存します。 IPv6のみのリスナーは、IPv4アダプターをlistenできず、IPv4クライアントを受け入れることができません。ただし、_INADDR6_ANY_にバインドされた dual-stack リスナーは、IPv4およびIPv6アダプターにバインドして、IPv4アドレスとIPv6クライアントの両方を受け入れることができます。IPv4アドレスはaccept()によって報告されます。 WSAAccept()、およびgetpeername() as IPv4-mapped IPv6 addresses

12
Remy Lebeau

あなたの言い回しは誤解を招くものであり、今のところ間違っていますが、私はあなたが正しいことを言うつもりだと思います:不特定のアドレス0:0:0:0:0:0:0:0別名::は、それぞれのポートが特定のアドレスをリッスンしていないが、それらすべてをリッスンしていることを意味します。基本的に同じです0.0.0.0 IPv4の場合は言う。

9
glglgl

IPv6アドレス「::」は特に指定されておらず、有効なアドレスでもありません。また、IPv4アドレス「0.0.0.0」と同等でもありません。 RFC 3513、インターネットプロトコルバージョン6(IPv6)アドレス指定アーキテクチャ、セクション2.5.2を参照してください

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.
4
Ron Maupin