Gli indirizzi IP sono utilizzati nelle reti informatiche basate sull’Internet Protocol (IP, appunto) per individuare univocamente un host ovvero un dispositivo collegato alla rete stessa. Nello specifico un indirizzo IP viene assegnato a un’interfaccia di rete presente su un computer, un dispositivo mobile, un prodotto per l’Internet delle Cose (IoT), un router o un altro apparato di rete e così via. Ogni dispositivo può usare una o più interfacce: i router, per esempio, ne utilizzano almeno due; tanti notebook dispongono di una scheda di rete WiFi e di una Ethernet. A ciascuna può essere assegnato un indirizzo IP e nell’articolo in cui spieghiamo cos’è un indirizzo IP abbiamo visto che essi possono essere pubblici o privati.
Gli indirizzi IP pubblici sono raggiungibili direttamente attraverso la rete Internet mentre gli indirizzi IP privati vengono assegnati ai dispositivi collegati a valle del router aziendale o domestico: essi compongono la rete locale.
Quando si parla di localhost, invece, si fa riferimento al nome che contraddistingue l’interfaccia di loopback. In questo articolo vediamo che cosa significa e quali sono le differenze rispetto all’IP 127.0.0.1.
Cos’è Localhost, quando e perché si utilizza
Per fare riferimento, dal punto di vista delle connessioni di rete, al dispositivo che si sta utilizzando si utilizza abitualmente la denominazione localhost.
Se sul PC in uso (ma lo stesso si può dire nel caso di un server come di un dispositivo mobile, indipendentemente quindi dalla tipologia, dal fattore di forma e dal sistema operativo installato) fosse in esecuzione un server web che risponde alle richieste di connessione in ingresso sulle porte 80 (HTTP) o 443 (HTTPS), digitando nella barra degli indirizzi del browser rispettivamente http://localhost/
oppure https://localhost/
, si riceverebbe risposta (nell’esempio di un server web si otterrebbe la visualizzazione di una pagina HTML).
Utilizzando il nome localhost è possibile interagire con qualunque servizio in esecuzione sul dispositivo locale: è sufficiente conoscere il numero della porta sulla quale è in ascolto il server per inviare una richiesta di connessione.
Tra i comandi Windows da conoscere per le operazioni di rete c’è Netstat. Provate a premere Windows+X
, a scegliere Windows PowerShell in Windows 10 o Terminale in Windows 11 quindi a digitare il comando che segue:
Otterrete, nella parte superiore del responso, la lista di servizi in ascolto (LISTENING) con le rispettive porte (colonna Indirizzo locale).
La porta TCP 445, per esempio, è utilizzata dal servizio di condivisione file e stampanti basato sul protocollo SMB (Server Message Block).
Digitando tnc localhost -port 445
si ottiene risposta (TcpTestSucceeded: True), a conferma che il server SMB sta gestendo le richieste di connessione in arrivo.
Come alternativa rispetto alla cmdlet PowerShell tnc
(Test-NetConnection) in Windows si può usare il comando telnet
che però deve essere installato manualmente premendo Windows+R
, digitando optionalfeatures
quindi spuntando la casella Client Telnet.
Il firewall e il NAT evitano che servizi chiamati a rispondere alle richieste di connessione in ambito locale possano essere esposti sull’IP pubblico e raggiungibili anche da host remoti.
Differenza tra localhost e 127.0.0.1
Nelle reti TCP/IP l’indirizzo IP che corrisponde a localhost è 127.0.0.1 in formato IPv4 oppure ::1
nella notazione IPv6.
Il più delle volte localhost e 127.0.0.1 o ::1
vengono utilizzati in modo intercambiabile: esistono però delle sottili differenze:
– L’indirizzo IP associato a localhost deve essere risolto o cercato mentre 127.0.0.1 o ::1
non richiedono alcuna risoluzione.
– Localhost non è sempre risolto come 127.0.0.1 o ::1
: può essere risolto con un altro indirizzo all’interno del blocco di indirizzi di loopback. Modificare il file HOSTS permette di mappare localhost su un indirizzo differente.
– La richiesta di connessione non passa attraverso la scheda di rete quando si utilizza localhost. Viceversa, l’utilizzo di 127.0.0.1 o ::1
passa attraverso la scheda di rete il cui comportamento potrebbe essere influenzato dalle impostazioni e dalle configurazioni del firewall.
Nel formato IPv4 vengono utilizzati come indirizzi di loopback quelli che compongono l’ultimo blocco degli indirizzi di classe A (da 127.0.0.1 a 127.255.255); come già detto, invece, IPv6 riserva il primo indirizzo (0:0:0:0:0:0:0:1 o in breve ::1
) come indirizzo di loopback.
Come si legge nella RFC 3330 dell’Internet Assigned Numbers Authority (IANA) il blocco utilizzato per gli indirizzi di loopback non deve essere utilizzato in alcuna rete. Eppure, da tempo ormai immemorabile, 127.0.0.1 viene utilizzato anche sui DNS pubblici per bloccare la risoluzione di nomi a dominio che devono essere resi irraggiungibili (di solito l’operazione viene posta in essere dai gestori dei resolver DNS in seguito a un’ordinanza delle Autorità).
Perché è utile usare localhost
Il nome localhost oppure gli indirizzi 127.0.0.1 e ::1
possono essere utilizzati dalle applicazioni per comunicare con lo stesso sistema su cui esse risultano in esecuzione.
Abbiamo già citato l’esempio del server web locale che non viene esposto sulla rete Internet e che installato sulla singola macchina permette di eseguire un’applicazione Web con la possibilità di farvi test, migliorarla, fare debugging e verificare attentamente il funzionamento prima di pubblicarla online, ad esempio su un sistema in hosting o su un server cloud.
Le applicazioni Web utilizzano spesso un server MySQL o MariaDB per leggere e scrivere dati a livello di database: supponendo di installare tale server in locale, è possibile interagirvi usando un client che interagisce sulla porta 3306 (indirizzo localhost:3306
).
Ovviamente, un servizio che è in ascolto su una certa porta sull’interfaccia di loopback risulterà accessibile – almeno per impostazione predefinita – dagli altri dispositivi collegati in rete locale: questi ultimi dovranno però utilizzare l’IP privato della macchina sulla quale il servizio è in esecuzione e specificare la porta corrispondente.
Nel caso di Windows, le porte aperte sull’interfaccia di rete dell’host in uso non risultano raggiungibili neppure dall’interno della rete locale se si sceglie rete pubblica al posto di rete privata.
La corretta configurazione del firewall permette comunque di specificare quali porte devono risultare raggiungibili e quali non devono esserlo.