Como são selecionadas as portas de origem UDP?

8

Acabei de capturar pacotes da minha máquina e filtrar todas as conexões UDP. Vi certas conexões usando o que parece ser uma porta de origem UDP gerada aleatoriamente e certas conexões usando a mesma porta de origem que a porta de destino UDP.

Entendo que as conexões TCP randomizarão a porta de origem para que a resposta tenha uma porta "dedicada" para responder. Mas como isso funciona com o UDP?

Estou procurando a resposta oficial. Links para RFC (ou outros enfeites) seriam muito apreciados.

O que determina a porta de origem UDP?

  • É gerado aleatoriamente quando uma resposta é esperada?
  • Corresponde à porta de destino quando nenhuma resposta é esperada? (em vez de usar 0 como uma porta de origem)?

Obrigado.

Eddie
fonte

Respostas:

6

Depende da aplicação. Por exemplo, o kernel do Linux implementou a randomização da porta de origem UDP quando nenhuma porta de origem é especificada no kernel 2.6.24 .

Portanto, o comportamento que você está vendo em algumas conexões deve ser o aplicativo específico que especifica que a porta de origem seja igual à porta de destino, enquanto outros a estão deixando no kernel.

Jeff Strunk
fonte
Portanto, o que você está dizendo (para garantir que eu entenda) é por padrão, o UDP aleatoriamente as portas de origem (assim como o TCP), a menos que o próprio serviço / aplicativo solicite algo especial, para incluir o uso de portas de origem / destino correspondentes. Isso está certo?
Edd
Isso está correto, dependendo da plataforma.
Jeff Strunk
+1 Isso está correto; ao contrário do TCP, onde você não tem controle sobre a porta de origem (já que o sistema operacional deve garantir que seja exclusivo para cada soquete), no UDP o aplicativo é livre para configurá-lo como desejar. Se houver comunicação bidirecional, seria "razoável" que a porta de origem seja a porta à qual a outra parte deve responder (declarada na Wikipedia em "Número da porta de origem"). No entanto, quem escreveu o aplicativo pode ter escolhido facilmente usar um número aleatório.
Groo
0

Portas efêmeras são geradas para pacotes UDP iguais ao TCP.

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

RobtheDob
fonte
Mas nem sempre, como minha captura de pacotes indicou. O que faz com que algumas conexões usem uma porta de origem UDP aleatória e outras que correspondam à porta de destino? E quando eles correspondem, como isso afeta o tráfego de retorno?
Eddie
Esta resposta descreve especificamente o comportamento do Windows. A outra resposta é sobre o comportamento do Linux. Supondo que eles ainda estejam atualizados, parece que o Windows não aleatoriamente por padrão, como o Linux.
thomasrutter