1

getaddrinfo()を使用してすべてのアドレス(IPv4およびIPv6)を読み取りたい。私の質問は、getaddrinfo()がリスト内のIPv6アドレスの後にIPv4を返すかどうかです。AF_UNSPECをgetaddrinfo()に渡し、デュアルスタックを使用していると仮定します。

4

3 に答える 3

2

すでにCeladaによってコメントされているように、RFC 3484は、返される結果の推奨される順序を示しています。

特にGNUlibcの場合、順序は/etc/gai.confローカルポリシーによって制御され、カスタマイズできます。

于 2012-07-04T10:11:47.513 に答える
1

答えはここにあります:

https://www.rfc-editor.org/rfc/rfc6724

オペレーティングシステムは、この標準または以前のバージョンに準拠する必要があります(ほとんどの場合準拠しています)。アプリケーションが特定のアドレスにバインドされていない場合、カーネルは宛先アドレスをgetaddrinfo()選択するときに送信元アドレスを選択します。

デフォルトでは、グローバルネイティブIPv6アドレスがすべてのIPv4アドレスよりも優先されます。

于 2014-03-31T09:50:21.727 に答える
0

それは実際にはネームサーバーとOSに依存します。getaddrinfo()は、ネームサーバーからDNS解決情報をフェッチします。ネームサーバーがIPv4アドレスの前にIPv6アドレスを注文すると、IPv4アドレスの前にIPv6アドレスが返されます。

デフォルトでは、IPv6アドレスの方がIPv4アドレスよりも優先されます。@Pavel Simerdaは次のように書いています。「デフォルトでは、グローバルネイティブIPv6アドレスがすべてのIPv4アドレスよりも優先されます。」

于 2014-06-12T09:17:17.263 に答える