_ _ l’évolutivité des ports

L’option de socket d' _ _ extensibilité de port so active l’évolutivité de port local pour un Socket.

_ _ l’évolutivité des ports

0x3006

L’option de socket d' _ _ extensibilité de port so permet l’évolutivité de port local en permettant l’optimisation de l’allocation de port en allouant des ports génériques plusieurs fois pour différentes paires de ports d’adresse locale sur un ordinateur local.

Notes

Remarque : sur les plateformes où _ _ l’évolutivité des ports et la _ réutilisation _ UNICASTPORT sont prises en charge, préférez utiliser _ _ UNICASTPORT.

Les environnements de serveur proxy présentent des problèmes d’évolutivité en raison de la disponibilité limitée du port local. Pour contourner ce cas, vous pouvez ajouter d’autres adresses IP à la machine. Toutefois, par défaut, les ports génériques utilisés avec la fonction de liaison sont limités à la taille de la plage de ports dynamiques sur l’ordinateur local (jusqu’à 64 Ko de ports, mais généralement moins), quel que soit le nombre d’adresses IP sur l’ordinateur local. Pour contourner ce dysfonctionnement, l’application doit conserver son propre pool de ports avec la réservation de port ou à l’aide de l’heuristique.

pour éviter que chaque application nécessitant une évolutivité gère son propre pool de ports et qu’elle permet une plus grande évolutivité tout en conservant la compatibilité des applications, Windows Server 2008 a introduit l’option de socket d' _ _ évolutivité de port pour optimiser l’allocation de port générique. L’allocation de port est optimisée en permettant à une application d’allouer des ports génériques pour chaque paire adresse locale et port unique. Par conséquent, si un ordinateur local possède quatre adresses IP, il est possible d’allouer jusqu’à 256 K ports génériques (64 ports × 4 adresses IP) par des demandes de fonction de liaison de caractères génériques.

Lorsque l’option de socket d' _ _ extensibilité de port so est définie sur un socket et qu’un appel à la fonction Bind est effectué pour une adresse spécifiée et un port générique (le paramètre Name est défini avec une adresse spécifique et un port de 0), Winsock alloue un port pour l’adresse spécifiée. Cette allocation sera basée sur toutes les adresses IP et ports/par adresse possibles sur l’ordinateur local. Si un port générique est acquis à l’aide de l’option de mise à l' _ _ échelle du port , ce port ne peut pas être alloué par un autre socket sans l’option de mise à l' _ _ échelle du port . Cette restriction est en place afin d’éviter les problèmes de compatibilité descendante avec les applications qui supposent qu’un port local générique ne peut pas être réutilisé. Notez que cela signifie que les applications qui acquièrent un grand nombre de ports à l’aide de pour _ _ l’évolutivité des ports peuvent priver des applications héritées de ports. Si tous les ports éphémères disponibles ont été acquis pour au moins une adresse avec l' _ _ évolutivité des ports , aucune allocation de port générique n’est alors possible sans l’option de Socket.

Pour avoir un effet, l’option de mise à l' _ _ échelle du port doit être définie avant l’appel de la fonction de liaison . Vous trouverez ci-dessous un exemple de l’utilisation de cette méthode sur un ordinateur avec deux adresses :

  • La fonction Socket est appelée par un processus pour créer un Socket.
  • La fonction setsockopt est appelée pour activer l’option de socket de mise à l' _ _ échelle du port, sur le socket nouvellement créé.
  • La fonction Bind est appelée pour effectuer une liaison sur l’une des adresses IP de l’ordinateur local et le port 0.
  • La fonction Connect est ensuite appelée pour se connecter à une adresse IP distante. Le socket est utilisé par l’application en fonction des besoins.
  • Une fonction Socket est appelée par le même processus (éventuellement un thread différent) pour créer un deuxième Socket.
  • La fonction setsockopt est appelée pour activer l’option de socket de mise à l' _ _ échelle du port, sur le second Socket nouvellement créé.
  • La fonction Bind est appelée avec la deuxième adresse IP et le port 0 de l’ordinateur local. Même lorsque tous les ports ont été alloués précédemment, cet appel réussit, car plusieurs adresses IP sont disponibles sur l’ordinateur local et l’option de socket de mise à l' _ _ échelle du port so a été définie sur les deux sockets dans le même processus.
  • La fonction Connect est ensuite appelée pour se connecter à une adresse IP distante. Le deuxième Socket est utilisé par l’application en fonction des besoins.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Aucun pris en charge
Serveur minimal pris en charge
Windows Serveur 2008 [ applications de bureau uniquement]
En-tête
Ws2def. h

Voir aussi

getsockopt

setsockopt

Options de socket de socket SOL _

Options de socket