Localhost

Schéma explicatif

Dans le domaine des réseaux informatiques, localhost (hôte local en français) est le nom habituel qui désigne une interface logique de l’ordinateur local.

En informatique, on travaille souvent en mode client-serveur : une ou plusieurs machines envoient des requêtes à un serveur central[1] qui envoie les réponses appropriées. C'est par exemple le cas d’un serveur web ou d’un serveur de bases de données.

Lors de la phase de développement d’un programme informatique impliquant des échanges sur un réseau, il n’est pas pour autant nécessaire de disposer de plusieurs machines physiques ni même virtuelles : la même machine physique peut parfaitement héberger le serveur et un ou plusieurs clients, exactement dans les mêmes conditions : en communiquant par des ports.

Le ou les clients hébergés sur une machine[2] utilisent le protocole IP pour communiquer. Il importe peu de savoir où se trouvent physiquement les programmes, les couches basses du protocole se chargeant justement d’en masquer les détails. Le nom localhost est associé à l’adresse IPv6 ::1 et à la plage d’adresses IPv4 127.0.0.0/8 (toutes les adresses IPv4 comprises entre 127.0.0.1 et 127.255.255.255 dont la plus utilisée est 127.0.0.1).

L’interface réseau virtuelle utilisée dans cette situation se nomme l’interface de loopback (abrégée par lo sous Unix) ou boucle locale.

Dans la pratique

Toute machine disposant d’une pile TCP/IP fonctionnelle permet de s’adresser à localhost[3], même si cette machine n’est reliée à aucun réseau physique ou virtuel[4].

Il faut bien entendu que soit démarré au préalable le serveur approprié (par exemple un serveur web ou un serveur de base de données) sur un port préalablement convenu (respectivement le port 80 associé par défaut aux requêtes HTTP et le port 3306 sur lequel écoute par défaut un serveur MySQL).

On peut ainsi vérifier que la pile TCP/IP d’une machine est opérationnelle en utilisant le programme ping. Celui-ci se fonde plus précisément sur le protocole ICMP, lequel repose sur le protocole IP. Un retour effectif d’un écho émis par ping permet ainsi d’éliminer une défaillance de la couche réseau inférieure à TCP. Néanmoins, la réponse à un écho émis par ping peut être inhibée au sein d’un système pour des raisons de sécurité, en l’occurrence pour éviter la collecte d’informations d’état (actif ou non), dans un réseau donné, sur les nœuds qui composent ce réseau.

Les extraits de sortie des commandes suivants illustrent un retour effectif de requêtes émises avec le programme ping (ici dans un système GNU/Linux) auquel est passé l’argument localhost.

  • Exemple de requête ICMP avec IPv4 :
$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.3 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.1 ms
[…]
  • Exemple de requête ICMP avec IPv6 :
$ ping6 localhost
PING localhost(::1) from ::1: 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.049 ms
[…]

Liens internes

Notes et références

  1. ou plusieurs
  2. par exemple plusieurs navigateurs Internet différents, ou plusieurs clients MySQL
  3. Le nom localhost doit être défini comme un nom associé à une adresse IP. C’est typiquement le cas au sein d’un fichier particulier appelé hosts, regroupant des correspondances entre des adresses IPv4 et/ou IPv6 et des noms ou alias.
  4. Une machine virtuelle est notamment connectable à un réseau physique par un commutateur ou un routeur virtuel configuré au sein d’un logiciel de virtualisation.