Il y a 65536 ports pour chaque système du réseau, et chaque connexion ou envoi / réception utilisera l’un de ceux-ci.
Ma question est: que se passe-t-il si nous avons 65536 + 1 les liaisons?!
Je sais que cela ne se produit pas normalement, mais je suis curieux de savoir comment les systèmes d'exploitation le gèrent.
networking
operating-systems
Omid Golparvar
la source
la source
Réponses:
Veuillez noter qu'un système peut gérer plus de 65 536 connexions simultanées, car ils le font ne pas nécessairement utiliser chacun un port séparé.
Une connexion TCP ou un flux UDP est défini par le 4-tuple:
Ainsi, même si vous avez un serveur Web avec une seule adresse IP et un seul logiciel serveur HTTP à écouter uniquement sur le port 80, il pourrait en théorie gérer les connexions 65536. par adresse IP du client qui s'y connecte . Donc, connexions 64Ki de l'adresse IP du client 1, plus connexions 64Ki de l'adresse IP du client 2, etc.
Donc, les protocoles supportent, en première approximation, 2 48 connexions / flux vers un seul port TCP ou UDP sur une seule adresse IPv4. Considérez à la fois les protocoles TCP et UDP, ainsi que l'espace d'adressage IPv4 et l'espace d'adressage cosmique / comique d'IPv6, et vous pouvez voir que les protocoles eux-mêmes ne risquent pas d'être jamais la source du nombre de connexions simultanées qu'un hôte peut gérer.
De même, rien dans les protocoles TCP ou UDP n'empêche un ordinateur client d'utiliser un seul port source sur une seule adresse IP pour établir plusieurs connexions sortantes avec plusieurs adresses et ports de serveur. Parfois, les API de réseau d’un système d’exploitation ne facilitent pas cette tâche, mais il est important de se rappeler que, par exemple, la vénérable vieille API "[BSD] Sockets" n’est qu’une des API pour TCP et UDP. TCP et UDP peuvent avoir des fonctionnalités qui ne sont pas exposées par l'API Sockets traditionnelle.
Ainsi, le nombre de connexions TCP ou de flux UDP simultanés qu'un hôte donné peut gérer est limité non pas par les numéros de port, mais par les ressources système telles que l'espace RAM et le temps CPU nécessaires pour suivre toutes ces connexions et les gérer. De plus, les détails spécifiques à la mise en œuvre d'un système d'exploitation peuvent imposer des limites artificielles. Par exemple, dans la philosophie Unix "tout est un fichier", il peut exister un descripteur de fichier pour chaque connexion TCP ou flux UDP. Si votre noyau Unix a une limite au nombre de descripteurs de fichier qu'il peut suivre, cette limite de descripteur de fichier est une limite artificielle au nombre de connexions TCP ou de flux UDP simultanés que votre noyau peut gérer.
la source