web-dev-qa-db-fra.com

Pourquoi n'y a-t-il que 65 535 ports et en aurons-nous jamais plus?

Je comprends le raisonnement d'origine derrière 65535 ports par adresse IP: c'est le nombre le plus élevé qui peut être représenté par un nombre de 16 bits ou de 2 octets, et il n'était pas concevable que les ordinateurs puissent jamais épargner plus que pour quelque chose d'aussi banal que les ports, ou quelque chose comme ça. Les ports peuvent en fait avoir besoin de plus de 1 bit chacun, car chaque port peut être ouvert, bloqué, "furtif" ou autres, mais pour une raison quelconque, les gens disent toujours que les ports fonctionnent avec un nombre de 16 bits. Si j'ai une partie de ce problème, dites-le-moi.

Cependant, dans un monde où la plupart des ordinateurs sont 32 bits et ont plus qu'assez de mémoire/d'espace pour épargner quelques ports supplémentaires, pourquoi avons-nous encore autant de ports? Nous sommes en train de passer à HTML5, HTTP2.0, IPv6 et à d'autres versions définitivement différentes, alors pourquoi pas la même chose avec les ports? Beaucoup d'entre eux autorisent beaucoup plus de 16 bits; en fait, IPv6 autorise 16 octets! Je comprends que beaucoup d'entre eux sont dans des années, voire des décennies, mais pourquoi tout le bavardage sur ces mises à niveau, et même pas un coup d'œil sur plus de ports (dont moi, un amateur, ai entendu parler)?

Les deux seules raisons que je peux voir pour garder 65535 ports sont de laisser les grandes entreprises conserver leurs anciens systèmes hérités, ce qui n'est guère une bonne raison, et la montée des systèmes embarqués, dont beaucoup sont minuscules, avec des quantités minuscules d'espace, de mémoire, etc. , bientôt sur Internet, dont beaucoup font partie de l'Internet des objets. Avec ces systèmes embarqués, nous pourrions peut-être leur laisser moins de ports, et lorsqu'un gros ordinateur de bureau essaie de se connecter à un, on pourrait dire qu'il est doux, car le système embarqué bébé ne peut utiliser que ~ 65000 ports.

D'un autre côté, je peux penser à quelques bonnes raisons d'avoir plus de ports, la plupart ayant à voir avec NAT et d'autres systèmes où plus d'une adresse IP privée doit communiquer avec le reste de Internet utilisant la même adresse IP publique, comme la montée en puissance de VM sur le même ordinateur, toutes utilisant la même adresse IP. Techniquement, chaque VM adresse IP possède 65 535 ports, mais en réalité, ils ont tous utiliser les ports de l'hôte. Dans des cas comme celui-ci, ces systèmes pourraient manquer de ports assez rapidement. Un autre cas spécifique est le NAT de classe opérateur, où une adresse IP publique est traduite en plusieurs adresses IP privées et au moins une de ces adresses privées. est traduit dans un autre ensemble d'adresses encore plus privées. Encore une fois, chaque adresse IP privée a techniquement son propre ensemble de 65 535 ports, mais c'est une illusion, car lorsque les données sortent sur Internet public, elles utilisent les ports IP publics . Je ne suis pas sûr que nous ayons nécessairement besoin de NAT, en soi, mais nous aurons besoin de quelque chose comme ça t o conserver les adresses même avec les quantités massives que IPv6 nous donnera. Lorsque nous avons des cas comme ceux-ci, pouvons-nous même nous permettre de ne pas avoir plus de 65 535 ports?

Alors, pourquoi n'avons-nous encore que 65 535 ports, et est-il prévu d'en autoriser davantage?

P.S. Je sais qu'il y a techniquement 65 536 ports par adresse IP, mais le port 0 n'est généralement pas utilisé pour quoi que ce soit.

21
trysis

Le port fait partie du protocole de couche 4 utilisé - TCP ou UDP , pour la plupart; ce n'est pas lié à l'adressage de la mémoire des ordinateurs réels, donc ne vous laissez pas confondre par l'adressage de la mémoire 32 ou 64 bits des systèmes d'exploitation modernes.

Les en-têtes de ces protocoles de couche 4 ont structures spécifiquement définies , pour lesquelles exactement 16 bits sont utilisés pour les ports source et de destination. Sans modifications révolutionnaires de la compatibilité des protocoles de couche 4 dont dépend tout Internet, le nombre de ports ne peut pas être modifié. Même le plus récent SCTP a la contrainte de 16 bits sur les ports.

Gardez à l'esprit que ces protocoles identifient le trafic en fonction non seulement du port de réception, mais également de l'IP de réception et du port et de l'IP d'envoi; vous êtes limité à 65535 écoutant TCP (mais vous n'en avez pas autant), et vous êtes limité à 65535 connexions à un service spécifique sur un système distant spécifique (plus faible en pratique) , voir ports éphémères ), il est donc rare de courir dans la limite de ces protocoles, sauf si un système crée beaucoup de connexions à un système distant spécifique.

29
Shane Madden