24Aug
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 lokalnym hostem a lokalnym adresem IP.Czytaj dalej, aby poznać różnice.
Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.
Pytanie Czytnik
SuperUser Diogo chce wiedzieć, dlaczego polecenie ping traktuje localhost i lokalny adres IP inaczej, gdy na pozór 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, 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?
Autor odpowiedzi
SuperUser Tom Wijsman oferuje następujący wgląd w subtelne różnice między tymi dwoma:
Nie pingujesz tego samego interfejsu , bez fizycznych interfejsów wciąż masz "host lokalny".
Twój localhost jest używany w odniesieniu do twojego komputera z "wewnętrznego" adresu IP, a nie z "zewnętrznych" adresów IP twojego komputera. Tak więc pakiety ping nie przechodzą przez żaden fizyczny interfejs sieciowy;tylko poprzez interfejs zwrotny wirtualnej pętli, który bezpośrednio wysyła pakiety z portu do portu bez fizycznych przeskoków.
Ciągle zastanawiacie się, dlaczego localhost rozwiązuje problem: : 1, podczas gdy tradycyjnie spodziewalibyśmy się, że rozwiąże on adres IPv4 127.0.0.1.Zauważ, że. localhost 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).
Wyszukując localhost za pomocą polecenia nslookup, otrzymujemy:
nslookup localhost
. .. Nazwa: localhost Adresy:: : 1 127.0.0.1W związku z tym Windows woli używać adresu zwrotnego IPv6 z pętli: 1( patrz RFC 2373), tak jak jestwymienione na pierwszym miejscu.
OK, więc skąd się bierze, spójrzmy na plik hosts.
typ% WINDIR% \ System32 \ Drivers \ Etc \ Hosts
. .. Rozwiązanie # localhost name jest obsługiwane w samym DNS.# 127.0.0.1 localhost #: : 1 localhost. ..Hmm, musimy przyjrzeć się ustawieniom DNS systemu Windows.
W tym artykule w bazie wiedzy podano informacje o ustawieniu wpływającym na preferencje systemu Windows, wyróżnione pogrubieniem:
- W Edytorze rejestru zlokalizuj i kliknij następujący klucz rejestru: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters
- Kliknij dwukrotnie pozycję DisabledComponents, abyzmodyfikuj wpis DisabledComponents. Uwaga: Jeśli wpis DisabledComponents jest niedostępny, musisz go utworzyć.Aby to zrobić, wykonaj następujące kroki:
- W menu Edycja wskaż polecenie Nowy, a następnie kliknij wartość DWORD( 32-bitowa).
- Wpisz DisabledComponents, a następnie naciśnij klawisz ENTER.
- Kliknij dwukrotnie pozycję DisabledComponents.
- W polu Dane wartości wpisz jedną z następujących wartości, aby skonfigurować protokół IPv6 do żądanego stanu, a następnie kliknij przycisk OK:
- Wpisz 0, aby włączyć wszystkie składniki IPv6.(Domyślne ustawienie systemu Windows)
- Wpisz 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) za pośrednictwem protokołu IPv6 przez modyfikowanie wpisów w tabeli zasad przedrostków. Aby uzyskać więcej informacji, zobacz Wybór źródła i adresu docelowego.
- Wpisz 0x20, aby preferować IPv4 przez IPv6, modyfikując wpisy w tabeli strategii przedrostków.
- Wpisz 0x10, aby wyłączyć IPv6 na wszystkich interfejsach typu "nontunnel"( zarówno w interfejsie LAN, jak i w protokołach PPP).
- Wpisz 0x01, aby wyłączyć IPv6 we wszystkich interfejsach tunelowych. Są to między innymi automatyczny protokół adresowania tuneli( ISATAP), 6to4 i Teredo.
- Wpisz 0x11, aby wyłączyć wszystkie interfejsy IPv6 z wyjątkiem interfejsu sprzężenia zwrotnego IPv6.
- Uruchom ponownie komputer, aby to ustawienie zaczęło obowiązywać.
Co to jest ta tabela zasad przedrostków?
netsh interface ipv6 show prefixpolicies( lub prefixpolicy we wcześniejszych wersjach) Prefiks
Precedence Label ---------- ----- -------------------------------- 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: : / 96Ta tabela określa, które prefiksy mają pierwszeństwo przed innymi prefiksami podczas rozpoznawania DNS.
Ah, więc używając tej bazy danych 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 występują problemy ze zgodnością.Zmiana tego ustawienia na naszym serwerze Windows zepsuła nasz serwer pocztowy, dlatego należy obchodzić się z nim ostrożnie. ..
Nie ma nic bardziej niż dokładna i pouczająca odpowiedź, a do tego powiązane dokumenty pomocnicze. Oczywiście localhost i lokalny adres IP są odrębnymi jednostkami, służą różnym celom, a teraz wszyscy wiemy dlaczego.
Czy chcesz coś dodać 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.