Introduzione
I computer sono identificati dal loro hostname [nome del computer host] e dall'indirizzo IP.
Allo stesso modo, abbiamo anche un nome comune per tutti i sistemi informatici noto come localhost. Qui, il termine "localhost" è associato al contesto delle reti di computer. Svolge un ruolo fondamentale durante il nostro percorso come sviluppatore o amministratore di sistema. Esistono molti casi d'uso per "localhost", come test delle applicazioni, documentazione, test delle prestazioni di rete e blocco dei siti.
Cos'è Localhost?
Localhost è un hostname che si riferisce al sistema informatico su cui è in esecuzione il programma chiamante, il che significa che la macchina parlerà con se stessa quando chiamiamo localhost.
Ci aiuta a controllare i servizi di rete nella macchina, anche durante i guasti dell'hardware di rete. Quando si utilizza "localhost" si accede ai servizi di rete tramite l'interfaccia di rete logica chiamata loopback. L'indirizzo IP dell'interfaccia di loopback è 127.0.0.1
. Pertanto, il localhost si risolve in 127.0.0.1
come parte della risoluzione del nome.
Che cos'è un indirizzo di loopback?
Loopback è un'interfaccia di rete logica presente in tutti i sistemi operativi. I pacchetti trasmessi attraverso questa interfaccia vengono restituiti (in loop) alla stessa interfaccia nella stessa macchina. Quindi, l'interfaccia è chiamata loopback.
Secondo gli standard IETF per l'indirizzamento IPv4, l'intero blocco di 127.0.0.0/8
viene allocato per scopi di loopback di rete. Come comportamento predefinito, un'interfaccia di loopback viene configurata dopo ogni installazione del server.
Diamo un'occhiata al frammento di seguito:
ip a show lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 76238871 bytes 6955286874 (6.9 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 76238871 bytes 6955286874 (6.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sudo cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 sandbox1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
Componenti interni di elaborazione dei pacchetti di loopback
In genere, i pacchetti di loopback si distinguono dagli altri pacchetti IP per i loro indirizzi. L'elaborazione dei pacchetti di loopback con l'indirizzo di loopback avviene a livello di collegamento dello stack TCP/IP. Questo traffico passerà all'interno dei sistemi informatici stessi. Non colpirà le schede NIC hardware come altri pacchetti IP. Inoltre, esiste una regola per cui i router non devono instradare l'indirizzo IP di loopback.
Ad esempio, quando richiediamo l'indirizzo 127.0.0.1
. La richiesta non verrà inoltrata a Internet a causa del primo ottetto (127). Qui, lo stack TCP/IP riconosce la richiesta e la reindirizza alla stessa macchina.
ping -c 4 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms
--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.035/0.039/0.043/0.008 ms
ping -c 4 google.com
PING google.com (143.150.21.36) 56(84) bytes of data.
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=1 ttl=120 time=2.14 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=2 ttl=120 time=2.18 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=3 ttl=120 time=2.19 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=4 ttl=120 time=2.20 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.147/2.180/2.203/0.051 ms
Test dell'applicazione utilizzando Localhost
L'accessibilità del servizio applicativo avviene prima attraverso l'interfaccia di rete. Se il servizio dell'applicazione è mappato con un'interfaccia fisica, può essere accessibile dal mondo esterno. Allo stesso modo, se l'applicazione è mappata con un'interfaccia logica di loopback, è possibile accedervi solo da quel sistema informatico specifico e non può essere accessibile dal mondo esterno.
È sempre facile sviluppare e testare il codice dal server locale piuttosto che da un altro host remoto. Per ottenere ciò, mappiamo il nostro nome di dominio di produzione con un nuovo indirizzo di loopback (127.0.1.100) nel file /etc/hosts
. Le voci in /etc/hosts hanno la precedenza su DNS.
Il frammento di seguito mostra la risposta organica del ping dal server locale al server Web Noviello remoto. La mappatura del dominio è mostrata nel secondo frammento. Quando controlliamo attentamente l'output dopo aver mappato l'IP del segmento 127 su Noviello.it nel file dell'host, il traffico viene instradato a un'interfaccia di rete di loopback.
ping -c 4 noviello.it
PING noviello.it (132.12.73.145) 56(84) bytes of data.
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=1 ttl=59 time=34.5 ms
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=2 ttl=59 time=34.5 ms
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=3 ttl=59 time=34.5 ms
64 bytes from 1132.12.73.145 (132.12.73.145): icmp_seq=4 ttl=59 time=34.5 ms
--- noviello.it ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 34.521/34.529/34.541/0.227 ms
sudo cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 sandbox1
127.0.1.100 noviello.it
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
ping -c 4 noviello.it
PING noviello.it (127.0.1.100) 56(84) bytes of data.
64 bytes from noviello.it (127.0.1.100): icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=4 ttl=64 time=0.055 ms
--- noviello.it ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3062ms
rtt min/avg/max/mdev = 0.042/0.066/0.094/0.020 ms
Conclusione
Localhost è il nome predefinito del sistema in cui viene eseguito il nostro programma che ci aiuta a testare le applicazioni e a risolvere i problemi di rete. Si ottiene utilizzando un meccanismo di loop locale attraverso l'interfaccia di rete di loopback. Ci aiuta a testare il software senza dipendenze dalla configurazione dell'hardware di rete. Come utente di computer, è essenziale avere una conoscenza di base dei termini localhost e interfacce di rete loopback.