Jaka jest różnica między 127.0.0.1 a 0.0.0.0?

234

Rozumiem, że 127.0.0.1 wskazuje localhost, podobnie jak 0.0.0.0 (popraw mnie, jeśli się mylę). Jaka jest różnica między 127.0.0.1 a 0.0.0.0?

Sagnik Sarkar
źródło
1
Być może zainteresuje Cię dyskusja na temat śledzenia błędów w Chrome na temat obsługi 0.0.0.0wprowadzania adresu.
Jeremy Banks,
6
W większości konfiguracji serwera 0.0.0.0 oznacza, słuchaj WSZYSTKICH adresów! Dzięki temu Twój serwer będzie dostępny w Internecie. Jeśli zrobisz to dla jakiegoś lokalnego serwera bez żadnych zabezpieczeń (to nasłuchuje tylko na localhost, prawda?), To źle. Nie rób tego!
Josef
56
Odpowiedz dosłownie na pytanie, różnica jest 2130706433.
Shaz
2
@Mast, och, jesteś jedną z osób, które konfigurują całkowicie niepewny system, ponieważ zapora naprawi to wszystko? Zazwyczaj systemy te można znaleźć w shodan.io : 3 Kolejnym poziomem tego sposobu myślenia jest „możemy całkowicie korzystać z 5-letniej instalacji WordPress, mamy WAF”. Nigdy nie polecam nikomu podążania tą ścieżką!
Josef,
2
@Shaz Chciałbym zagłosować za twoim komentarzem, ale ponieważ obecnie ma 42 lata, nie mogę się na to zmusić ...
Jenny D

Odpowiedzi:

221

Jaka jest różnica między 127.0.0.1 a 0.0.0.0?

  • 127.0.0.1 to adres sprzężenia zwrotnego (znany również jako localhost).

  • 0.0.0.0 to niemożliwy do routingu meta-adres używany do oznaczania niepoprawnego, nieznanego lub nieodpowiedniego celu (brak określonego symbolu zastępczego adresu).

    W kontekście wpisu trasy zwykle oznacza domyślną trasę.

    W kontekście serwerów 0.0.0.0 oznacza „wszystkie adresy IPv4 na komputerze lokalnym”. Jeśli host ma dwa adresy IP, 192.168.1.1 i 10.1.2.1, a serwer działający na hoście nasłuchuje w wersji 0.0.0.0, będzie on dostępny dla obu tych adresów IP.


Co to jest adres IP 127.0.0.1?

127.0.0.1 jest adresem IP protokołu pętli zwrotnej, zwanym także „hostem lokalnym”. Adres ten służy do ustanowienia połączenia IP z tym samym komputerem lub komputerem, z którego korzysta użytkownik końcowy.

Ta sama konwencja została zdefiniowana dla komputerów obsługujących adresowanie IPv6 przy użyciu konotacji :: 1. Nawiązywanie połączenia przy użyciu adresu 127.0.0.1 jest najczęstszą praktyką; jednak przy użyciu dowolnego adresu IP z zakresu 127 .. . * będzie działać w ten sam lub podobny sposób. Konstrukcja sprzężenia zwrotnego daje komputerowi lub urządzeniu zdolnemu do pracy w sieci możliwość weryfikacji lub ustalenia stosu IP na komputerze.

Źródło: 127.0.0.1 - Jakie są jego zastosowania i dlaczego jest to ważne?


Specjalne adresy

Do sieci o numerze 127 klasy A przypisana jest funkcja „sprzężenia zwrotnego”, to znaczy datagram wysłany przez protokół wyższego poziomu na adres sieci 127 powinien zapętlić się z powrotem w hoście. Żaden datagram „wysłany” na adres sieciowy 127 nigdy nie powinien pojawić się w żadnej sieci w dowolnym miejscu.

Źródło: Numery sieciowe


Jeśli jest to cała klasa A, jaki jest sens innych arbitralnych wartości dla ostatnich trzech oktetów?

Celem zakresu sprzężenia zwrotnego jest testowanie implementacji protokołu TCP / IP na hoście. Ponieważ w dolnych warstwach występuje zwarcie, wysyłanie na adres pętli zwrotnej pozwala na skuteczne testowanie wyższych warstw (IP i powyżej) bez ryzyka pojawienia się problemów na niższych warstwach. 127.0.0.1 to adres najczęściej używany do celów testowych.

Źródło: Zastrzeżone IP, sprzężenie zwrotne i adresy prywatne

Aby uzyskać więcej informacji, zobacz pytanie https://askubuntu.com Co to jest urządzenie sprzężenia zwrotnego i jak go używać? i dlaczego adres IP sprzężenia zwrotnego od 127.0.0.1 do 127.255.255.254? .


Co to jest adres IP 0.0.0.0?

„0.0.0.0” to poprawna składnia adresu. Powinien więc być analizowany jako poprawny wszędzie tam, gdzie oczekiwany jest adres IP w tradycyjnej notacji dziesiętnej z kropkami. Po przeanalizowaniu i przekonwertowaniu na wykonalną postać numeryczną, jej wartość określa, co będzie dalej.

Wartość zerowa ma specjalne znaczenie. Jest więc „ważny”, ale ma znaczenie, które może nie być odpowiednie (a zatem traktowane jako nieważne) w określonych okolicznościach. Zasadniczo jest to symbol zastępczy „bez konkretnego adresu”. W przypadku powiązania adresu z połączeniami sieciowymi wynikiem może być przypisanie odpowiedniego adresu interfejsu do połączenia. Jeśli używasz go do konfigurowania interfejsu, może zamiast tego usunąć adres z interfejsu. To zależy od kontekstu użycia, aby ustalić, co tak naprawdę robi „żaden konkretny adres”.

W kontekście wpisu trasy zwykle oznacza domyślną trasę . Dzieje się tak w wyniku większej ilości maski adresu, która wybiera bity do porównania. Maska „0.0.0.0” nie wybiera bitów, więc porównanie zawsze się powiedzie. Tak więc, gdy taka trasa jest skonfigurowana, zawsze jest gdzieś, gdzie mogą iść pakiety (jeśli skonfigurowane z poprawnym miejscem docelowym).

W niektórych przypadkach działa tylko „0” i mają ten sam efekt. Ale nie jest to gwarantowane. Formularz „0.0.0.0” to standardowy sposób na powiedzenie „brak konkretnego adresu” (w IPv6 to „:: 0” lub po prostu „::”).

Źródło: Jakie jest znaczenie adresu IP 0.0.0.0


W wersji 4 protokołu internetowego adres 0.0.0.0 jest nieradowalnym meta-adresem używanym do oznaczania niepoprawnego, nieznanego lub nieodpowiedniego celu. Nadanie specjalnego znaczenia skądinąd niepoprawnym fragmentom danych jest zastosowaniem sygnalizacji wewnątrzpasmowej.

W kontekście serwerów 0.0.0.0 oznacza „wszystkie adresy IPv4 na komputerze lokalnym”. Jeśli host ma dwa adresy IP, 192.168.1.1 i 10.1.2.1, a serwer działający na hoście nasłuchuje w wersji 0.0.0.0, będzie on dostępny dla obu tych adresów IP.

W kontekście routingu 0.0.0.0 zwykle oznacza domyślną trasę, tj. Trasę, która prowadzi do „reszty” Internetu zamiast gdzieś w sieci lokalnej.

Zastosowania obejmują:

  • Adres, który host twierdzi, że jest własny, jeśli jeszcze nie został mu przypisany adres. Na przykład podczas wysyłania początkowego pakietu DHCPDISCOVER podczas korzystania z DHCP.
  • Adres, który host przypisuje do siebie, gdy żądanie adresu przez DHCP zakończy się niepowodzeniem, pod warunkiem, że stos IP hosta to obsługuje. Wykorzystanie to zostało zastąpione mechanizmem APIPA w nowoczesnych systemach operacyjnych.
  • Sposób na określenie „dowolnego hosta IPv4”. Jest używany w ten sposób przy określaniu domyślnej trasy.
  • Sposób jawnego określenia, że ​​cel jest niedostępny. 1
  • Sposób na określenie „dowolnego adresu IPv4”. Jest używany w ten sposób podczas konfigurowania serwerów (tj. Podczas wiązania gniazd nasłuchujących). Programiści TCP nazywają to INADDR_ANY. (bind (2) wiąże adresy, a nie interfejsy).

W IPv6 adres zera zerowego jest zapisywany jako „::”.

Źródło: 0.0.0.0


Wykrywanie / żądanie DHCP

Kiedy klient uruchamia się po raz pierwszy, mówi się, że jest w stanie inicjalizacji i przesyła komunikat DHCPDISCOVER w swojej lokalnej podsieci fizycznej przez port 67 protokołu UDP (User Datagram Protocol) (serwer BootP). Ponieważ klient nie ma możliwości poznania podsieci, do której należy, DHCPDISCOVER jest transmisją we wszystkich podsieciach (docelowy adres IP 255.255.255.255), ze źródłowym adresem IP 0.0.0.0. Źródłowy adres IP to 0.0.0.0, ponieważ klient nie ma skonfigurowanego adresu IP.Jeśli serwer DHCP istnieje w tej lokalnej podsieci i jest skonfigurowany i działa poprawnie, serwer DHCP usłyszy transmisję i odpowie komunikatem DHCPOFFER. Jeśli serwer DHCP nie istnieje w lokalnej podsieci, musi istnieć Agent przekazywania DHCP / BootP w tej lokalnej podsieci, aby przekazać komunikat DHCPDISCOVER do podsieci zawierającej serwer DHCP.

Ten agent przekazywania może być dedykowanym hostem (na przykład Microsoft Windows Server) lub routerem (na przykład routerem Cisco skonfigurowanym z instrukcjami pomocniczymi IP na poziomie interfejsu).

...

Po otrzymaniu DHCPOFFER klient odpowiada komunikatem DHCPREQUEST, wskazującym zamiar zaakceptowania parametrów w DHCPOFFER i przechodzi w stan Żądania. Klient może odbierać wiele komunikatów DHCPOFFER, po jednym z każdego serwera DHCP, który odebrał oryginalny komunikat DHCPDISCOVER. Klient wybiera jeden DHCPOFFER i odpowiada tylko na ten serwer DHCP, domyślnie odrzucając wszystkie pozostałe komunikaty DHCPOFFER. Klient identyfikuje wybrany serwer, wypełniając pole opcji Identyfikator serwera adresem IP serwera DHCP. DHCPREQUEST jest także rozgłoszeniem, więc wszystkie serwery DHCP, które wysłały DHCPOFFER, zobaczą DHCPREQUEST i każdy będzie wiedział, czy jego DHCPOFFER został zaakceptowany czy odrzucony. Wszelkie dodatkowe opcje konfiguracji wymagane przez klienta zostaną uwzględnione w polu opcji komunikatu DHCPREQUEST.Mimo że klientowi zaoferowano adres IP, wyśle ​​komunikat DHCPREQUEST ze źródłowym adresem IP 0.0.0.0. W tej chwili klient nie otrzymał jeszcze weryfikacji, czy można użyć adresu IP.

...

Konwersacja klient-serwer dla klienta uzyskiwania adresu DHCP, gdzie klient i serwer DHCP znajdują się w tej samej podsieci

Wpisz opis zdjęcia tutaj

Źródło: Zrozumienie i rozwiązywanie problemów z DHCP w Catalyst Switch lub Enterprise Networks


Trasa domyślna

W tym dokumencie wyjaśniono, jak skonfigurować domyślną trasę lub bramę ostatniej szansy. Używane są następujące polecenia IP:

  • ip domyślna brama

  • ip domyślna sieć

  • i ip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

Tworzenie statycznej trasy do sieci 0.0.0.0 0.0.0.0 to kolejny sposób na ustawienie bramy ostatniej szansy na routerze. Podobnie jak w przypadku polecenia ip default-network, użycie statycznej trasy do 0.0.0.0 nie zależy od żadnego protokołu routingu. Jednak routing IP musi być włączony na routerze.

Uwaga: IGRP nie rozumie trasy do 0.0.0.0. Dlatego nie może propagować domyślnych tras utworzonych za pomocą polecenia ip route 0.0.0.0 0.0.0.0. Użyj polecenia ip default-network, aby IGRP propagował domyślną trasę.

Źródło: Konfigurowanie bramy ostatniej szansy za pomocą poleceń IP

DavidPostill
źródło
3
W kontekście serwerów 0.0.0.0 oznacza „wszystkie adresy IPv4 na komputerze lokalnym”. Jeśli host ma dwa adresy IP, 192.168.1.1 i 10.1.2.1, a serwer działający na hoście nasłuchuje w wersji 0.0.0.0, będzie on dostępny dla obu tych adresów IP. - to mi zrobiło
Rafael Eyng
112

One nie są takie same.

127.0.0.1 jest częścią sieci 127/8, która jest zarezerwowana i wskazuje ten sam komputer.

0.0.0.0 to specjalny adres IP, który oznacza różne rzeczy w zależności od kontekstu.

W protokole internetowym w wersji 4 adres 0.0.0.0 jest niemożliwym do routingu meta-adresem używanym do oznaczania niepoprawnego, nieznanego lub niestosowalnego celu. Nadanie specjalnego znaczenia skądinąd niepoprawnym fragmentom danych jest zastosowaniem sygnalizacji wewnątrzpasmowej.

Być może pomyliłeś 0.0.0.0 z 127.0.0.1, kiedy patrzysz na netstat i widzisz, że lokalny adres nasłuchuje jako 0.0.0.0, ale jest to inny sposób użycia 0.0.0.0.

W kontekście serwerów 0.0.0.0 oznacza „wszystkie adresy IPv4 na komputerze lokalnym”. Jeśli host ma dwa adresy IP, 192.168.1.1 i 10.1.2.1, a serwer działający na hoście nasłuchuje w wersji 0.0.0.0, będzie on dostępny dla obu tych adresów IP.

W kontekście routingu 0.0.0.0 zwykle oznacza domyślną trasę, tj. Trasę, która prowadzi do „reszty” Internetu zamiast gdzieś w sieci lokalnej.

https://en.wikipedia.org/wiki/0.0.0.0

Cristian Dobre
źródło
0.0.0.0może czasem wskazywać na transmisję, co oznacza wszystkie komputery w sieci.
James Mertz
8
@KronoS Myślałem, że transmisje są takie 255.255.255.255(lub bardziej realistycznie coś w rodzaju 192.168.1.255sieci lokalnej)
Nick T
1
@NickT Ah masz rację :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz
@KronoS Mylisz adres nadawcy z pętlą zwrotną. Sprzężenie zwrotne to 0.0.0.0, które, jak opisano powyżej, nasłuchuje wszystkich adresów lokalnych. Transmisja (w prosty sposób) to 255 sieci do „emisji” na wszystkie adresy w tej sieci.
Desorder
Jest to niekompletne - wiele systemów operacyjnych umożliwia połączenie z wersją 0.0.0.0, która zachowuje się jak adres zwrotny.
grawity
16

127.0.0.1 jest jednym z adresów komputera lokalnego, ale każdy adres 127.xyz jest także innym adresem komputera (zwanym „adresem sprzężenia zwrotnego”), z wyjątkiem 127.0.0.0 (podsieci sprzężenia zwrotnego) i 127.255.255.255 (adres rozgłoszeniowy dla podsieć sprzężenia zwrotnego).

127.xyz oznacza „tutaj”.

0.0.0.0 jest zupełnie inny: 0.0.0.0 nie jest adresem niczego , jest jokerem, jak *w powłoce.

Nie możesz wysłać danych do 0.0.0.0 lub aktywnie otworzyć połączenia TCP do 0.0.0.0, ponieważ nic tam nie ma; 0.0.0.0 nie jest nawet adresem nieosiągalnym lub nierutowalnym, nie ma znaczenia w kontekście, w którym oczekiwany jest adres .

Możesz użyć jokera 0.0.0.0 w kontekstach, w których można opcjonalnie podać adres , co oznacza, że mnie to nie obchodzi .

Na przykład, gdy aktywnie otwierasz połączenie TCP z jakimś serwerem TCP (serwer TCP jest tworzony przez pasywne otwieranie TCP), musisz podać adres serwera TCP (IP i numer portu) i opcjonalnie możesz wybrać lokalny adres. (Ponieważ twoje gniazdo nie jest gniazdem serwera, nikt nie może otworzyć połączenia z nim, a adres po twojej stronie połączenia zwykle nie jest bardzo ważny).

bindWezwanie system jest używany do wyboru lokalnego adresu gniazda TCP. Przekazywane dane bindto tak naprawdę zbiór ograniczeń: ograniczenie adresu IP, ograniczenie portu TCP. Zazwyczaj notacja tekstowa to IP: port. 0.0.0.0:0 oznacza, że ​​dowolny adres IP i dowolny port jest dopuszczalny, jest to ograniczenie zerowe. 0.0.0.0:20 oznacza, że ​​port lokalny musi mieć 20, każdy dopuszczalny adres IP (0.0.0.0:20 jest używany przez zgodne serwery FTP do połączenia danych w trybie aktywnym).

Podsystem TCP / IP wybiera adres strony połączenia TCP, jeśli go nie wybierzesz, korzystając z tabeli routingu na podstawie adresu docelowego: lokalny adres gniazda TCP będzie adresem lokalnym powiązanym z odpowiednią trasą na adres docelowy.

Wcześniej wspomniałem o „meta-znaku” powłoki *, ale moc łączenia meta-znaków ze znakami takimi jak *foo*(dowolna nazwa pliku zawierająca „foo”) nie istnieje z ograniczeniami adresu IP, to wszystko albo nic: albo jeden adres IP jest uważane za dopuszczalne lub wszystkie adresy są. Logika nie nakazuje, aby tak było. Możesz rozszerzyć interfejs o bogatszy język ograniczeń.

Precyzja:

Zdanie 127.xyz oznacza „tutaj” nie oznacza, że ​​wszystkie te adresy są takie same. Reprezentują one różne „lokalizacje” (adresy gniazd), wewnątrz lokalnego „komputera”, faktycznie wewnątrz lokalnego stosu IP.

Uwaga: komputer z wirtualizacją (emulacja, wirtualizacja sprzętowa, parawirtualizacja, cokolwiek możesz wymyślić ...) ma wiele niezależnych stosów adresów IP.

ciekawy
źródło
Kiedy wpisałem losowy adres zaczynający się od 127 (np. 127.16.23.42) w mojej przeglądarce, nie łączył się on z hostem lokalnym.
whoKnows,
@whoKnows Oczywiście. localhost to 127.0.0.1, a nie 127.16.23.42.
ciekawy
Widzę. Więc 127.0.0.1 oznacza localhost, ale 127.xyz może oznaczać komputer lokalny, jeśli został skonfigurowany w ten sposób?
whoKnows,
2
@whoKnows No: 127.xyz należy do tego komputera dla dowolnego xy z. „localhost” to tylko nazwa 127.0.0.1, więc zapomnij o „localhost”. Użyj flagi -nlub powiązanych programów, aby wyświetlić adresy numeryczne, a nie nazwy. Adres 127.0.0.1 nie jest tym samym adresem IP co 127.16.23.42. Zatem 127.0.0.1:80 i 127.16.23.42:80 reprezentują odrębne adresy punktów końcowych TCP, serwera WWW pod jednym adresem nie można znaleźć pod drugim adresem. -dnetstat
ciekawy
6

Zazwyczaj używasz adresu powiązania 0.0.0.0, aby zezwolić na połączenia z zewnętrznych sieci i źródeł. Wiele serwerów, takich jak MySQL, zazwyczaj łączy się z 127.0.0.1, zezwalając tylko na połączenia zwrotne, wymagając od administratora zmiany na 0.0.0.0, aby umożliwić połączenie zewnętrzne.

Marek Bejda
źródło