GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie funktioniert die Loopback-Schnittstelle?

Die Loopback-Schnittstelle ist eine virtuelle Schnittstelle. Der einzige Zweck der Loopback-Schnittstelle besteht darin, die an sie gesendeten Pakete zurückzusenden, d. h. alles, was Sie an sie senden, wird auf der Schnittstelle empfangen. Es macht wenig Sinn, eine Standardroute auf die Loopback-Schnittstelle zu legen, da der einzige Ort, an den sie Pakete senden kann, das imaginäre Stück Draht ist, das vom Ausgang der Schnittstelle zum Eingang geschleift wird. Es gibt nichts, was dieses Verhalten der Loopback-Schnittstelle ändern kann, dafür ist es codiert.

Wenn Sie 10.0.3.2 anpingen, kommt die Antwort nicht von einem externen Gerät, sondern von der Loopback-Schnittstelle selbst. Wenn Sie eine Adresse auf der Loopback-Schnittstelle mit z. B.

hinzufügen
sudo ip addr add 10.0.3.1/24 dev lo

eine Route zu 10.0.3.0/24 hinzugefügt. Sie können dies mit

sehen
ip route show table local

So etwas wie

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

sollte sich zeigen. Dieser Routing-Tabelleneintrag gibt an, dass ein Paket an eine beliebige Adresse zwischen 10.0.3.1 gesendet wird und 10.0.3.254 wird über die lo gesendet Schnittstelle, von der es sofort zurückgegeben wird.

EDIT:Klarstellung als Antwort auf den Kommentar unten.

Folgendes passiert, wenn Sie 10.0.3.2 pingen:Der Kernel erhält ein IP-Paket zur Zustellung mit der Zieladresse 10.0.3.2. Wie bei jedem zuzustellenden Paket konsultiert der Kernel die Routing-Tabelle. In diesem Fall lautet der passende Eintrag:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1 , was besagt, dass das Paket über lo zugestellt werden soll Schnittstelle mit der Quelladresse 10.0.3.1.

Nun, weil das Paket an lo übergeben wurde -Schnittstelle, macht die Loopback-Schnittstelle das, was sie normalerweise tut:Sie nimmt das Paket aus der Sendewarteschlange und stellt es in die Empfangswarteschlange. Aus der Sicht des Kernels haben wir nun ein eingehendes Paket erhalten, das bereit ist, von einem Serverprozess verarbeitet zu werden, der auf einem Socket lauscht. (Im Fall von Ping verarbeitet der Kernel es intern.) Wir haben jetzt ein "entferntes" ICMP-Paket mit einer Zieladresse von 10.0.3.2 erhalten, was wohl keine unserer lokalen Adressen ist, aber es wurde an den Loopback geliefert Schnittstelle dennoch.

Als nächstes sendet der Kernel eine Antwort auf den Ping:ein ICMP-Antwortpaket mit vertauschten Adressen:10.0.3.2 als Quelladresse und 10.0.3.1 als Ziel. Dies wird über die Loopback-Schnittstelle zurück an das Ping-Programm geliefert, was zeigt, dass wir eine Antwort von 10.0.3.2 erhalten haben.


Linux
  1. Was ist NGINX? Wie funktioniert es?

  2. Wie funktioniert Awk ‘!a[$0]++’?

  3. Wie funktioniert das Sticky Bit?

  4. Der Zweck von .bashrc und wie funktioniert es?

  5. Wie funktionieren die Interna von Sudo?

Wie funktioniert SSH?

Wie funktioniert der Tee-Befehl?

Wie funktioniert Swap-Speicher in Linux?

Wie funktioniert das <( cmd )-Muster in Bash?

Wie funktioniert eine Linux-GUI auf der untersten Ebene?

Wie funktioniert die Anzeige von Linux?