Verwenden von SIO_ADDRESS_LIST_SORT

Mit der SIO_ADDRESS_LIST_SORT IOCTL können Anwendungsentwickler eine Liste von IPv6- und IPv4-Zieladressen sortieren, um die beste verfügbare Adresse für das Herstellen einer Verbindung zu ermitteln. Die SIO_ADDRESS_LIST_SORT IOCTL wird unter Windows XP und höher unterstützt.

Unter Windows Vista und höher übernimmt die CreateSortedAddressPairs-Funktion eine angegebene Liste potenzieller IP-Zieladressen, koppelt die Zieladressen mit den lokalen IP-Adressen des Hostcomputers und sortiert die Paare nach dem Adresspaar, das am besten für die Kommunikation zwischen den beiden Peers geeignet ist. Die Funktion CreateSortedAddressPairs sollte anstelle der SIO_ADDRESS_LIST_SORT IOCTL unter Windows Vista und höher verwendet werden.

In den folgenden Abschnitten werden Nutzungsüberlegungen für SIO_ADDRESS_LIST_SORT beschrieben.

Parameter

Der an SIO_ADDRESS_LIST_SORT übergebene Puffer ist eine SOCKET_ADDRESS_LIST-Struktur . Jede SOCKET_ADDRESS in der Liste muss SOCKADDR_IN6 Format aufweisen.

Die SIO_ADDRESS_LIST_SORT IOCTL sortiert sowohl IPv6- als auch IPv4-Adressen unter Windows Vista und höher. Alle IPv4-Adressen in der Liste, die sortiert werden sollen, müssen im IPv4-zugeordneten IPv6-Adressformat vorliegen. Weitere Informationen zum IPv4-zugeordneten IPv6-Adressformat finden Sie unter Dual-Stack Sockets.

Unter Windows Server 2003 und Windows XP sortiert SIO_ADDRESS_LIST_SORT nur IPv6-Adressen. IPv4-Adressen im IPv4-zugeordneten IPv6-Adressformat werden nicht unterstützt.

Bei der Ausgabe kann das iAddressCount-Element der SOCKET_ADDRESS_LIST-Struktur kleiner sein als bei der Eingabe, wenn der IOCTL-Code feststellt, dass einige Zieladressen ungültig sind.

Sortierermittlung

Die Sortierreihenfolge für IPv6-Adressen für die SIO_ADDRESS_LIST_SORT IOCTL basiert auf der Präfixrichtlinientabelle. Die Präfixrichtlinientabelle wird mithilfe des BefehlszeilenprogrammsNetsh.exe konfiguriert. Die folgenden Befehlszeilenausschnitte veranschaulichen grundlegende Netsh.exe Präfixrichtlinientabellenkonfigurationsbefehle:

netsh interface ipv6 show prefixpolicies
netsh interface ipv6 add prefixpolicy ::/96 3 4
netsh interface ipv6 delete prefixpolicy ::/96
netsh interface ipv6 set prefixpolicy ::/96 3 4

Hinweis

Unter Windows Server 2003 und Windows XP lautete der erste oben aufgeführte netsh-Befehl wie folgt. Alle anderen verwandten Befehle sind identisch.

 

netsh interface ipv6 show prefixpolicy

Die Adressreihenfolge wird auch durch einen Algorithmus bestimmt, der in der von der IETF veröffentlichten RFC 3484 zur Standardadressauswahl für Internetprotokoll Version 6 (IPv6) beschrieben ist. Weitere Informationen finden Sie unter https://www.ietf.org/rfc/rfc3484.txt. (Diese Ressource ist möglicherweise nur auf Englisch verfügbar.)

Die SIO_ADDRESS_LIST_SORT IOCTL sortiert Adressen von den besten bis zum schlechtesten und füllt bei Bedarf sin6_scope_id Mitglieder aus. Bei standortlokalen Adressen füllt SIO_ADDRESS_LIST_SORT entweder die Bereichs-ID aus oder entfernt die Adresse.

Die SIO_ADDRESS_LIST_SORT IOCTL ignoriert die an den Socket gebundene Quelladresse und sortiert nur nach der Zieladressenliste, die als Parameter übergeben wird.

Die CreateSortedAddressPairs-Funktion sollte anstelle der SIO_ADDRESS_LIST_SORT IOCTL unter Windows Vista und höher verwendet werden. Die CreateSortedAddressPairs-Funktion gibt eine Liste von Adresspaaren zurück, die eine lokale Quelladresse und eine Zieladresse enthält. Dadurch wird einer Anwendung die richtige Quelladresse bereitgestellt, die für jede Zieladresse verwendet werden kann. Eine Anwendung kann die Ergebnisse auch filtern, indem sie nach einer bestimmten Quelladresse sucht. in den Ergebnissen.

Anforderungen

Die SIO_ADDRESS_LIST_SORT IOCTL ist in der Winsock2.h-Headerdatei definiert. Im Microsoft Windows Software Development Kit (SDK), das für Windows Vista und höher veröffentlicht wurde, wurde die organization von Headerdateien geändert und SIO_ADDRESS_LIST_SORT IOCTL in der Ws2def.h-Headerdatei definiert ist. Beachten Sie, dass die Ws2def.h-Headerdatei automatisch in Winsock2.h enthalten ist und nie direkt verwendet werden sollte.

Die SIO_ADDRESS_LIST_SORT IOCTL wird unter Windows XP und höher unterstützt.

CreateSortedAddressPairs