Główna » jak » Jaka jest różnica między lokalizacją a lokalnym adresem IP?

    Jaka jest różnica między lokalizacją a lokalnym adresem IP?


    Jeśli robisz dużo majsterkowania sieciowego, konfigurujesz aplikacje sieciowe i narzędzia serwerowe lub po prostu ciekawi, zauważyłeś, że istnieje różnica między localhost a lokalnym adresem IP. Czytaj dalej, aby poznać różnice.

    Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.

    Pytanie

    Czytnik SuperUser Diogo chce wiedzieć, dlaczego polecenie ping traktuje localhost i lokalny adres IP inaczej, gdy na powierzchni wydają się być tym samym:

    Używanie poleceń cmd i ping w systemie Windows dało mi następujące wyniki:

    Pingowanie "localhost":

    Pingowanie "192.168.0.10" (lokalny adres IP):

    Czy obie sytuacje są dokładnie takie same?

    Mam na myśli, że pinguję ten sam interfejs, tę samą maszynę i ten sam adres. Dlaczego otrzymuję tak różne wyniki?

    Oczywiście jest jakaś różnica, ale co dokładnie dzieje się po przełączeniu między tymi dwoma?

    Odpowiedź

    Współpracownik SuperUser Tom Wijsman oferuje następujące wgląd w subtelne różnice między tymi dwoma:

    Nie pingujesz tego samego interfejsu, bez fizycznych interfejsów nadal masz "hosta lokalnego".

    Twój Lokalny Gospodarz jest używany w odniesieniu do komputera z "wewnętrznego" adresu IP, a nie z "zewnętrznych" adresów IP komputera. Tak więc pakiety ping nie przechodzą przez żaden fizyczny interfejs sieciowy; tylko poprzez interfejs zwrotny wirtualnej pętli, która bezpośrednio wysyła pakiety z portu do portu bez fizycznych przeskoków.

    Nadal możesz się zastanawiać dlaczego Lokalny Gospodarz postanawia :: 1, podczas gdy tradycyjnie spodziewalibyśmy się, że rozwiąże on adres IPv4 127.0.0.1. Zauważ, że .Lokalny Gospodarz jest tradycyjnie TLD (patrz RFC 2606), który wskazuje powrót do adresu IP pętli (dla IPv4, patrz RFC 3330, szczególnie 127.0.0.0/8).

    Patrząc w górę Lokalny Gospodarz za pomocą nslookup daje nam:

    nslookup localhost

    ... Nazwa: localhost Adresy: :: 1 127.0.0.1 

    W związku z tym system Windows woli używać adresu IP z powrotem do pętli IPv6 :: 1 (patrz dokument RFC 2373), ponieważ jest on wymieniony jako pierwszy.

    Okay, więc skąd się bierze, spójrzmy na plik hosts.

    wpisz% WINDIR% \ System32 \ Drivers \ Etc \ Hosts

    ... Rozpoznawanie nazw # localhost jest obsługiwane w samym DNS. # 127.0.0.1 localhost # :: 1 localhost ... 

    Hmm, musimy przyjrzeć się ustawieniom DNS systemu Windows.

    W tym artykule z bazy wiedzy podano informacje o ustawieniu wpływającym na preferencje systemu Windows, wyróżnione pogrubieniem:

    1. W Edytorze rejestru zlokalizuj, a następnie kliknij następujący podklucz rejestru:
      HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters 
    2. Kliknij dwukrotnie pozycję DisabledComponents, aby zmodyfikować pozycję DisabledComponents. Uwaga: Jeśli wpis DisabledComponents jest niedostępny, musisz go utworzyć. Aby to zrobić, wykonaj następujące kroki:
      1. W menu Edycja wskaż polecenie Nowy, a następnie kliknij wartość DWORD (32-bitowa).
      2. Wpisz DisabledComponents, a następnie naciśnij klawisz ENTER.
      3. Kliknij dwukrotnie pozycję DisabledComponents.
    3. Wpisz dowolną z następujących wartości w polu Dane wartości:, aby skonfigurować protokół IPv6 do żądanego stanu, a następnie kliknij przycisk OK:
      • Rodzaj 0 aby włączyć wszystkie komponenty IPv6. (Domyślne ustawienie Windows)
      • Rodzaj 0xffffffff aby wyłączyć wszystkie składniki IPv6, z wyjątkiem interfejsu sprzężenia zwrotnego IPv6. Ta wartość powoduje również skonfigurowanie systemu Windows do preferowania używania protokołu IP w wersji 4 (IPv4) przez IPv6 przez modyfikowanie wpisów w tabeli zasad przedrostków. Aby uzyskać więcej informacji, zobacz Wybór źródła i adresu docelowego.
      • Rodzaj 0x20 preferować IPv4 przez IPv6, modyfikując wpisy w tabeli strategii przedrostków.
      • Rodzaj 0x10 wyłączyć IPv6 na wszystkich interfejsach typu "nontunnel" (zarówno w interfejsach LAN, jak i PPP).
      • Rodzaj 0x01 aby wyłączyć IPv6 na wszystkich interfejsach tunelowych. Należą do nich automatyczny protokół adresowania tuneli wewnątrzzakładowych (ISATAP), 6to4 i Teredo.
      • Rodzaj 0x11 aby wyłączyć wszystkie interfejsy IPv6 z wyjątkiem interfejsu sprzężenia zwrotnego IPv6.
    4. Uruchom ponownie komputer, aby to ustawienie zaczęło obowiązywać.

    Co to jest ta tabela polityk przedrostków?

    Interfejs netsh ipv6 pokazuje prefixpolicies (lub prefixpolicy w starszych wersjach)

    Prefiks etykiety Prefiks ---------- ----- -------------------------------- 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 

    Ta tabela decyduje, które prefiksy mają pierwszeństwo przed innymi prefiksami podczas rozwiązywania DNS.

    Ah, więc używając tego KB możemy dodać tutaj wpisy, które oznaczają, że IPv4 ma wyższy priorytet niż IPv6.

    Uwaga: Nie ma powodu, aby zastępować to zachowanie, chyba że masz problemy ze zgodnością. Zmiana tego ustawienia na naszym serwerze Windows zepsuła nasz serwer pocztowy, więc należy obchodzić się z nim ostrożnie ...

    Nie ma nic lepszego niż dokładna i pouczająca odpowiedź, której brakuje w powiązanych dokumentach pomocniczych. Oczywiście localhost i lokalny adres IP to odrębne jednostki, służą różnym celom, a teraz wszyscy wiemy dlaczego.


    Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.