¿Dónde está la documentación que indica que el puerto de origen TCP y UDP debe ser superior a 1024 y aleatorio?

11

Estoy teniendo dificultades para encontrar dónde está documentado que el puerto de origen debe ser aleatorio y en el rango 1024-65535.

¿En qué RFC está documentado esto?

Editar: La
primera referencia para puertos privilegiados está en RFC2623
Parece que esto depende más de la implementación de TCP / IP y es un estándar de facto.

IANA está asignando los números de puerto (RFC1700)

Mircea Vutcovici
fuente
1
FYR - RFC 1700 (STD 2) solo se ocupa de la asignación de puertos de escucha (donde los servicios escuchan las conexiones). No trata con la selección del puerto de origen del servidor de conexión.
voretaq7
Sí, pero el corolario de que "DEBE" usar los puertos registrados es que no debe usarlos para otras cosas. Por eso lo mencioné.
Mircea Vutcovici
2
iana.org/assignments/service-names-port-numbers/… habla sobre los puertos dinámicos y / o privados (49152-65535). Entonces parece que el cliente debería usar un puerto de ese rango.
Mircea Vutcovici

Respuestas:

13

Probablemente esté buscando RFC 6056 - Recomendaciones para la aleatorización de puertos del protocolo de transporte ("Mejor práctica actual").

Técnicamente, no es necesario que el puerto efímero sea> 1024 o aleatorio (puede crear un sistema que siempre inicie conexiones desde el puerto 12 porque le gusta el número 12), simplemente no es "normal" hacerlo (y una idea horrible para un montón de razones, algunas de las cuales se describen en ese RFC).

voretaq7
fuente
Parece que los puertos efímeros deberían ser> = 49152. Pero tu respuesta es la más cercana a mi pregunta.
Mircea Vutcovici
3

El RFC 6335 explica esto:

Los puertos en el rango de puertos dinámicos (49152-65535) se han reservado específicamente para uso local y dinámico y no se pueden asignar a través de IANA. El software de aplicación simplemente puede usar cualquier puerto dinámico que esté disponible en el host local, sin ningún tipo de asignación. Por otro lado, el software de la aplicación NO DEBE asumir que un número de puerto específico en el rango de puertos dinámicos siempre estará disponible para la comunicación en todo momento, y un número de puerto en ese rango NO DEBE ser utilizado como un identificador de servicio.

Los puertos reservados:

Los puertos en el rango de Puertos de usuario (1024-49151) están disponibles para la asignación a través de IANA, y PUEDEN usarse como identificadores de servicio después de una asignación exitosa.

Los puertos en el rango de Puertos del sistema (0-1023) también están disponibles para su asignación a través de IANA. Debido a que el rango de puertos del sistema es el más pequeño y el más densamente asignado, los requisitos para las nuevas asignaciones son más estrictos que los del rango de puertos de usuario y solo se otorgarán bajo los procedimientos de "Revisión IETF" o "Aprobación IESG" RFC5226 .

La introducción explica la confusión:

Durante muchos años, la asignación de nuevos nombres de servicio y valores de número de puerto para usar con el Protocolo de control de transmisión (TCP) [RFC0793] y el Protocolo de datagramas de usuario (UDP) [RFC0768] ha tenido
pautas poco claras.

Parece que Windows XP no sigue RFC6335, pero Solaris 10 sí.

Mircea Vutcovici
fuente
1

Lo que voretaq7 dijo junto con esto pero siendo pedante hay un requisito técnico. Históricamente, los demonios / servidores en * nix se ejecutan en puertos <1024 (llamándolos puertos del sistema) por lo tanto, para evitar conflictos, los puertos de origen (puertos de usuario) son> 1024 (o para ser precisos 1024 - 49151) Sin embargo, eso no siempre es el caso como dices y depende de la implementación. En general, el enlace anterior ofrece una lista de RFC, pero probablemente el más específico es RFC5226, que describe el proceso de "Revisión de expertos" de IANA.

usuario
fuente
Algunas implementaciones de servidor NFS requieren que el cliente NFS use un puerto <1024. Entonces, técnicamente siempre fue posible utilizar todos los puertos como puerto de origen. Lo que pido es un documento que pida usar para puertos superiores a 1024. Parece que en realidad el cliente debería usar puertos superiores a 49152.
Mircea Vutcovici
1
Eso no refuta mi respuesta. Vea aquí unix.stackexchange.com/questions/16564/… ¿ Por qué esa asignación de IANA y RFC 6056 no lo cubren? Después de que siempre puede dar recomendaciones, nadie le impide implementar un navegador web que utilizará el puerto 80 como puerto de origen
usuario
1
Al ser igualmente pedante, no es necesario que los puertos privilegiados o "conocidos" no se usen como puerto de origen (vea el contraejemplo de Mircea con puertos NFS privilegiados). No se hace comúnmente por las razones que mencionó, pero tampoco prohibido. AFAIK según los RFC TCP y UDP, cualquier puerto no utilizado es un juego justo como puerto fuente. Las reglas que
inventamos