Le port 0 revêt une importance particulière dans la programmation réseau, en particulier dans le système d'exploitation Unix lorsqu'il s'agit de programmation de socket où le port est utilisé pour demander des ports dynamiques alloués par le système. Le port 0 est un port générique qui indique au système de trouver un numéro de port approprié.
Contrairement à la plupart des numéros de port, le port 0 est un port réservé dans le réseau TCP/IP, ce qui signifie qu'il ne doit pas être utilisé dans les messages TCP ou UDP. Les ports réseau dans TCP et UDP vont du nombre zéro à 65535. Les numéros de port compris entre zéro et 1023 sont définis comme des ports non éphémères, des ports système ou des ports connus. L'Internet Assigned Numbers Authority (IANA) tient à jour une liste officielle de l'utilisation prévue de ces numéros de port sur Internet, et le port système 0 ne doit pas être utilisé.
Comment fonctionne le port TCP/UDP 0 dans la programmation réseau
La configuration d'une nouvelle connexion socket réseau nécessite qu'un numéro de port soit attribué à la fois côté source et côté destination. Les messages TCP ou UDP envoyés par l'expéditeur (source) contiennent les deux numéros de port afin que le destinataire du message (destination) puisse envoyer des messages de réponse au bon point de terminaison de protocole.
IANA a préalloué des ports système désignés pour les applications Internet de base comme les serveurs Web (port 80), mais de nombreuses applications réseau TCP et UDP n'ont pas leur propre port système et doivent en obtenir un à partir du système d'exploitation de leur appareil à chaque fois qu'elles s'exécutent.
Pour allouer son numéro de port source, les applications appellent des fonctions réseau TCP/IP comme bind() pour en demander un. L'application peut fournir un numéro fixe (codé en dur) à bind() si elle préfère demander un numéro spécifique, mais une telle demande peut échouer car une autre application en cours d'exécution sur le système peut l'utiliser actuellement.
Alternativement, il peut fournir le port 0 à bind() comme paramètre de connexion. Cela déclenche le système d'exploitation pour rechercher et renvoyer automatiquement un port disponible approprié dans la plage de numéros de port dynamique TCP/IP.
L'application ne reçoit pas le port 0 mais plutôt un autre port dynamique. L'avantage de cette convention de programmation est l'efficacité. Au lieu que chaque application implémente et exécute du code pour essayer plusieurs ports jusqu'à ce qu'elle en obtienne un valide, les applications s'appuient sur le système d'exploitation.
Unix, Windows et d'autres systèmes d'exploitation varient dans la gestion du port 0, mais la même convention générale s'applique.
Port 0 et sécurité réseau
Le trafic réseau envoyé sur Internet aux hôtes écoutant sur le port 0 peut être généré par des attaquants du réseau ou accidentellement par des applications mal programmées. Les messages de réponse que les hôtes génèrent en réponse au trafic du port 0 aident les attaquants à comprendre le comportement et les vulnérabilités potentielles du réseau de ces appareils.
De nombreux fournisseurs de services Internet (FAI) bloquent le trafic sur le port 0, à la fois les messages entrants et sortants, pour se prémunir contre ces exploits.
FAQ
Que sont les numéros de port ?
Les numéros de port utilisés pour les connexions réseau TCP/IP agissent comme des informations d'adresse, identifiant les expéditeurs et les destinataires d'un message. Les numéros de port permettent à diverses applications sur le même réseau de partager des ressources en même temps.
Comment trouver les numéros de port ?
Pour trouver le numéro de port d'une adresse IP spécifique, accédez à l'invite de commande, tapez netstat -a, puis appuyez sur Entrée. Vous verrez une liste des connexions TCP actives avec les adresses IP et les numéros de port séparés par deux-points.
Puis-je me connecter au port 0 ?
Non. Officiellement, le port 0 n'existe pas et vous ne pouvez pas vous y connecter car il s'agit d'un numéro de port invalide. Cependant, vous pouvez envoyer un paquet Internet vers et depuis le port 0 de la même manière que vous le feriez avec un autre numéro de port.