Qual è la differenza tra 127.0.0.1 e 0.0.0.0?


235

Capisco che 127.0.0.1 punta a localhost, e così fa 0.0.0.0 (correggimi se sbaglio). Quindi, qual è la differenza tra 127.0.0.1 e 0.0.0.0?


1
Potresti essere interessato a questa discussione sul tracker di bug di Chrome su come gestire l' 0.0.0.0input dell'indirizzo.
Jeremy Banks,

6
Nella maggior parte delle configurazioni di server 0.0.0.0 significa, ascoltare TUTTI gli indirizzi! Ciò renderà il tuo server disponibile su Internet. Se lo fai per alcuni server locali senza alcuna sicurezza (è solo in ascolto su localhost, giusto?) È male. Non farlo!
Josef,

56
Rispondi letteralmente alla tua domanda, la differenza è 2130706433.
Shaz,

2
@Mast oh, sei una delle persone che installano un sistema totalmente insicuro, perché il firewall risolverà tutto? Di solito, questo sistema può essere trovato con shodan.io : 3 Il livello successivo di questa mentalità è "possiamo totalmente usare un'installazione di WordPress di 5 anni, abbiamo ottenuto un WAF". Non consiglio a nessuno di seguire questa strada, mai!
Josef,

2
@Shaz Vorrei dare un voto al tuo commento, ma dato che è attualmente a 42 anni non riesco a convincermi a farlo ...
Jenny D,

Risposte:


221

Qual è la differenza tra 127.0.0.1 e 0.0.0.0?

  • 127.0.0.1 è l'indirizzo di loopback (noto anche come localhost).

  • 0.0.0.0 è un meta-indirizzo non instradabile utilizzato per designare un target non valido, sconosciuto o non applicabile (un segnaposto senza indirizzo specifico).

    Nel contesto di una voce di rotta, di solito significa la rotta predefinita.

    Nel contesto dei server, 0.0.0.0 significa "tutti gli indirizzi IPv4 sul computer locale". Se un host ha due indirizzi IP, 192.168.1.1 e 10.1.2.1 e un server in esecuzione sull'host è in ascolto su 0.0.0.0, sarà raggiungibile su entrambi gli IP.


Che cos'è l'indirizzo IP 127.0.0.1?

127.0.0.1 è l'indirizzo IP (Internet Protocol) di loopback indicato anche come "localhost". L'indirizzo viene utilizzato per stabilire una connessione IP con la stessa macchina o computer utilizzato dall'utente finale.

La stessa convenzione è definita per i computer che supportano l'indirizzamento IPv6 usando la connotazione di :: 1. Stabilire una connessione utilizzando l'indirizzo 127.0.0.1 è la pratica più comune; tuttavia, utilizzando qualsiasi indirizzo IP compreso nell'intervallo 127 .. . * funzionerà allo stesso modo o in modo simile. Il costrutto loopback offre a un computer o dispositivo in grado di collegare in rete la capacità di convalidare o stabilire lo stack IP sulla macchina.

Fonte: 127.0.0.1 - Quali sono i suoi usi e perché è importante?


Indirizzi speciali

Alla classe di rete A numero 127 viene assegnata la funzione "loopback", ovvero un datagramma inviato da un protocollo di livello superiore a un indirizzo di rete 127 dovrebbe tornare indietro all'interno dell'host. Nessun datagramma "inviato" a un indirizzo di rete 127 dovrebbe mai apparire su qualsiasi rete ovunque.

Fonte: numeri di rete


Se è un'intera classe A, qual è il punto di altri valori arbitrari per gli ultimi tre ottetti?

Lo scopo dell'intervallo di loopback è il test dell'implementazione del protocollo TCP / IP su un host. Poiché gli strati inferiori sono in cortocircuito, l'invio a un indirizzo di loopback consente di testare efficacemente gli strati superiori (IP e superiori) senza la possibilità che si manifestino problemi agli strati inferiori. 127.0.0.1 è l'indirizzo più comunemente utilizzato a scopo di test.

Fonte: indirizzi riservati IP, loopback e indirizzi privati

Per ulteriori informazioni, consultare la domanda https://askubuntu.com Che cos'è il dispositivo di loopback e come si usa? e perché l'indirizzo IP di loopback è compreso tra 127.0.0.1 e 127.255.255.254? .


Che cos'è l'indirizzo IP 0.0.0.0?

"0.0.0.0" è una sintassi dell'indirizzo valida. Quindi dovrebbe essere considerato valido ovunque sia previsto un indirizzo IP nella notazione decimale puntata tradizionale. Una volta analizzato e convertito in forma numerica praticabile, il suo valore determina cosa succede dopo.

Il valore tutto zero ha un significato speciale. Quindi è "valido", ma ha un significato che potrebbe non essere appropriato (e quindi trattato come non valido) per circostanze particolari. Fondamentalmente è il segnaposto "nessun indirizzo particolare". Per cose come l'associazione di indirizzi delle connessioni di rete, il risultato può essere quello di assegnare un indirizzo di interfaccia appropriato alla connessione. Se lo stai usando per configurare un'interfaccia, può invece rimuovere un indirizzo dall'interfaccia. Dipende dal contesto di utilizzo per determinare cosa fa realmente "nessun indirizzo particolare".

Nel contesto di una voce di rotta, di solito significa la rotta predefinita . Ciò accade di conseguenza più della maschera di indirizzo, che seleziona i bit da confrontare. Una maschera di "0.0.0.0" non seleziona bit, quindi il confronto avrà sempre successo. Quindi, quando viene configurato un tale percorso, c'è sempre un posto dove andare i pacchetti (se configurato con una destinazione valida).

In alcuni casi, anche solo "0" funzionerà e avrà lo stesso effetto. Ma questo non è garantito. Il modulo "0.0.0.0" è il modo standard di dire "nessun indirizzo particolare" (in IPv6 che è ":: 0" o semplicemente "::").

Fonte: qual è il significato dell'indirizzo IP 0.0.0.0


In Internet Protocol versione 4 l'indirizzo 0.0.0.0 è un meta-indirizzo non instradabile utilizzato per designare una destinazione non valida, sconosciuta o non applicabile. Dare un significato speciale a un dato altrimenti non valido è un'applicazione di segnalazione in banda.

Nel contesto dei server, 0.0.0.0 significa "tutti gli indirizzi IPv4 sul computer locale". Se un host ha due indirizzi IP, 192.168.1.1 e 10.1.2.1 e un server in esecuzione sull'host è in ascolto su 0.0.0.0, sarà raggiungibile su entrambi gli IP.

Nel contesto del routing, 0.0.0.0 generalmente indica la route predefinita, ovvero la route che porta al "resto di" Internet anziché da qualche parte sulla rete locale.

Gli usi includono:

  • L'indirizzo che un host rivendica come proprio quando non gli è stato ancora assegnato un indirizzo. Ad esempio quando si invia il pacchetto DHCPDISCOVER iniziale quando si utilizza DHCP.
  • L'indirizzo assegnato da un host a se stesso quando la richiesta dell'indirizzo tramite DHCP non è riuscita, a condizione che lo stack IP dell'host lo supporti. Questo utilizzo è stato sostituito con il meccanismo APIPA nei moderni sistemi operativi.
  • Un modo per specificare "qualsiasi host IPv4". Viene utilizzato in questo modo quando si specifica un percorso predefinito.
  • Un modo per specificare esplicitamente che la destinazione non è disponibile. 1
  • Un modo per specificare "qualsiasi indirizzo IPv4". Viene utilizzato in questo modo durante la configurazione dei server (ovvero quando si collegano socket di ascolto). Questo è noto ai programmatori TCP come INADDR_ANY. (bind (2) si lega agli indirizzi, non alle interfacce.)

In IPv6, l'indirizzo di tutti zeri è scritto come "::".

Fonte: 0.0.0.0


Individuazione / richiesta DHCP

Quando un client si avvia per la prima volta, si dice che sia nello stato Inizializzazione e trasmette un messaggio DHCPDISCOVER sulla sua sottorete fisica locale sulla porta 67 UDP (User Datagram Protocol) (server BootP). Poiché il client non ha modo di conoscere la sottorete a cui appartiene, DHCPDISCOVER è una trasmissione di tutte le sottoreti (indirizzo IP di destinazione 255.255.255.255), con un indirizzo IP di origine 0.0.0.0. L'indirizzo IP di origine è 0.0.0.0, poiché il client non ha un indirizzo IP configurato.Se esiste un server DHCP su questa sottorete locale ed è configurato e funziona correttamente, il server DHCP sentirà la trasmissione e risponderà con un messaggio DHCPOFFER. Se un server DHCP non esiste sulla sottorete locale, deve essere presente un agente di inoltro DHCP / BootP su questa sottorete locale per inoltrare il messaggio DHCPDISCOVER a una sottorete che contiene un server DHCP.

Questo agente di inoltro può essere un host dedicato (ad esempio Microsoft Windows Server) o un router (ad esempio un router Cisco configurato con istruzioni di supporto IP a livello di interfaccia).

...

Dopo che il client riceve un DHCPOFFER, risponde con un messaggio DHCPREQUEST, indicando l'intenzione di accettare i parametri in DHCPOFFER e passa allo stato Richiesta. Il client può ricevere più messaggi DHCPOFFER, uno da ciascun server DHCP che ha ricevuto il messaggio DHCPDISCOVER originale. Il client sceglie un DHCPOFFER e risponde solo a quel server DHCP, rifiutando implicitamente tutti gli altri messaggi DHCPOFFER. Il client identifica il server selezionato popolando il campo dell'opzione Identificatore server con l'indirizzo IP del server DHCP. DHCPREQUEST è anche una trasmissione, quindi tutti i server DHCP che hanno inviato DHCPOFFER vedranno DHCPREQUEST e ognuno saprà se il suo DHCPOFFER è stato accettato o rifiutato. Eventuali opzioni di configurazione aggiuntive richieste dal client verranno incluse nel campo delle opzioni del messaggio DHCPREQUEST.Anche se al client è stato offerto un indirizzo IP, invierà il messaggio DHCPREQUEST con un indirizzo IP di origine 0.0.0.0. Al momento, il client non ha ancora ricevuto la verifica che sia chiaro usare l'indirizzo IP.

...

Conversazione client-server per client che ottiene l'indirizzo DHCP in cui il client e il server DHCP risiedono sulla stessa sottorete

Inserisci qui la descrizione dell'immagine

Fonte: comprensione e risoluzione dei problemi relativi a DHCP in Catalyst Switch o Enterprise Networks


Percorso predefinito

Questo documento spiega come configurare una route predefinita o gateway di ultima istanza. Vengono utilizzati questi comandi IP:

  • ip default-gateway

  • ip default-network

  • e ip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

La creazione di una route statica verso la rete 0.0.0.0 0.0.0.0 è un altro modo per impostare il gateway dell'ultima risorsa su un router. Come per il comando ip default-network, l'utilizzo della route statica a 0.0.0.0 non dipende da alcun protocollo di routing. Tuttavia, il routing ip deve essere abilitato sul router.

Nota: IGRP non comprende una route per 0.0.0.0. Pertanto, non è in grado di propagare le route predefinite create utilizzando il comando ip route 0.0.0.0 0.0.0.0. Utilizzare il comando ip default-network per fare in modo che IGRP propaghi una route predefinita.

Fonte: configurazione di un gateway di ultima istanza tramite i comandi IP


3
Nel contesto dei server, 0.0.0.0 significa "tutti gli indirizzi IPv4 sul computer locale". Se un host ha due indirizzi IP, 192.168.1.1 e 10.1.2.1 e un server in esecuzione sull'host è in ascolto su 0.0.0.0, sarà raggiungibile da entrambi gli IP. - è stato per me
Rafael Eyng,

112

Non sono gli stessi.

127.0.0.1 fa parte della rete 127/8 che è riservata e punta allo stesso computer.

0.0.0.0 è un indirizzo IP speciale che significa cose diverse a seconda del contesto.

In Internet Protocol versione 4, l'indirizzo 0.0.0.0 è un meta-indirizzo non instradabile utilizzato per designare una destinazione non valida, sconosciuta o non applicabile. Dare un significato speciale a un dato altrimenti non valido è un'applicazione di segnalazione in banda.

0.0.0.0 potrebbe essere scambiato per 127.0.0.1 quando guardi netstat e vedi che l'indirizzo locale è in ascolto come 0.0.0.0, ma questo è un modo diverso di usare 0.0.0.0.

Nel contesto dei server, 0.0.0.0 significa "tutti gli indirizzi IPv4 sul computer locale". Se un host ha due indirizzi IP, 192.168.1.1 e 10.1.2.1 e un server in esecuzione sull'host è in ascolto su 0.0.0.0, sarà raggiungibile su entrambi gli IP.

Nel contesto del routing, 0.0.0.0 generalmente indica la route predefinita, ovvero la route che porta al "resto di" Internet anziché da qualche parte sulla rete locale.

https://en.wikipedia.org/wiki/0.0.0.0


0.0.0.0a volte può anche indicare una trasmissione, vale a dire a tutti i computer della rete.
James Mertz,

8
@KronoS Pensavo che le trasmissioni fossero cose del genere 255.255.255.255(o più realisticamente qualcosa del genere 192.168.1.255per una rete locale)
Nick T

1
@NickT Ah hai ragione :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz il

@KronoS Stai confondendo l'add broadcast con il loopback. Il loopback è 0.0.0.0 che come descritto sopra ascolta tutti gli indirizzi locali. La trasmissione (in modo semplice) è il 255 delle reti per "trasmettere" a tutti gli indirizzi in quella rete.
Disordine

Questo è incompleto: molti sistemi operativi in ​​realtà ti consentono di collegarti a 0.0.0.0, che quindi si comporta come un indirizzo di loopback.
Grawity il

16

127.0.0.1 è uno degli indirizzi del computer locale, ma qualsiasi indirizzo 127.xyz è anche un altro indirizzo del computer (chiamato "indirizzo di loopback"), tranne 127.0.0.0 (sottorete di loopback) e 127.255.255.255 (indirizzo di trasmissione per il sottorete di loopback).

127.xyz significa "qui".

0.0.0.0 è totalmente diverso: 0.0.0.0 non è l'indirizzo di nulla , è il jolly, come *nella shell.

Non è possibile inviare dati a 0.0.0.0 o aprire attivamente una connessione TCP a 0.0.0.0 perché non c'è nulla lì; 0.0.0.0 non è nemmeno un indirizzo irraggiungibile o non instradabile, è insignificante in un contesto in cui è previsto un indirizzo .

Puoi usare il joker 0.0.0.0 in contesti in cui un indirizzo può essere fornito facoltativamente , nel senso che non mi interessa .

Ad esempio, quando si apre attivamente una connessione TCP a un server TCP (un server TCP viene creato da un TCP passivo aperto), è necessario specificare l'indirizzo del server TCP (IP e numero di porta) e, facoltativamente , è possibile scegliere un indirizzo locale. (Poiché il tuo socket non è un socket del server, nessuno può aprire una connessione ad esso e l'indirizzo sul tuo lato della connessione di solito non è molto importante.)

La bindchiamata di sistema viene utilizzata per scegliere l'indirizzo locale di un socket TCP. I dati passati a bindsono in realtà un insieme di vincoli: vincolo sull'indirizzo IP, vincolo sulla porta TCP. La solita notazione testuale è IP: port. 0.0.0.0:0 significa che qualsiasi IP e qualsiasi porta sono accettabili, è il vincolo nullo. 0.0.0.0:20 significa che la porta locale deve essere 20, qualsiasi IP è accettabile (0.0.0.0:20 viene utilizzato da server FTP conformi per la connessione dati in modalità attiva).

Il sottosistema TCP / IP sceglierà l'indirizzo per il lato della connessione TCP se non ne scegli uno, utilizzando la tabella di routing, in base all'indirizzo di destinazione: l'indirizzo socket TCP locale sarà l'indirizzo locale associato alla route corrispondente all'indirizzo di destinazione.

In precedenza ho menzionato la shell "meta-carattere" *, ma il potere di combinare meta-caratteri con caratteri come *foo*(qualsiasi nome di file contenente "pippo") non esiste con vincoli di indirizzo IP, è tutto o niente: o un singolo indirizzo IP è ritenuto accettabile o tutti gli indirizzi lo sono. La logica non impone che debba essere così. È possibile estendere l'interfaccia con un linguaggio di vincoli più ricco.

Precisione:

La frase 127.xyz significa "qui" non implica che tutti questi indirizzi siano uguali. Rappresentano diverse "posizioni" (indirizzi socket), all'interno del "computer" locale, all'interno dello stack IP locale.

Nota: un computer con virtualizzazione (emulazione, virtualizzazione hardware, paravirtualizzazione, qualunque cosa tu possa pensare ...) ha più stack IP indipendenti.


Quando ho digitato un indirizzo casuale che inizia con 127 (ad es. 127.16.23.42) nel mio browser, non si è collegato a localhost.
who Know

@whoKnows Certo. localhost è 127.0.0.1, non 127.16.23.42.
curioso

Vedo. Quindi 127.0.0.1 significa localhost, ma 127.xyz potrebbe significare il computer locale, se è stato impostato in quel modo?
who Know

2
@whoKnows No: 127.xyz appartiene a questo computer per qualsiasi xy z. "localhost" è solo un nome per 127.0.0.1, quindi dimentica "localhost". Utilizzare il flag -no -ddi netstate dei programmi correlati per mostrare indirizzi numerici, non nomi. 127.0.0.1 non è lo stesso indirizzo IP di 127.16.23.42. Quindi 127.0.0.1:80 e 127.16.23.42:80 rappresentano indirizzi endpoint TCP distinti, un server web con un indirizzo non può essere trovato all'altro indirizzo.
curiousguy,

6

In genere si utilizza l'indirizzo di associazione 0.0.0.0 per consentire connessioni da reti e fonti esterne. Molti server come MySQL si collegano in genere a 127.0.0.1 consentendo solo connessioni di loopback, richiedendo all'amministratore di modificarlo in 0.0.0.0 per abilitare la connettività esterna.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.