Quel est le plus grand numéro de port réseau TCP / IP autorisé pour IPv4?

406

Quel est le numéro de port le plus élevé que l'on puisse utiliser?

Nom d'utilisateur
la source

Réponses:

565

Le numéro de port est un entier 16 bits non signé, donc 65535.

Greg Hewgill
la source
216
"Hé, Jim, combien de ports devrions-nous prendre en charge?" "Il suffit de faire 16 bits pour faire bonne mesure. Personne n'aura jamais plus de quelques centaines ouverts en même temps, des sommets."
JessieArr
3
@barlop Je suggérais que lors de la première création de ports, une seule machine avec des centaines de connexions était probablement considérée comme le pire des cas. Mais aujourd'hui, les serveurs Web, les périphériques réseau, etc. peuvent définitivement se heurter aux limitations du nombre de ports. Microsoft a écrit un article Technet intéressant sur la façon de le diagnostiquer et de l'éviter dans les environnements Windows: blogs.technet.microsoft.com/askds/2008/10/29/…
JessieArr
3
@JessieArr dans ces deux cas, ce n'est pas vraiment un problème 65536, c'est un problème de A) les programmes ne libèrent pas de connexions, les laissant dans un état "WAIT" que netstat affiche combiné avec B) certaines versions de fenêtres antérieures ne allant que de 1024-5000 pour des ports dynamiques. Et même alors, qui sait si cela s'est déjà produit, car aucun programme n'a jamais pris la peine de signaler à quiconque qu'il ne pouvait pas obtenir un port dynamique, ni Windows, donc c'est un problème thorique même pas vraiment causé par le 65536 nombre. Le navigateur Web peut être le plus grand utilisateur de connexions. J'ai 297 lignes dans ma sortie netstat. Loin de 65K
barlop
3
@JessieArr La plupart des piles IP utilisent un tuple d'adresse IP source, de port source, d'adresse IP de destination et de port de destination comme identifiant unique pour les connexions. Cela signifie qu'un serveur peut avoir beaucoup beaucoup plus de connexions actives que il y a disponibles des ports ouverts, et la quantité de ports n'accorde une limitation (quoique très grand) sur le nombre de connexions ouvertes entre une source et une seule destination. Je ne pense pas que quiconque exécutera des serveurs (ou écoutera des connexions) sur plus de 65536 ports à la fois.
jduncanator
41
@JessieArr - ça va vous apprendre à essayer de faire une blague, c'est une affaire sérieuse vous savez, il n'y a pas de temps pour ce genre de choses ici: /
Matt
145

Le plus grand numéro de port est un court-métrage non signé 2 ^ 16-1: 65535

Un port enregistré est celui attribué par Internet Corporation for Assigned Names and Numbers (ICANN) à une certaine utilisation. Chaque port enregistré est compris entre 1024 et 49151.

Depuis le 21 mars 2001, l'agence de registre est l'ICANN; avant cette époque, c'était l'IANA.

Les ports dont le nombre est inférieur à ceux des ports enregistrés sont appelés ports bien connus; Les ports dont le nombre est supérieur à ceux des ports enregistrés sont appelés ports dynamiques et / ou privés.

Wikipédia: ports enregistrés

Brian R. Bondy
la source
71

Si je comprends bien, vous ne devez utiliser que jusqu'à 49151, car de 49152 à 65535 sont réservés aux ports éphémères

Smashery
la source
11
la plage de ports éphémères varie selon le système. J'utilise ubuntu linux avec un noyau générique 3.19.0-43. $ cat /proc/sys/net/ipv4/ip_local_port_rangeentraîne une sortie 32768 61000. Quant à savoir si l'on devrait ou ne devrait pas utiliser un port dans la plage de ports éphémères de son système, je soupçonne que la plupart des systèmes d'exploitation de réseau modernes, sinon tous, ignoreront un port déjà utilisé.
Keith Reynolds
37

Juste un suivi de la réponse de smashery . La plage de ports éphémères (sous Linux au moins, et je soupçonne également d'autres Unices) n'est pas fixe. Cela peut être contrôlé en écrivant à /proc/sys/net/ipv4/ip_local_port_range

La seule restriction (en ce qui concerne l'IANA) est que les ports inférieurs à 1024 sont désignés comme étant des ports bien connus. Les ports ci-dessus qui sont libres d'utilisation. Souvent, vous constaterez que les ports inférieurs à 1024 sont limités à l'accès superutilisateur, je crois pour cette raison.

Andrew Edgecombe
la source
15

Selon la RFC 793, le port est un int 16 bits non signé.

Cela signifie que la plage est comprise entre 0 et 65535.

Cependant, dans cette plage, les ports 0 - 1023 sont généralement réservés à des fins spécifiques. Je dis généralement parce que, à part le port 0, il n'y a généralement pas d'application de la réservation 0-1023. Les implémentations TCP / UDP n'imposent généralement pas de réservations autres que 0. Vous pouvez, si vous le souhaitez, exécuter le port TLS d'un serveur Web sur le port 80, ou 25, ou 65535 au lieu du standard 443. De même, même si c'est le cas la norme que les serveurs SMTP écoutent sur le port 25, vous pouvez l'exécuter sur 80, 443 ou autres.

La plupart des implémentations réservent 0 à une fin spécifique - l'attribution aléatoire de ports. Donc, dans la plupart des implémentations , dire "écouter sur le port 0" signifie en fait "Je me fiche du port que j'utilise, donnez-moi simplement un port aléatoire non assigné pour écouter".

Donc, toute limitation d'utilisation d'un port dans la plage 0-65535, y compris 0, la plage de réservation éphémère, etc., est spécifique à l'implémentation (c'est-à-dire OS / pilote) , mais tous, y compris 0, sont des ports valides dans le RFC 793.

Eldakka
la source
11

Les numéros valides pour les ports sont: 0 à 2 ^ 16-1 = 0 à 65535
En effet, un numéro de port a une longueur de 16 bits.

Cependant, les ports sont divisés en:
Ports connus : 0 à 1023 (utilisés pour les services système, par exemple HTTP, FTP, SSH, DHCP ...)
Ports enregistrés / utilisateurs : 1024 à 49151 (vous pouvez les utiliser pour votre serveur, mais soyez attention à certaines applications célèbres: comme le serveur du système de gestion de base de données Microsoft SQL Server (MSSQL) ou le serveur réseau Apache Derby prennent déjà de cette plage, c'est-à-dire qu'il n'est pas recommandé d'attribuer le port de MSSQL à votre serveur sinon, si MSSQL est en cours d'exécution, c'est votre serveur le plus ne fonctionnera probablement pas en raison d'un conflit de port)
Ports dynamiques / privés : 49152 à 65535. (non utilisé pour les serveurs plutôt que pour les clients, par exemple dans le service NATing)

Dans la programmation, vous pouvez utiliser n'importe quel nombre de 0 à 65535 pour votre serveur, cependant vous devez vous en tenir aux plages mentionnées ci-dessus, sinon certains services système ou certaines applications ne fonctionneront pas en raison d'un conflit de port.
Consultez la liste de la plupart des ports ici: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Mosab Shaheen
la source
7

Il devrait être 65535.

Chris
la source