/ / Hvad er forskellen mellem Locahost og lokal IP-adresse?

Hvad er forskellen mellem Locahost og lokal IP-adresse?


Hvis du laver en masse netværksindknytning,ved at konfigurere LAN-baserede apps og serverværktøjer, eller bare nysgerrig, har du sandsynligvis bemærket, at der er en forskel mellem localhost den lokale IP-adresse. Læs videre for at lære forskellene.

Dagens spørgsmål & svar-session kommer til os med tilladelse fra SuperUser - en underafdeling af Stack Exchange, en samfundsdrevet gruppe af spørgsmål og svar på websteder.

Spørgsmålet

SuperUser-læser Diogo vil vide, hvorfor ping-kommandoen behandler localhost og den lokale IP-adresse forskelligt, når de på overfladen ser ud til at være den samme ting:

Brug af cmd og ping på Windows gav mig følgende resultater:

Pinging “localhost”:

Pinging “192.168.0.10” (lokal IP-adresse):

Er begge situationer ikke nøjagtig de samme?

Jeg mener, at jeg holder den samme grænseflade, den samme maskine og den samme adresse. Hvorfor får jeg så forskellige resultater?

Der er naturligvis en forskel af en slags, men hvad sker der nøjagtigt, når du skifter mellem de to?

Svaret

SuperUser-bidragyder Tom Wijsman tilbyder følgende indsigt i de subtile forskelle mellem de to:

Du pinger ikke den samme grænseflade, uden fysiske grænseflader har du stadig en "lokal vært".

Dine localhost bruges til at henvise til din computer fra dens"Intern" IP, ikke fra "eksterne" IP'er på din computer. Så ping-pakkerne passerer ikke gennem nogen fysisk netværksgrænseflade; kun gennem en virtuel loop back interface, der direkte sender pakkerne fra port til port uden fysiske humle.

Du måske stadig undre dig over, hvorfor localhost beslutter at ::1, mens vi traditionelt forventer, at den løser til IPv4-adressen 127.0.0.1. Noter det .localhost er traditionelt en TLD (se RFC 2606), der peger tilbage til loop back IP-adressen (for IPv4, se RFC 3330, især 127.0.0.0/8).

Kigger op localhost ved brug af nslookup giver os:

nslookup localhost

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

Således foretrækker Windows at bruge IPv6 loop back IP-adressen ::1 (se RFC 2373), da det er anført først.

Okay, så hvor kommer det fra, lad os se på værtsfilen.

type %WINDIR%System32DriversEtcHosts

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

Hmm, vi må se på DNS-indstillingerne i Windows.

Denne KB-artikel fortæller os om en indstilling, der påvirker, hvad Windows foretrækker, fremhævet med fed skrift:

  1. I Registreringseditor skal du finde og klikke på følgende registreringsdatabaseundernøgle:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
    
  2. Dobbeltklik på DisabledComponents for at ændre DisabledComponents-posten. Bemærk: Hvis posten DisabledComponents ikke er tilgængelig, skal du oprette den. Følg disse trin for at gøre dette:
    1. Peg på Ny i menuen Rediger, og klik derefter på DWORD (32-bit) værdi.
    2. Skriv DisabledComponents, og tryk derefter på ENTER.
    3. Dobbeltklik på DisabledComponents.
  3. Skriv en af ​​følgende værdier i feltet Værdidata: for at konfigurere IPv6-protokollen til den ønskede tilstand, og klik derefter på OK:
    • Type 0 for at aktivere alle IPv6-komponenter. (Windows standardindstilling)
    • Type 0xffffffff for at deaktivere alle IPv6-komponenter undtagen IPv6loopback interface. Denne værdi konfigurerer også Windows til at foretrække at bruge Internet Protocol version 4 (IPv4) frem for IPv6 ved at ændre poster i præfiksetypen. For mere information, se Kilde- og destinationsadressevalg.
    • Type 0x20 at foretrække IPv4 frem for IPv6 ved at ændre poster i præfiks-politiktabellen.
    • Type 0x10 for at deaktivere IPv6 på alle ikke-tunnelgrænseflader (på både LAN- og punkt-til-punktprotokol [PPP] -grænseflader).
    • Type 0x01 for at deaktivere IPv6 på alle tunnelgrænseflader. Disse inkluderer Intat-Site Automatic Tunnel Addressing Protocol (ISATAP), 6to4 og Teredo.
    • Type 0x11 for at deaktivere alle IPv6-grænseflader undtagen IPv6-loopback-grænsefladen.
  4. Genstart computeren, så denne indstilling træder i kraft.

Hvad er denne politik for præfiks-politik?

netsh interface ipv6 show prefixpolicies (eller prefixpolicy på tidligere versioner)

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

Denne tabel bestemmer, hvilke præfikser der får forrang frem for andre præfikser under DNS-opløsninger.

Ah, så ved hjælp af denne KB kunne vi tilføje poster her, der angiver, at IPv4 har højere forrang end IPv6.

Bemærk: Der er ingen grund til at tilsidesætte denne opførsel, medmindre du oplever kompatible problemer. Ændring af denne indstilling på vores Windows Server brød vores postserver, så den skal håndteres med omhu ...

Der er intet, vi kan lide mere end en grundig oginformativt svar med tilknyttede supportdokumenter til overs. Det er klart, at localhost og lokal IP-adresse er forskellige enheder, der tjener forskellige formål, og nu ved vi alle hvorfor.


Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk-erfarne Stack Exchange-brugere? Se den fulde diskussionstråd her.