¿Cómo se seleccionan los puertos de origen UDP?

8

Acabo de hacer una captura de paquetes desde mi máquina y filtré todas las conexiones UDP. Vi ciertas conexiones usando lo que parece ser un puerto de origen UDP generado aleatoriamente, y cierta conexión usando el mismo puerto de origen que el puerto de destino UDP.

Entiendo que las conexiones TCP aleatorizarán el puerto de origen, por lo que la respuesta tiene un puerto "dedicado" al que responder. Pero, ¿cómo funciona con UDP?

Estoy buscando la respuesta autorizada. Los enlaces a RFC (o cualquier otra cosa) serían muy apreciados.

¿Qué determina el puerto de origen UDP?

  • ¿Se genera aleatoriamente cuando se espera una respuesta?
  • ¿Coincide con el puerto de destino cuando no se espera respuesta? (en lugar de usar 0 como puerto de origen)?

Gracias.

Eddie
fuente

Respuestas:

6

Depende de la aplicación. Por ejemplo, el kernel de Linux implementó la aleatorización del puerto fuente UDP cuando no se especificó ningún puerto fuente en el núcleo 2.6.24 .

Entonces, el comportamiento que está viendo en algunas conexiones debe ser la aplicación particular que especifica que el puerto de origen sea el mismo que el puerto de destino, mientras que otros lo dejan en el núcleo.

Jeff Strunk
fuente
Entonces, lo que está diciendo (para asegurarse de que entiendo) es que, por defecto, UDP aleatorizará los puertos de origen (al igual que TCP) a menos que el servicio / aplicación en sí mismo requiera algo especial, que incluya el uso de puertos de origen / destino coincidentes. ¿Está bien?
Eddie
Eso es correcto dependiendo de la plataforma.
Jeff Strunk
+1 Esto es correcto; a diferencia de TCP, donde no tiene control sobre el puerto de origen (dado que el sistema operativo debe garantizar que sea único para cada socket), en UDP la aplicación es libre de configurarlo a lo que quiera. Si hay comunicación bidireccional, sería "razonable" que el puerto de origen sea el puerto al que la otra parte debe responder (indicado en Wikipedia en "Número de puerto de origen"). Sin embargo, quien escribió la aplicación podría haber elegido fácilmente usar un número aleatorio en su lugar.
Groo
0

Los puertos efímeros se generan para paquetes UDP igual que TCP.

http://www.hsc.fr/ressources/articles/win_net_srv/ephem_port_alloc.html

RobtheDob
fuente
Pero no siempre, como lo indicó mi captura de paquetes. ¿Qué hace que algunas conexiones usen un puerto de origen UDP aleatorio y otras que coincidan con el puerto de destino? Y cuando coinciden, ¿cómo afecta eso al tráfico de retorno?
Eddie
Esta respuesta describe específicamente el comportamiento de Windows. La otra respuesta es sobre el comportamiento de Linux. Suponiendo que todavía estén actualizados, parece que Windows no se aleatoriza de manera predeterminada como lo hace Linux.
thomasrutter