web-dev-qa-db-fra.com

Comment décidez-vous quel port utiliser?

C'est un peu subjectif, car il n'y a pas de règles pour ainsi dire. Chaque fois que je crée un serveur, je me dis: "Quel est le meilleur port à utiliser?" Je suppose que une réponse est "Tout, tant que l'utilisateur peut le changer." Alors, comment tout le monde décide-t-il comment choisir le port par défaut? Personnellement, j'aime utiliser quelque chose comme 8000-quelque chose s'il est lié à HTTP, et j'ai remarqué que c'est une tendance assez courante. Mais que se passe-t-il si le 8000 est déjà utilisé? Utiliser 8001? Cela semble un peu ponctuel, et je suppose que oui.

De toute évidence, je ne suis pas le premier à avoir posé cette question; IANA maintient une liste numéros de port ... Ce qui m'amène à la plage non affectée (48620-49150). Je suppose que nous devrions vraiment les utiliser, mais pourquoi plus de programmeurs ne le font-ils pas? Comment décidez-vous lequel utiliser; si tout le monde commençait au n ° 1, alors nous utiliserions tous le 48620.

61
Nick Bolton

Je pense que vous avez à peu près répondu à votre question autant que possible; il n'y a pas vraiment de règle stricte que vous puissiez suivre ici au-delà de ce que vous avez dit. Mais généralement:

  • Regardez la liste IANA et choisissez un port qui n'est pas utilisé.
  • Choisissez un numéro de port facile à retenir.
  • Ne fixez pas le numéro de port dans votre code. Certains autres produits ont peut-être choisi le même port que vous et vous ne savez jamais quand vous devrez coexister sur un serveur, alors placez le numéro de port dans un fichier de configuration quelque part afin qu'il puisse être modifié sans recompilation si nécessaire. La possibilité de modifier le numéro de port peut également être utile pour passer à travers les pare-feu sans avoir à les reconfigurer. (Vous pouvez toujours utiliser par défaut la valeur choisie si le fichier de configuration n'existe pas.)
  • Il y a un argument selon lequel vous ne voulez pas choisir quelque chose de trop élevé car vous pourriez entrer en conflit avec la plage utilisée pour ports éphémères . Il est peu probable que vous soyez touché par cela, mais c'est un problème difficile à déboguer quand cela se produit.

(Et si vous voulez un conseil pour choisir des numéros de port mémorables, j'ai déjà travaillé avec quelqu'un qui se souvenait des numéros de port basés sur les extensions téléphoniques de ses collègues.)

32
Dave Webb

Certains ports faciles à retenir et convenablement ringards non attribués (par IANA):

27182 (e)

31415 (pi)

60221 (avagadro)

16
Cooper

Pendant les tests ... toujours le port # 666;)

8
Aistina

Que diriez-vous:

defaultPort = (new Random()).Next(48620, 49150);
1
Benny Jobigan

Je préfère cette façon: (code python suivant)

#!/usr/bin/env python3
import random as R
r = R.SystemRandom()
print([r.randrange(1024, 65535) for x in range(4)])

Et puis je choisis le numéro que j'aime le plus. Ou bien sûr, changez la plage si vous avez des limites plus strictes de ce qui est des nombres acceptables.

1
Sarge Borsch

Je suggère de ne jamais utiliser un port qui est un grand nombre comme 5 chiffres, car il pourrait frapper d'autres processus du système d'exploitation et attribuer les ports éphémères. Vous commenceriez à obtenir des "erreurs déjà utilisées" en raison de ses limites.

0
mani_nz

Après une recherche rapide sur Google pour m'assurer qu'il est clair, je choisis généralement un certain nombre de significations personnelles.

0
James Cronen

Vous avez répondu à votre propre question? Choisissez n'importe quel port non attribué et autorisez l'utilisateur à le modifier.

0
fupsduck