Comment les ports source UDP sont-ils sélectionnés?

8

Je viens de faire une capture de paquets à partir de ma machine et de filtrer toutes les connexions UDP. J'ai vu certaines connexions utilisant ce qui semble être un port source UDP généré de manière aléatoire, et certaines connexions utilisant le même port source que le port de destination UDP.

Je comprends que les connexions TCP randomiseront le port source de sorte que la réponse ait un port "dédié" auquel répondre. Mais comment ça marche avec UDP?

Je cherche la réponse faisant autorité. Les liens vers les RFC (ou autres joyeusetés) seraient grandement appréciés.

Qu'est-ce qui détermine le port source UDP?

  • Est-il généré de manière aléatoire lorsqu'une réponse est attendue?
  • Correspond-il au port de destination lorsqu'aucune réponse n'est attendue? (au lieu d'utiliser 0 comme port source)?

Je vous remercie.

Eddie
la source

Réponses:

6

Cela dépend de l'application. Par exemple, le noyau Linux a implémenté la randomisation du port source UDP lorsqu'aucun port source n'est spécifié dans le noyau 2.6.24 .

Ainsi, le comportement que vous voyez dans certaines connexions doit être l'application particulière spécifiant que le port source doit être le même que le port de destination, tandis que d'autres le laissent au noyau.

Jeff Strunk
la source
Donc, ce que vous dites (pour vous assurer que je comprends) est par défaut, UDP va randomiser les ports source (tout comme TCP) à moins que le service / application lui-même ne demande quelque chose de spécial, y compris l'utilisation de ports source / destination correspondants. Est-ce correct?
Eddie
C'est correct selon la plateforme.
Jeff Strunk
+1 C'est correct; contrairement à TCP, où vous n'avez pas de contrôle sur le port source (puisque le système d'exploitation doit garantir qu'il est unique pour chaque socket), dans UDP, l'application est libre de le configurer selon ce qu'il veut. S'il y a une communication bidirectionnelle, il serait "raisonnable" que le port source soit le port auquel l'autre partie devrait répondre (indiqué dans Wikipedia sous "Numéro de port source"). Cependant, celui qui a écrit l'application aurait pu facilement choisir d'utiliser un nombre aléatoire à la place.
Groo
0

Les ports éphémères sont générés pour les paquets UDP comme TCP.

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

RobtheDob
la source
Mais pas toujours, comme l'indique ma capture de paquets. Qu'est-ce qui fait que certaines connexions utilisent un port source UDP aléatoire et d'autres qui correspondent au port de destination? Et quand ils correspondent, comment cela affecte-t-il le trafic de retour?
Eddie
Cette réponse décrit spécifiquement le comportement de Windows. L'autre réponse concerne le comportement de Linux. En supposant que ceux-ci sont toujours à jour, il semble que Windows ne randomise pas par défaut comme le fait Linux.
thomasrutter