web-dev-qa-db-fra.com

TCP et les sockets UDP peuvent-ils utiliser le même port?

Tout d'abord, y a-t-il un problème à utiliser à la fois UDP et TCP sur le même serveur?

Deuxièmement, puis-je utiliser le même numéro de port?

87
user800799

Oui, vous pouvez utiliser le même numéro de port pour les deux TCP et UDP. De nombreux protocoles le font déjà, par exemple, DNS fonctionne sur udp/53 et tcp/53.

Techniquement, les pools de ports pour chaque protocole sont complètement indépendants, mais pour les protocoles de niveau supérieur qui peuvent utiliser soit TCP ou UDP, il est conventionnel qu'ils utilisent par défaut le même port nombre.

Lors de l'écriture de votre serveur, gardez à l'esprit que la séquence d'événements pour un socket TCP est beaucoup plus difficile que pour un socket UDP, car ainsi que les socket et _ normales bind vous devez également appeler listen et accept.

De plus, cet appel accept renverra un nouveau socket et c'est that socket que vous devrez alors également interroger les événements de réception. Votre serveur doit être prêt à continuer accept à établir des connexions sur le socket d'origine tout en desservant simultanément plusieurs clients dont chacun déclenchera des événements de réception sur leurs propres sockets.

94
Alnitak

Premièrement, il n'y a aucun problème à utiliser à la fois tcp et udp sur le serveur.

Deuxièmement, nous pouvons avoir à la fois des requêtes UDP et TCP sur le même port, car chaque requête est identifiée par un quintuple contenu par l'IP source, l'IP de destination, le port source, le port de destination, le PROTOCOLE (comme le protocole peut être TCP ou UDP).

6
aMooly