2010-10-07 8 views
1

En TCP/IP, le numéro de port est spécifié par un champ de 16 bits, ce qui donne un total de 65536 numéros de port. Cependant, la plage inférieure (ne sait pas vraiment jusqu'où cela va) est réservée au système et ne peut pas être utilisée par l'application. En supposant que 60 000 numéros de port sont disponibles, il devrait être plus que suffisant pour la plupart des applications nework. Cependant, les jeux MMORPG ont souvent des dizaines de milliers d'utilisateurs simultanément connectés simultanément. Cela m'a fait me demander: Y at-il des situations où une application réseau peut manquer de ports? Comment cette limitation peut-elle être travaillée?Existe-t-il des applications où le nombre de ports réseau n'est pas suffisant?

+1

La plage inférieure passe à 1023 sur de nombreux systèmes de type UNIX au moins. – gspr

Répondre

2

Vous n'avez pas besoin d'un port par connexion.

Une connexion est identifiée de manière unique par un nombre de (adresse hôte, port hôte, adresse distante, port distant). Il est probable que l'adresse IP de votre hôte soit la même pour chaque connexion, mais vous pouvez toujours desservir 100 000 clients sur une seule machine avec un seul port. (En théorie: vous rencontrerez des problèmes, sans rapport avec les ports, avant cela.)

+0

Ah, je m'en doutais, mais je voulais juste m'assurer. Merci! – gablin

1

La ressource de démarrage canonique pour ce problème est Dan Kegels C10K page from 1999.

La plage inférieure à laquelle vous faites référence est probablement la plage inférieure à 1024 sur la plupart des systèmes de type Unix. Cette plage est réservée aux applications privilégiées. Une application exécutée en tant qu'utilisateur normal ne peut pas commencer à écouter les ports inférieurs à 1024.

Une plage supérieure est souvent utilisée par le système d'exploitation pour les ports de retour et NAT lors de la création de connexions. En bref, en raison du fonctionnement du protocole TCP, les ports peuvent être épuisés si un grand nombre de connexions sont établies et ensuite fermées. La limitation peut être atténuée dans une certaine mesure en utilisant des connexions de longue durée, une pour chaque client.

En HTTP, cela signifie utiliser HTTP 1.1 et keep-alive.