/ / Qual è la differenza tra il Locahost e l'indirizzo IP locale?

Qual è la differenza tra Locahost e l'indirizzo IP locale?


Se stai facendo molti tentativi di rete,configurando app e strumenti server basati su LAN, o semplicemente curiosi, probabilmente avrai notato che c'è una differenza tra l'host locale e l'indirizzo IP locale. Continua a leggere per imparare le differenze.

La sessione di domande e risposte di oggi ci viene fornita da SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte guidato dalla community.

La domanda

Il lettore SuperUser Diogo vuole sapere perché il comando ping tratta diversamente l'host locale e l'indirizzo IP locale quando, in superficie, sembrano essere la stessa cosa:

L'uso di cmd e ping su Windows mi ha dato i seguenti risultati:

Ping "localhost":

Ping "192.168.0.10" (indirizzo IP locale):

Entrambe le situazioni non sono esattamente uguali?

Voglio dire, sto eseguendo il ping della stessa interfaccia, della stessa macchina e dello stesso indirizzo. Perché ottengo risultati così diversi?

Ovviamente c'è una differenza di qualche tipo, ma cosa succede esattamente quando si passa tra i due?

La risposta

Il collaboratore di SuperUser Tom Wijsman offre le seguenti informazioni sulle sottili differenze tra i due:

Non stai eseguendo il ping della stessa interfaccia, senza alcuna interfaccia fisica hai ancora un "host locale".

Il tuo localhost è usato per riferirsi al tuo computer dal suoIP "interno", non da alcun IP "esterno" del tuo computer. Pertanto, i pacchetti ping non passano attraverso alcuna interfaccia di rete fisica; solo attraverso un'interfaccia di loopback virtuale che invia direttamente i pacchetti da una porta all'altra senza alcun hop fisico.

Potresti ancora chiederti perché localhost si sta risolvendo ::1, mentre tradizionalmente ci aspetteremmo che si risolva all'indirizzo IPv4 127.0.0.1. Nota che .localhost è tradizionalmente un TLD (vedi RFC 2606) che rimanda all'indirizzo IP di loopback (per IPv4, vedi RFC 3330, in particolare 127.0.0.0/8).

Guardando in alto localhost utilizzando nslookup ci da:

nslookup localhost

...
Name:    localhost
Addresses:  ::1
127.0.0.1

Pertanto Windows preferisce utilizzare l'indirizzo IP di loopback IPv6 ::1 (vedi RFC 2373) come elencato per primo.

Okay, quindi, da dove viene, diamo un'occhiata al file hosts.

type %WINDIR%System32DriversEtcHosts

...
# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
...

Hmm, dobbiamo guardare le impostazioni DNS di Windows.

Questo articolo KB ci parla di un'impostazione che influenza ciò che Windows preferisce, sottolineato in grassetto:

  1. Nell'editor del Registro di sistema, individuare e fare clic sulla seguente sottochiave del Registro di sistema:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
    
  2. Fare doppio clic su DisabledComponents per modificare la voce DisabledComponents. Nota: se la voce DisabledComponents non è disponibile, è necessario crearla. Per fare ciò, attenersi alla seguente procedura:
    1. Nel menu Modifica, scegliere Nuovo, quindi fare clic su Valore DWORD (32 bit).
    2. Digitare DisabledComponents e quindi premere INVIO.
    3. Fare doppio clic su DisabledComponents.
  3. Digitare uno dei seguenti valori nel campo Dati valore: per configurare il protocollo IPv6 sullo stato desiderato, quindi fare clic su OK:
    • genere 0 per abilitare tutti i componenti IPv6. (Impostazione predefinita di Windows)
    • genere 0xffffffff per disabilitare tutti i componenti IPv6, tranne IPv6interfaccia di loopback. Questo valore configura anche Windows per preferire l'utilizzo di Internet Protocol versione 4 (IPv4) su IPv6 modificando le voci nella tabella dei criteri del prefisso. Per ulteriori informazioni, consultare Selezione dell'indirizzo di origine e destinazione.
    • genere 0x20 preferire IPv4 su IPv6 modificando le voci nella tabella dei criteri del prefisso.
    • genere 0x10 per disabilitare IPv6 su tutte le interfacce non tunnel (su entrambe le interfacce LAN e Point-to-Point Protocol [PPP]).
    • genere 0x01 per disabilitare IPv6 su tutte le interfacce del tunnel. Questi includono ISATAP (Intra-Site Automatic Tunnel Addressing Protocol), 6to4 e Teredo.
    • genere 0x11 per disabilitare tutte le interfacce IPv6 ad eccezione dell'interfaccia di loopback IPv6.
  4. Riavvia il computer affinché questa impostazione abbia effetto.

Cos'è questa tabella delle politiche dei prefissi?

netsh interface ipv6 show prefixpolicies (o prefixpolicy nelle versioni precedenti)

Precedence  Label  Prefix
----------  -----  --------------------------------
50      0  ::1/128
45     13  fc00::/7
40      1  ::/0
10      4  ::ffff:0:0/96
7     14  2002::/16
5      5  2001::/32
1     11  fec0::/10
1     12  3ffe::/16
1     10  ::/96

Questa tabella decide quali prefissi hanno la precedenza su altri prefissi durante le risoluzioni DNS.

Ah, quindi usando quel KB potremmo aggiungere qui voci che denotano che IPv4 ha una precedenza maggiore rispetto a IPv6.

Nota: Non c'è motivo di ignorare questo comportamento, a meno che non si verifichino problemi compatibili. La modifica di questa impostazione sul nostro Windows Server ha interrotto il nostro server di posta, quindi dovrebbe essere gestito con cura ...

Non c'è niente che ci piace di più di un approfondito erisposta informativa con documenti di supporto collegati da risparmiare. Chiaramente localhost e indirizzo IP locale sono entità distinte, servono a scopi diversi e ora sappiamo tutti perché.


Hai qualcosa da aggiungere alla spiegazione? Suona nei commenti. Vuoi leggere altre risposte da altri utenti esperti di Stack Exchange? Dai un'occhiata al thread completo di discussione qui.