Differenza tra localhost e l'indirizzo IP


16

Se si associa un socket in Python a localhost, 8200 questo è accessibile tramite http: // localhost: 8200 / . ma non http: // xxxx: 8200 /

Se si associa un socket in Python a xxxx, 8200, machinename, 8200 questo è accessibile tramite http: // xxxx: 8200 / e http: // machinename: 8200 / , ma non http: // localhost: 8200 /

Pensavo che localhost significasse "questa macchina", e che usarlo sarebbe "tornare indietro" all'indirizzo IP della macchina, ma sembra che sia IP diverso.

127.0.0.1 è sempre un indirizzo IP diverso dall'indirizzo IP della macchina?

aggiornare:

Capisco che i numeri effettivi sono diversi, ma cosa fa il loopback?

Ad esempio, Wikepedia afferma che
"indirizzando un browser Web agli URL http://127.0.0.1/ o http: // localhost / accederà al sito Web di quel computer"

ma quel sito Web sarà accessibile anche su xxxx e presumibilmente sarà impostato con un singolo socket su xxxx Quindi come funzionano entrambi i riferimenti?

conclusione:

Penso di aver finalmente capito che 127.0.0.1 e xxxx funzionano così

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

e non

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

o

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Grazie a tutti per l'aiuto


1
hai scritto "127.0.0.1 è sempre un indirizzo IP diverso dall'indirizzo IP della macchina". I numeri tra i punti sono diversi, ovvero un indirizzo IP diverso. Che strana domanda che fai. Se per indirizzo IP della macchina intendi qualcosa di diverso da 127.0.0.1, sì, sarebbe un indirizzo IP diverso. E se quello che chiami l'indirizzo IP della tua macchina è 192.168.0.1 (o qualche altro intervallo locale standard), allora non devi aver paura di dirlo. Puoi scriverlo invece di xxxx L'indirizzo 192 non esisterà comunque su Internet.
barlop

I riferimenti per entrambi funzionano a causa della configurazione del server Web. Puoi dire al server di legare a tutti gli indirizzi, o di ascoltare solo quelli specifici. Poiché il loopback e l'IP effettivo sono indirizzi distinti, la configurazione sta determinando su quale IP ascoltare. Poiché localhost è solo una voce host per 127.0.0.1, funzionerà solo quando il server Web è associato a 127.0.0.1.
peelman,

Risposte:


17

Per rispondere alla tua domanda.

127.0.0.1 non è solo un indirizzo IP diverso dall'indirizzo IP della macchina, è anche un'interfaccia diversa. 127.0.0.1 non dovrebbe essere visto sulla rete locale. È un indirizzo IP interno speciale per l'adattatore di loopback.

xxxx sarà la tua scheda ethernet.

tra l'altro 'localhost' è semplicemente una voce nel file hosts che punta a 127.0.0.1

Se si associa un socket a 127.0.0.1:8200, solo i client in esecuzione localmente potranno accedervi e solo con http://127.0.0.1:8200 o http: // localhost: 8200 (o una voce di file dns o hosts che indica 127.0.0.1).

Un socket associato a xxxx: 8200 sarà disponibile solo tramite http: // xxxx: 8200 o una voce del file dns o hosts che punta a quello.

Associare un socket a 127.0.0.1 non lo rende automaticamente disponibile anche sull'interfaccia Ethernet.

Ecco perché non è possibile connettersi a xxxx: 8200

È possibile associare la porta 8200 a tutte le interfacce disponibili (0.0.0.0), quindi dovrebbe funzionare.


Quindi cosa fa il bit "loopback"? A cosa serve il loopback? Ho pensato che fosse un modo per fare riferimento all'indirizzo IP della macchina, qualunque cosa accadesse fosse 'ie 127.0.0.1 => xxxx
David

1
L'interfaccia di loopback è un'interfaccia virtuale. Viene spesso utilizzato per consentire ai programmi di comunicare tra loro sulla stessa macchina. Non è un modo per fare riferimento all'indirizzo IP della macchina. 127.0.0.1 È l'indirizzo IP dell'adattatore virtuale di loopback.
Matt H

1
L'altro aspetto dell'adattatore di loopback è che, poiché è virtuale, in realtà non passa alcun pacchetto attraverso la scheda di rete.
Matt H

1
letteralmente sprecate 4 ore senza capire questo concetto ... a quanto pare alcuni server Web si legano automaticamente sia a xxxx sia a 127.0.0.1 per te che suscita confusione. Grande domanda e risposta ragazzi. Thx =)
jrhee17

3

Ad esempio, Wikepedia afferma che "indirizzando un browser Web agli URL http://127.0.0.1/ o http: // localhost / accederà al sito Web di quel computer"

Leggermente impreciso. Si può fare così. Allo stesso modo, potrebbe non visualizzare alcun sito Web ed è anche possibile visualizzare un sito Web interno diverso da quello che si ottiene quando si utilizza il proprio indirizzo xxxx.

127.0.0.1 punta alla tua macchina, ma ciò non significa che si comporterà allo stesso modo una volta raggiunta la tua macchina

Se desideri un'analogia non tecnica, puoi considerarli porte diverse nella tua casa.

Entrambi indicano la stessa casa ma non sono la stessa cosa. È possibile che ogni porta ti conduca nella stessa stanza o potrebbero portarti in una stanza diversa. È anche possibile bloccare una porta e non l'altra.

Quando configuri un sito web, specifichi a quali indirizzi associare e abbastanza spesso la risposta è tutti gli indirizzi. (Ciò equivale ad avere tutte le porte che ti portano in una stanza)

È inoltre possibile specificare il sito Web da associare a un solo indirizzo. (Ciò equivale a bloccare tutte le porte tranne una.)

Se hai due (o più) siti Web, puoi associarli a indirizzi separati. (Ciò equivale a far entrare ciascuna porta in stanze separate).

Un esempio di come funzionano entrambi i riferimenti, sul mio computer Windows 7 è installato IIS, quando accedo a Gestione IIS e faccio clic con il pulsante destro del mouse sul sito Web predefinito, viene visualizzata un'opzione di menu "Modifica collegamenti". Selezionando che si apre un elenco di associazioni. Ne ho solo uno, ma per l'indirizzo IP ha * che significa che IIS è in ascolto su tutti i miei indirizzi IP.


Grande analogia! Grazie mille ! Ho appena fatto una prova. Ho eseguito correttamente il binding 127.0.0.1:5000a un sito Web e associato 192.168.1.104:5000a un altro sito. La chiave è che address:portsignifica una stanza (servizio) diversa nella casa (il computer).
Rick,

1

Ogni indirizzo IP sul sistema è indipendente e può essere associato separatamente da socket, ad eccezione dell'indirizzo speciale 0.0.0.0 che indica al sistema operativo di associare il socket a tutte le interfacce.


1
Ma 127.0.0.1 è anche un indirizzo speciale, come la scelta più comune per l'interfaccia di loopback. A cosa ricollega quell'indirizzo?
David,

Ciò non lo rende "speciale", ma solo "un indirizzo sull'interfaccia di loopback" (a meno che tu non dica "ogni indirizzo è speciale a modo suo", ma non andiamo lì). È l'interfaccia che esegue il loop, non l'indirizzo.
Ignacio Vazquez-Abrams,
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.