2010-02-04 11 views
38

Esto es un poco subjetivo, ya que no hay reglas por así decirlo. Cada vez que creo un servidor, pienso para mí, "¿Cuál es el mejor puerto para usar?" Supongo que una respuesta es "Cualquiera, siempre que el usuario pueda cambiarlo". Entonces, ¿cómo deciden los demás cómo elegir el puerto predeterminado? Personalmente, me gusta usar algo como 8000 y algo si está relacionado con HTTP, y he notado que esta es una tendencia bastante común. Pero, ¿y si 8000 ya está en uso? Use 8001? Parece un poco ad-hoc, y supongo que sí.¿Cómo se decide qué puerto usar?

Claramente, no soy el primero en hacer esta pregunta; IANA mantiene una lista port numbers ... Lo que me lleva al rango no asignado (48620-49150). Supongo que deberíamos usarlos realmente, pero ¿por qué no lo hacen más programadores? ¿Cómo decides qué usar? si todos comenzaran en el n. ° 1, todos estaríamos usando el 48620.

+1

+1 por responder a su propia pregunta – fupsduck

+1

Gracias - Quería contarle a todos mi proceso de pensamiento, para que otros puedan llamarme si estaba equivocado. –

Respuesta

20

creo que haya respondido a su pregunta más o menos tanto como es posible; no hay realmente una regla estricta que puedas seguir aquí más allá de lo que has dicho. Pero generalmente:

  • Mire la lista de IANA y elija un puerto que no esté en uso.
  • Elija un número de puerto que sea fácil de recordar.
  • No arregle el número de puerto en el código. Algún otro producto puede haber escogido el mismo puerto que usted y nunca se sabe cuándo tendrá que coexistir en un servidor, así que ponga el número de puerto en un archivo de configuración en alguna parte para que pueda ser modificado sin una recompilación si es necesario. La capacidad de cambiar el número de puerto también puede ser útil para atravesar los firewalls sin tener que reconfigurarlos. (Siempre puede establecer el valor predeterminado si el archivo de configuración no existe)
  • Existe un argumento de que no desea elegir algo demasiado alto, ya que puede entrar en conflicto con el rango utilizado para ephemeral ports. No es probable que te afecte esto, pero es un problema difícil de depurar cuando sucede.

(Y si quieres un consejo para la selección de números de puerto memorables, una vez trabajé con alguien que recordaba los números de puerto en torno a las extensiones de teléfono de sus compañeros de trabajo.)

+0

"Mire la lista IANA y elija un puerto que no esté en uso" o simplemente elija un número grande – Patrick

+2

Un número grande debajo de 49152 obviamente, lo sabía, realmente lo hice – Patrick

0

Después de una búsqueda rápida en Google para asegurarme de que está claro, generalmente solo elijo un número de importancia personal.

0

¿Respondió su propia pregunta? Elija cualquier puerto no asignado y permita que el usuario lo cambie.

+0

Gracias por confirmar :) –

6

Durante las pruebas ... siempre el puerto # 666;)

+4

Supongo que siempre se ejecuta como root? –

+5

¡está reservado para el juego Doom! debe respetarlo –

8

Algunos fácil de recordar y de manera apropiada nerd no asignados por IANA) (puertos:

27182 (e)

31415 (pi)

60221 (de Avogadro)

0

¿Qué tal:

defaultPort = (new Random()).Next(48620, 49150); 
0

prefiero de esta manera: (código Python siguiente)

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

Y entonces escoger el número de los que más me gusta. O, por supuesto, cambie el rango si tiene límites más estrictos sobre los números aceptables.

0

Sugiero que nunca use un puerto que tenga un número grande como 5 dígitos, ya que podría afectar a otros procesos del sistema de operación y asignar los puertos Efímeros. Comenzarías a obtener 'Errores ya en uso' debido a sus limitaciones.

Cuestiones relacionadas