Qu’est-ce que localhost et à quoi ça sert : comment parler aux services qui écoutent sur l’appareil utilisé.
Les adresses IP sont utilisées dans les réseaux informatiques basés sur le protocole Internet (IP, précisément) pour identifier de manière unique un hôte ou un dispositif connecté au réseau lui-même. Plus précisément, une adresse IP est attribuée à une interface réseau sur un ordinateur, un appareil mobile, un produit de l’Internet des objets (IoT), un routeur ou un autre équipement réseau, etc. Chaque appareil peut utiliser une ou plusieurs interfaces : les routeurs, par exemple, en utilisent au moins deux ; de nombreux ordinateurs portables possèdent une carte réseau Wifi et une carte réseau Ethernet. Une adresse IP peut leur être attribuée. Dans l’article expliquant ce qu’est une adresse IP, nous avons vu qu’elles peuvent être publiques ou privées.
Les adresses IP publiques peuvent être atteintes directement par l’internet, tandis que les adresses IP privées sont attribuées aux appareils connectés en aval du routeur de l’entreprise ou de la maison : ils constituent le réseau local.
Cependant, lorsque nous parlons de localhost, nous faisons référence au nom qui caractérise l’interface de bouclage. Dans cet article, nous allons voir ce que cela signifie et quelles sont les différences par rapport à l’IP 127.0.0.1.
Ce qu’est Localhost, quand et pourquoi il est utilisé
Pour faire référence, du point de vue des connexions réseau, au périphérique que vous utilisez, le terme localhost est généralement utilisé.
Si un serveur web fonctionnait sur le PC utilisé (mais on peut en dire autant d’un serveur que d’un appareil mobile, indépendamment du type, du facteur de forme et du système d’exploitation installé), qui répond aux demandes de connexion entrantes sur le port 80 (HTTP) ou 443 (HTTPS), en tapant respectivement http://localhost/ ou https://localhost/ dans la barre d’adresse du navigateur, on obtiendrait une réponse (dans l’exemple d’un serveur web, une page HTML serait affichée).
En utilisant le nom localhost, il est possible d’interagir avec n’importe quel service fonctionnant sur le dispositif local : il suffit de connaître le numéro du port sur lequel le serveur écoute pour envoyer une demande de connexion.
Parmi les commandes Windows à connaître pour les opérations réseau figure Netstat. Essayez d’appuyer sur Windows + X, choisissez Windows PowerShell dans Windows 10 ou Windows 11 ou Terminal dans Windows 11 puis tapez la commande suivante :
netstat -an
Vous obtiendrez, en haut de la réponse, la liste des services en écoute (LISTENING) avec leurs ports respectifs (colonne Local Address).
Le port TCP 445, par exemple, est utilisé par le service de partage de fichiers et d’imprimantes basé sur le protocole SMB (Server Message Block).
Taper tnc localhost -port 445 produit une réponse (TcpTestSucceeded : True), confirmant que le serveur SMB traite les demandes de connexion entrantes.
Comme alternative à la cmdlet PowerShell tnc (Test-NetConnection) dans Windows, on peut utiliser la commande telnet, qui doit cependant être installée manuellement en appuyant sur Windows + R, en tapant optionalfeatures puis en cochant la case Client Telnet.
Le pare-feu et le NAT empêchent les services appelés à répondre aux demandes de connexion locales d’être exposés sur l’IP publique et d’être joignables depuis des hôtes distants.
Différence entre localhost et 127.0.0.1
Dans les réseaux TCP/IP, l’adresse IP qui correspond à localhost est 127.0.0.1 au format IPv4, ou :: 1 en notation IPv6.
Le plus souvent, localhost et 127.0.0.1 ou :: 1 sont utilisés de manière interchangeable, mais il existe des différences subtiles :
- L’adresse IP associée à localhost doit être résolue ou recherchée, alors que 127.0.0.1 ou :: 1 ne nécessite aucune résolution.
- Localhost n’est pas toujours résolu comme 127.0.0.1 ou :: 1 : il peut être résolu avec une autre adresse dans le bloc d’adresses de bouclage. La modification du fichier HOSTS permet de mapper localhost à une adresse différente.
- La demande de connexion ne passe pas par la carte réseau lorsqu’on utilise localhost. À l’inverse, l’utilisation de 127.0.0.1 ou :: 1 passe par la carte réseau, dont le comportement peut être influencé par les réglages et les configurations du pare-feu.
Dans le format IPv4, celles qui constituent le dernier bloc d’adresses de classe A (127.0.0.1 à 127.255.255) sont utilisées comme adresses de bouclage, alors qu’IPv6 réserve la première adresse (0: 0: 0: 0: 0: 0: 0: 1 ou :: 1 pour faire court) comme adresse de bouclage.
Comme l’indique la RFC 3330 de l’Internet Assigned Numbers Authority (IANA), le bloc utilisé pour les adresses de bouclage ne doit être utilisé dans aucun réseau. Pourtant, depuis toujours, 127.0.0.1 est également utilisé sur les DNS publics pour bloquer la résolution des noms de domaine qui doivent être rendus inaccessibles (ceci est généralement fait par les opérateurs de résolveurs DNS suite à un ordre des autorités).
Pourquoi il est utile d’utiliser localhost
Le nom localhost ou les adresses 127.0.0.1 et :: 1 peuvent être utilisés par les applications pour communiquer avec le système sur lequel elles fonctionnent.
Nous avons déjà mentionné l’exemple du serveur web local, qui n’est pas exposé sur Internet et qui, installé sur la machine individuelle, permet d’exécuter une application web avec la possibilité de tester, d’améliorer, de déboguer et de vérifier soigneusement son fonctionnement avant de la publier en ligne, par exemple sur un système hébergé ou un serveur cloud.
Les applications Web utilisent souvent un serveur MySQL ou MariaDB pour lire et écrire des données au niveau de la base de données. En supposant qu’un tel serveur soit installé localement, il est possible d’interagir avec lui en utilisant un client qui interagit sur le port 3306 (adresse localhost : 3306).
Évidemment, un service qui écoute sur un certain port sur l’interface de bouclage sera accessible – du moins par défaut – par d’autres dispositifs connectés sur le réseau local : ces derniers doivent toutefois utiliser l’IP privée de la machine sur laquelle le service est exécuté et spécifier le port correspondant.
Dans le cas de Windows, les ports ouverts sur l’interface réseau de l’hôte utilisé ne seront pas accessibles, même depuis le réseau local, si le réseau public est choisi au lieu du réseau privé.
Cependant, la configuration correcte du pare-feu vous permet de spécifier les ports qui doivent être accessibles et ceux qui ne le doivent pas.
Voir aussi notre article sur le Broadcast : ce qu’elle est et à quoi elle sert