¿Cómo se debe elegir un puerto TCP / IP predeterminado para un nuevo servicio?

110

Al desarrollar una aplicación que escuchará en un puerto TCP / IP, ¿cómo se debe seleccionar un puerto predeterminado? Suponga que esta aplicación se instalará en muchas computadoras y que se desea evitar conflictos de puertos.

Kevin Wong
fuente
1
Esto se responde mejor aquí: stackoverflow.com/questions/10476987/…
matt2000

Respuestas:

49

Vaya aquí y elija un puerto con la descripciónUnassigned

Kevin Wong
fuente
11
¿Estás sugiriendo que elija un puerto por debajo de 100?
mpen
3
¿Cuál debo elegir?
Owen
1
Si todos los desarrolladores siguen esa lógica, significaría que todos los servicios nuevos se reunirán en torno a los pocos puertos no asignados. ¿Cuál sería la probabilidad de que un servicio se esté ejecutando en un puerto asignado frente a un puerto no asignado? (Lo siento si no estoy exponiendo algún secreto comercial :)
hultqvist
1
Si está buscando un puerto para usar en una red interna, considere esta respuesta en una pregunta similar: stackoverflow.com/questions/218839/…
adrianwadey
32

Primer paso: mire la lista de IANA :

Allí verá al final de la lista

"Los puertos dinámicos y / o privados son los del 49152 al 65535"

así que esas serían tus mejores opciones, pero una vez que elijas una, siempre puedes buscarla en Google para ver si hay una aplicación lo suficientemente popular que ya la haya "reclamado".

curtisk
fuente
8
¿Pero el uso de un puerto dinámico no me dejaría expuesto a conflictos de puertos intermitentes (aunque raros)? Quizás sea más seguro usar un puerto en el rango registrado que no esté asignado o esté asignado a una aplicación poco conocida.
Kevin Wong
4
a menos que registre explícitamente su elección de puerto con IANA, usted corre las mismas probabilidades de conflicto usando un "SIN ASIGNAR", creo. En realidad, dado que hay muchos sin asignar en el extremo inferior, probablemente sea más probable en mi humilde opinión
curtisk
2
Comience siempre con el rango no asignado, con la opción de un puerto configurable de usuario / administrador para hacer frente a posibles conflictos. SÓLO si su aplicación alcanza un uso amplio (piense en BitTorrent o en algún otro uso extenso) debería realmente considerar solicitar un puerto asignado. De lo contrario, manténgase fuera del rango asignado. Si esto es para algo estrictamente interno / personal, simplemente documente los puertos en uso por varios servicios y debería estar bien siempre que la gente pueda buscarlos en algún lugar en línea. Piense en el rango privado / dinámico similar a las IP no enrutables: son perfectas para uso pequeño / privado.
jefflunt
3
Simplemente no cometa el error de asumir que su aplicación necesita un puerto asignado por IANA porque cree que su aplicación explotará en uso antes de que realmente lo haga. :)
jefflunt
7
Con respecto al rango dinámico, creo que la pregunta del "conflicto" puede haber sido preguntar si, si un sistema operativo está usando ese rango para puertos efímeros (como debería), eso entraría en conflicto con el puerto que eligió si el sistema operativo decide al azar para usar ese puerto para, por ejemplo, alguna conexión de salida. (El uso aleatorio de este rango es para lo que son los puertos efímeros, según tengo entendido). Vea esta otra pregunta que establece la preocupación con más detalle.
Garret Wilson
7

Si por uso generalizado quiere decir que desea protegerse contra otras personas que lo usen en el futuro, puede solicitar que IANA lo marque como reservado para su aplicación aquí.

jj33
fuente
5

La lista más completa de números de puertos oficiales de IANA y números de puertos no oficiales que conozco es nmap-services .

Thorsten79
fuente
2

Probablemente desee evitar el uso de puertos de esta lista (Wikipedia).

Solo elegiría uno, y una vez que la aplicación sea utilizada por las masas, el número de puerto será reconocido e incluido en dichas listas.

Mike Mazur
fuente
2

Como mencionan otros, consulte IANA.

Luego verifique sus sistemas locales / etc / services para ver si ya hay algunos puertos personalizados en uso.

Y, por favor, no lo codifique. Asegúrese de que sea configurable, de alguna manera, de alguna manera, si por ninguna otra razón desea poder tener varios desarrolladores usando sus propias compilaciones localizadas al mismo tiempo.

Zathrus
fuente
1

Por lo general, es suficiente elegir uno sin asignar de la lista de IANA, pero si se trata de un producto lanzado comercialmente, debería solicitarlo a IANA para que le asignen uno. Tenga en cuenta que el proceso de hacer esto es simple pero lento; la última vez que solicité uno, me llevó un año.

Graeme Perrow
fuente
1

Si se trata de una aplicación que espera que se use ampliamente, registre un número aquí para que nadie más lo use.

De lo contrario, elija uno sin usar al azar.

El problema de usar uno en el rango dinámico es que puede que no esté disponible porque se puede usar para un número de puerto dinámico.

Mark Baker
fuente
-1

Bueno, puede hacer referencia a algunos números de puerto de uso común aquí e intentar no usar los de nadie más.

Si por "abierto al público en general" te refieres a que estás abriendo puertos en tus propios sistemas, tendría una charla con los administradores de tu sistema sobre los puertos con los que se sienten cómodos al hacerlo.

Adam Bellaire
fuente
-1

Elija un puerto predeterminado que no interfiera con los demonios y servidores más comunes. También asegúrese de que el número de puerto no aparezca como un vector de ataque para algunos virus; algunas empresas tienen políticas estrictas en las que bloquean dichos puertos sin importar qué. Por último, pero no menos importante, asegúrese de que el número de puerto sea configurable.

Alejandro
fuente