GNU/Linux >> Linux Esercitazione >  >> Linux

Come funziona l'interfaccia di loopback

L'interfaccia di loopback è un'interfaccia virtuale. L'unico scopo dell'interfaccia di loopback è restituire i pacchetti che le vengono inviati, ovvero tutto ciò che le invii viene ricevuto sull'interfaccia. Non ha molto senso inserire un percorso predefinito sull'interfaccia di loopback, perché l'unico posto a cui può inviare i pacchetti è il pezzo di cavo immaginario che viene collegato dall'uscita dell'interfaccia all'ingresso. Non c'è nulla che possa cambiare questo comportamento dell'interfaccia di loopback, ecco cosa è codificato per fare.

Quando si esegue il ping 10.0.3.2, la risposta non proviene da un dispositivo esterno, ma dall'interfaccia di loopback stessa. Quando aggiungi un indirizzo sull'interfaccia di loopback con ad es.

sudo ip addr add 10.0.3.1/24 dev lo

un percorso per 10.0.3.0/24 è aggiunto. Puoi vederlo con

ip route show table local

Qualcosa come

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

dovrebbe presentarsi. Questa voce della tabella di routing indica che un pacchetto è stato inviato a qualsiasi indirizzo compreso tra 10.0.3.1 e 10.0.3.254 viene inviato tramite il lo interfaccia, da cui viene immediatamente restituito.

EDIT:chiarimento in risposta al commento qui sotto.

Ecco cosa succede quando esegui il ping 10.0.3.2:il kernel riceve un pacchetto IP per la consegna con un indirizzo di destinazione 10.0.3.2. Proprio come con qualsiasi pacchetto da consegnare, il kernel consulta la tabella di instradamento. In questo caso la voce corrispondente è questa:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1 , che dice che il pacchetto dovrebbe essere consegnato tramite il lo interfaccia con l'indirizzo sorgente 10.0.3.1.

Ora, perché il pacchetto è stato dato al lo interfaccia, l'interfaccia di loopback fa quello che fa normalmente:toglie il pacchetto dalla coda di invio e lo inserisce nella coda di ricezione. Dal punto di vista del kernel, ora abbiamo ricevuto un pacchetto in arrivo pronto per essere consumato da un processo del server in ascolto su un socket. (Nel caso del ping, il kernel lo elabora internamente.) Ora abbiamo ricevuto un pacchetto ICMP "remoto" con un indirizzo di destinazione 10.0.3.2, che probabilmente non è uno dei nostri indirizzi locali, ma è stato consegnato al loopback interfaccia comunque.

Successivamente, il kernel invia una risposta al ping:un pacchetto di risposta ICMP con gli indirizzi invertiti:10.0.3.2 come indirizzo di origine e 10.0.3.1 come destinazione. Questo viene inviato tramite l'interfaccia di loopback al programma ping, che mostra che abbiamo ricevuto una risposta da 10.0.3.2.


Linux
  1. Cos'è NGINX? Come funziona?

  2. Come funziona Awk '!a[$0]++'?

  3. Come funziona il comando 'ls' in Linux/Unix?

  4. Come funziona rm? Cosa fa rm?

  5. Come funziona un debugger in Linux?

Come funziona SSH?

Come funziona la memoria di scambio in Linux?

Come funziona effettivamente sig_atomic_t?

Come funziona il comando ps?

Come funziona una GUI Linux al livello più basso?

Come funziona il display di Linux?