S'il y a une limite sur le nombre de ports qu'une machine peut avoir et qu'un socket ne peut se lier qu'à un numéro de port inutilisé, comment les serveurs rencontrant des quantités extrêmement élevées (plus que le nombre de ports max) de requêtes gèrent-ils cela? Est-ce que cela se fait simplement en distribuant le système, c'est-à-dire de nombreux serveurs sur plusieurs machines?
29
Vous vous trompez - l'unicité de la prise est déterminée par quatre facteurs:
Lorsque vous offrez des services réseau, 1. et 2. sont généralement statiques (par exemple IP 10.0.0.1, port 80) mais à moins que vous n'attendiez des milliers de connexions d'un seul client (ou d'une seule passerelle NAT), vous n'allez pas pousser le limites pour les combinaisons possibles de 3. et 4. avant de manquer de ressources locales.
Ainsi, même si pratiquement un client n'utilisera pas un port déjà utilisé pour une connexion pour ouvrir une connexion vers une adresse IP de destination différente, l'épuisement du numéro de port sera le moindre de vos problèmes pour presque toutes les applications - que ce soit sur le serveur ou côté client.
Le problème est très réel avec les passerelles NAT (routeurs) desservant les clients avec un grand nombre de connexions sortantes ouvertes (par exemple, des torrents) - là, vous verrez l'épuisement du numéro de port après que le pool de ports disponible pour NAT a été vidé. Dans ce cas, la passerelle NAT n'est pas en mesure de créer des associations supplémentaires, coupant ainsi efficacement les clients d'Internet.
la source
La question était de savoir comment gérer les grands nombres de connexions (> 64k). Les deux méthodes les plus courantes sont:
Ajouter plus de serveurs, ce qui augmente le nombre d'adresses src / dst et de tuples de numéro de port. Il existe plusieurs façons de partager la charge sur plusieurs serveurs; Le round robin DNS en est un; il y en a d'autres
Déployez un «NAT de qualité transporteur» (ce qu'un ami, de manière dérisoire et correcte, à mon avis, appelle un «NAT de qualité inférieure»). Il s'agit essentiellement d'un NAT d'un NAT. Cela a de très mauvaises implications pour les applications, mais c'est ce que font certains grands fournisseurs lorsqu'ils manquent d'espace IPv4 et / ou de numéros de port, et / ou qu'ils ne veulent pas passer à IPv6.
la source
(more than the max port number)
.