GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fonctionne l'interface de bouclage

L'interface de bouclage est une interface virtuelle. Le seul but de l'interface de bouclage est de renvoyer les paquets qui lui sont envoyés, c'est-à-dire que tout ce que vous lui envoyez est reçu sur l'interface. Cela n'a aucun sens de mettre une route par défaut sur l'interface de bouclage, car le seul endroit où elle peut envoyer des paquets est le morceau de câble imaginaire qui est bouclé de la sortie de l'interface à l'entrée. Il n'y a rien qui puisse changer ce comportement de l'interface de bouclage, c'est ce pour quoi elle est codée.

Lorsque vous effectuez une requête ping sur 10.0.3.2, la réponse ne provient pas d'un périphérique externe, mais de l'interface de bouclage elle-même. Lorsque vous ajoutez une adresse sur l'interface de bouclage avec par exemple

sudo ip addr add 10.0.3.1/24 dev lo

un itinéraire vers 10.0.3.0/24 est ajouté. Vous pouvez le voir avec

ip route show table local

Quelque chose comme

local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1

devrait apparaître. Cette entrée de la table de routage indique qu'un paquet envoyé à n'importe quelle adresse entre 10.0.3.1 et 10.0.3.254 est envoyé via le lo interface, à partir de laquelle il est immédiatement renvoyé.

EDIT :clarification en réponse au commentaire ci-dessous.

Voici ce qui se passe lorsque vous pingez 10.0.3.2 :le noyau reçoit un paquet IP à livrer avec une adresse de destination 10.0.3.2. Comme pour tout paquet à livrer, le noyau consulte la table de routage. Dans ce cas, l'entrée correspondante est celle-ci :local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1 , qui indique que le paquet doit être livré via le lo interface avec l'adresse source 10.0.3.1.

Maintenant, parce que le paquet a été donné au lo interface, l'interface de bouclage fait ce qu'elle fait normalement :elle retire le paquet de la file d'attente d'envoi et le place dans la file d'attente de réception. Du point de vue du noyau, nous avons maintenant reçu un paquet entrant prêt à être consommé par un processus serveur écoutant sur une socket. (Dans le cas du ping, le noyau le traite en interne.) Nous avons maintenant reçu un paquet ICMP "distant" avec une adresse de destination de 10.0.3.2, qui n'est sans doute pas l'une de nos adresses locales, mais il a été livré au bouclage interface néanmoins.

Ensuite, le noyau envoie une réponse au ping :un paquet de réponse ICMP avec les adresses inversées :10.0.3.2 comme adresse source et 10.0.3.1 comme destination. Ceci est transmis via l'interface de bouclage au programme ping, ce qui montre que nous avons reçu une réponse de 10.0.3.2.


Linux
  1. Qu'est-ce que NGINX ? Comment ça marche?

  2. Ssh – Comment Tcp-keepalive fonctionne-t-il dans Ssh ?

  3. Comment fonctionne la commande Exit sur un terminal Unix ?

  4. Comment fonctionne la commande Tee ? ?

  5. Comment fonctionne un débogueur sous Linux ?

Comment fonctionne SSH ?

Comment fonctionne la mémoire d'échange sous Linux ?

Comment ça marche ? Que fait rm ?

Comment fonctionne sig_atomic_t ?

Comment fonctionne une interface graphique Linux au niveau le plus bas ?

Comment fonctionne l'affichage de Linux ?