Utilisation de SIO_ADDRESS_LIST_SORT

Le SIO_ADDRESS_LIST_SORT IOCTL permet aux développeurs d’applications de trier une liste d’adresses de destination IPv6 et IPv4 afin de déterminer la meilleure adresse disponible pour établir une connexion. Le SIO_ADDRESS_LIST_SORT IOCTL est pris en charge sur Windows XP et versions ultérieures.

Sur Windows Vista et versions ultérieures, la fonction CreateSortedAddressPairs prend une liste fournie d’adresses IP potentielles de destination, associe les adresses de destination avec les adresses IP locales de l’ordinateur hôte et trie les paires en fonction de la paire d’adresses la mieux adaptée à la communication entre les deux homologues. La fonction CreateSortedAddressPairs doit être utilisée au lieu de la SIO_ADDRESS_LIST_SORT IOCTL sur Windows Vista et versions ultérieures.

Les sections suivantes décrivent les considérations relatives à l’utilisation de SIO_ADDRESS_LIST_SORT.

Paramètres

La mémoire tampon passée à SIO_ADDRESS_LIST_SORT est une structure SOCKET_ADDRESS_LIST . Chaque SOCKET_ADDRESS de la liste doit être au format SOCKADDR_IN6.

Le SIO_ADDRESS_LIST_SORT IOCTL trie les adresses IPv6 et IPv4 sur Windows Vista et versions ultérieures. Toutes les adresses IPv4 de la liste à trier doivent être au format d’adresse IPv6 mappée IPv4. Pour plus d’informations sur le format d’adresse IPv6 mappé iPv4, consultez Sockets double pile.

Sur Windows Server 2003 et Windows XP, SIO_ADDRESS_LIST_SORT trie uniquement les adresses IPv6. Les adresses IPv4 au format d’adresse IPv6 mappée ne sont pas prises en charge.

En sortie, le membre iAddressCount de la structure SOCKET_ADDRESS_LIST peut être plus petit que sur l’entrée si le code IOCTL détermine que certaines adresses de destination ne sont pas valides.

Détermination du tri

L’ordre de tri des adresses IPv6 pour le SIO_ADDRESS_LIST_SORT IOCTL est basé sur la table de stratégie de préfixe. La table de stratégie de préfixe est configurée à l’aide de l’utilitaire de ligne de commandeNetsh.exe . Les extraits de code de ligne de commande suivants illustrent les commandes de configuration de la table de stratégie de préfixeNetsh.exe de base :

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

Notes

Sur Windows Server 2003 et Windows XP, la première commande netsh répertoriée ci-dessus était la suivante. Toutes les autres commandes associées sont identiques.

 

netsh interface ipv6 show prefixpolicy

L’ordre des adresses est également déterminé par un algorithme décrit dans le RFC 3484 on Default Address Selection for Internet Protocol version 6 (IPv6) publié par l’IETF. Pour plus d’informations, consultez https://www.ietf.org/rfc/rfc3484.txt. (Cette ressource ne peut être disponible qu’en anglais.)

Le SIO_ADDRESS_LIST_SORT IOCTL trie les adresses du meilleur au pire et renseigne sin6_scope_id membres, si nécessaire. Pour les adresses locales de site, SIO_ADDRESS_LIST_SORT remplit l’id d’étendue ou supprime l’adresse.

Le SIO_ADDRESS_LIST_SORT IOCTL ignore l’adresse source liée au socket et trie uniquement en fonction de la liste d’adresses de destination passée en tant que paramètre.

La fonction CreateSortedAddressPairs doit être utilisée au lieu du SIO_ADDRESS_LIST_SORT IOCTL sur Windows Vista et versions ultérieures. La fonction CreateSortedAddressPairs retourne une liste de paires d’adresses qui contient une adresse source locale et une adresse de destination. Cela fournit une application à l’adresse source appropriée à utiliser pour chaque adresse de destination. Une application peut également filtrer les résultats en recherchant une adresse source spécifique. dans les résultats.

Spécifications

Le SIO_ADDRESS_LIST_SORT IOCTL est défini dans le fichier d’en-tête Winsock2.h . Dans le Kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et SIO_ADDRESS_LIST_SORT IOCTL est défini dans le fichier d’en-tête Ws2def.h. Notez que le fichier d’en-tête Ws2def.h est automatiquement inclus dans Winsock2.h et ne doit jamais être utilisé directement.

Le SIO_ADDRESS_LIST_SORT IOCTL est pris en charge sur Windows XP et versions ultérieures.

CreateSortedAddressPairs