Le port 0 a une signification particulière dans la programmation réseau, en particulier dans les systèmes d'exploitation Unix en matière de programmation de sockets, où ce port est utilisé pour demander des ports dynamiques alloués par le système. Le port 0 est un port générique, indiquant 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 un réseau TCP/IP, ce qui signifie qu'il n'est pas utilisé dans les messages TCP ou UDP. Les ports réseau en TCP et UDP vont de 0 à 65535.
Les numéros de port compris entre 0 et 1 023 sont identifiés comme des ports système. L'IANA (Internet Assigned Numbers Authority) tient à jour une liste officielle des utilisations prévues 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
Le port 0 a une signification particulière dans la programmation réseau
La configuration d'une nouvelle connexion de socket réseau nécessite l'attribution d'un numéro de port du côté source et du côté destination. Le message TCP ou UDP envoyé par l'expéditeur (source) contient les deux numéros de port, afin que le destinataire du message (destination) puisse émettre un message de réponse au bon point de terminaison du protocole.
L'IANA a des ports système désignés pré-attribués pour les applications Internet de base, telles que les serveurs Web (port 80), mais de nombreuses applications réseau TCP et UDP ne disposent pas de leur propre port système et doivent en obtenir un auprès des périphériques d'exploitation à chaque fois qu'elles s'exécutent. .
Pour se voir attribuer un numéro de port source, l'application appelle les fonctions réseau TCP/IP telles que bind() pour demander un port. L'application peut fournir un numéro fixe (codé en dur) à bind() si elle souhaite demander un port spécifique, mais une telle demande peut échouer si une autre application s'exécute sur le système utilisant actuellement ce port.
De plus, l'application peut fournir le port 0 à bind() comme paramètre de connexion. Cela déclenche la recherche et le renvoi automatiques par le système d'exploitation d'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 un autre numéro de port dynamique. L'avantage de cette convention de programmation est l'efficacité. Au lieu que chaque application doive déployer et exécuter du code pour essayer plusieurs ports jusqu'à ce qu'elle en obtienne un valide, les applications peuvent s'appuyer sur le système d'exploitation.
Unix, Windows et d'autres systèmes d'exploitation ne sont pas identiques dans leur gestion du port 0, mais la même convention générale s'applique.
Problèmes de port 0 et de sécurité du réseau
Le trafic réseau envoyé sur Internet vers les serveurs écoutant sur le port 0 peut être généré par des cyberattaquants ou par des applications mal programmées. Les messages générés par le serveur en réponse au trafic du port 0 aident les attaquants à connaître le comportement de cet appareil et les vulnérabilités potentielles du réseau.
De nombreux fournisseurs d'accès Internet (FAI) bloquent le trafic sur le port 0 (messages entrants et sortants) pour se prémunir contre ces exploits.