Comment choisir un port TCP / IP par défaut pour un nouveau service?

110

Lors du développement d'une application qui écoutera sur un port TCP / IP, comment doit-on procéder pour sélectionner un port par défaut? Supposons que cette application sera installée sur de nombreux ordinateurs et qu'il est souhaitable d'éviter les conflits de port.

Kevin Wong
la source
1
C'est mieux répondu ici: stackoverflow.com/questions/10476987/…
matt2000

Réponses:

49

Allez ici et choisissez un port avec la descriptionUnassigned

Kevin Wong
la source
11
Vous suggérez qu'il choisit un port de moins de 100?
mpen
3
Lequel dois-je choisir?
Owen
1
Si tous les développeurs suivent cette logique, cela signifierait que tous les nouveaux services se rassemblent autour des quelques ports non attribués. Quelle serait la probabilité qu'un service s'exécute sur un port attribué par rapport à un port non attribué. (Désolé si je ne
dévoile
1
Si vous recherchez un port à utiliser sur un réseau interne, veuillez considérer cette réponse sur une question similaire: stackoverflow.com/questions/218839/…
adrianwadey
32

Première étape: regardez la liste IANA :

Là, vous verrez à la fin de la liste

"Les ports dynamiques et / ou privés sont ceux de 49152 à 65535"

ce sont donc vos meilleurs paris, mais une fois que vous en choisissez un, vous pouvez toujours rechercher sur Google pour voir s'il existe une application assez populaire qui l'a déjà "revendiquée"

ridicule
la source
8
Mais l'utilisation d'un port dynamique ne me laisserait-elle pas ouverte à des conflits de port intermittents (bien que rares)? Il est peut-être plus sûr d'utiliser un port dans la plage enregistrée qui n'est pas attribué ou attribué à une application obscure.
Kevin Wong
4
sauf si vous enregistrez explicitement votre choix de port auprès de l'IANA, vous exécutez les mêmes probabilités de conflit en utilisant un "NON ASSIGNÉ", je pense. En fait, comme il y a beaucoup de non attribués dans le bas de gamme, ceux-ci seraient probablement plus probables à
mon humble avis
2
Commencez toujours par la plage non attribuée, avec l'option d'un port configurable par l'utilisateur / administrateur pour gérer les conflits possibles. UNIQUEMENT si votre application atteint une large utilisation (pensez à BitTorrent, ou à une autre utilisation importante), vous devriez vraiment envisager de demander un port attribué. Sinon, restez en dehors de la plage attribuée. S'il s'agit de quelque chose de strictement interne / personnel, documentez simplement les ports utilisés par divers services et tout devrait bien se passer tant que les gens peuvent les rechercher quelque part en ligne. Pensez à la plage privée / dynamique similaire aux adresses IP non routables - elles sont parfaites pour un usage restreint / privé.
jefflunt
3
Ne faites pas l'erreur de supposer que votre application a besoin d'un port attribué par l'IANA, car vous pensez que votre application va exploser dans l'utilisation avant qu'elle ne le fasse réellement. :)
jefflunt
7
En ce qui concerne la plage dynamique, je pense que la question du «conflit» a peut-être été de demander si, si un système d'exploitation utilise cette plage pour des ports éphémères (comme il se doit), cela entraînerait-il un conflit avec le port que vous avez choisi si le système d'exploitation décide au hasard pour utiliser ce port par exemple pour une connexion sortante. (L'utilisation aléatoire de cette plage est à quoi servent les ports éphémères, si je comprends bien.) Voir cette autre question qui énonce le problème plus en détail.
Garret Wilson
7

Si par largement utilisé, vous voulez vous protéger contre d'autres personnes qui l'utilisent à l'avenir, vous pouvez demander à ce qu'il soit marqué comme réservé pour votre application par l'IANA. ici

jj33
la source
5

La liste la plus complète des numéros de port officiels IANA et des numéros de port non officiels que je connaisse est nmap-services .

Thorsten79
la source
2

Vous souhaitez probablement éviter d'utiliser les ports de cette liste (Wikipedia).

Je n'en choisirais qu'un, et une fois que l'application est utilisée par le grand public, le numéro de port sera reconnu et inclus dans ces listes.

Mike Mazur
la source
2

Comme d'autres le mentionnent, vérifiez l'IANA.

Vérifiez ensuite vos systèmes locaux / etc / services pour voir s'il y a des ports personnalisés déjà utilisés.

Et s'il vous plaît, ne le codez pas en dur. Assurez-vous qu'il est configurable, d'une manière ou d'une autre, si pour aucune autre raison vous voulez pouvoir avoir plusieurs développeurs utilisant leurs propres versions localisées en même temps.

Zathrus
la source
1

Choisir un produit non attribué dans la liste IANA est généralement suffisant, mais si vous parlez d'un produit commercialisé, vous devriez vraiment demander à l'IANA de vous en attribuer un. Notez que le processus pour ce faire est simple mais lent; la dernière fois que j'en ai postulé, cela a pris un an.

Graeme Perrow
la source
1

Si c'est pour une application que vous prévoyez d'être largement utilisée, enregistrez un numéro ici afin que personne d'autre ne l'utilise.

Sinon, choisissez simplement un inutilisé au hasard.

Le problème avec l'utilisation d'un dans la plage dynamique est qu'il peut ne pas être disponible car il peut être utilisé pour un numéro de port dynamique.

Mark Baker
la source
-1

Eh bien, vous pouvez référencer certains numéros de port couramment utilisés ici et essayer de ne pas utiliser quelqu'un d' autre.

Si par "ouvert au grand public" vous voulez dire que vous ouvrez des ports sur vos propres systèmes, j'aurais une discussion avec vos administrateurs système pour savoir avec quels ports ils se sentent à l'aise.

Adam Bellaire
la source
-1

Choisissez un port par défaut qui n'interfère pas avec les démons et serveurs les plus courants. Assurez-vous également que le numéro de port n'est pas répertorié comme un vecteur d'attaque pour certains virus - certaines entreprises ont des politiques strictes où elles bloquent ces ports quoi qu'il arrive. Dernier point mais non le moindre, assurez-vous que le numéro de port est configurable.

Alexandre
la source