Wiem, że 127.0.0.1 ~ 127.255.255.254 to adresy IP sprzężenia zwrotnego dla większości współczesnych systemów operacyjnych i te adresy IP mogą być używane w odniesieniu do naszego własnego komputera.
Ale co to jest 0.0.0.0? Wygląda na to, że odnosi się to również do lokalnego komputera, więc jaka jest różnica ?
Czy mógłbyś mi wyjaśnić następujące połączenia IP:
ip
ip-address
netstat
Jichao
źródło
źródło
::1
jako adres sprzężenia zwrotnego.Odpowiedzi:
Jedyną rzeczą jest to, że nie mówisz, że „wszystkie adresy powinny mieć dostęp” - dzieje się to w zaporze (firewallach) i / lub oprogramowaniu serwera i / lub innych warstwach bezpieczeństwa, takich jak tcpwrappers.
W tym kontekście 0.0.0.0 oznacza „wszystkie adresy IP na komputerze lokalnym” (w rzeczywistości prawdopodobnie „wszystkie adresy IPv4 na komputerze lokalnym”). Tak więc, jeśli twój serwer WWW ma dwa adresy IP, 192.168.1.1 i 10.1.2.1, i pozwolisz demonowi serwera WWW, jak apache, nasłuchiwać w wersji 0.0.0.0, będzie on dostępny na obu tych adresach IP. Ale tylko do tego, co może skontaktować się z tymi adresami IP i portami internetowymi.
Zauważ, że w innym kontekście (routing) 0.0.0.0 zwykle oznacza trasę domyślną (trasę do „reszty” Internetu, oprócz tras w sieci lokalnej itp.).
źródło
0.0.0.0
oznacza domyślną trasę tylko wtedy, gdy towarzyszy jej prefiks/0
(lub maska sieci0.0.0.0
)Gdy usługa nasłuchuje na 0.0.0.0, oznacza to, że usługa nasłuchuje na wszystkich skonfigurowanych interfejsach sieciowych, podczas nasłuchiwania na 127.0.0.1 usługa jest powiązana tylko z interfejsem pętli zwrotnej (dostępny tylko na komputerze lokalnym)
źródło
Adres IP
0.0.0.0
może mieć bardzo różne znaczenie, w zależności od tego, gdzie jest używany.0.
).netstat
zobaczysz w wynikach polecenia (o co prosiłeś), oznacza to, że dane gniazdo nasłuchuje na wszystkich dostępnych adresach IP komputera; gdy komputer ma więcej niż jeden adres IP, gniazdo można powiązać tylko z określonym adresem i parą portów lub z portem i wszystkimi adresami; jeśli widzisz tam adres IP, oznacza to, że gniazdo nasłuchuje tylko na tym porcie i pod tym konkretnym adresem; jeśli widzisz0.0.0.0
, oznacza to, że nasłuchuje na tym porcie na wszystkich adresach komputera, w tym na sprzężeniu zwrotnym jeden (127.0.0.1
).źródło
ping 0.0.0.0
użycia w systemie Windows powoduje wyświetlenie komunikatu o błędzie.curl 0.0.0.0
dajeconnection refused
na Arch Linux.ping 0.0.0.0
z drugiej strony wydaje się być aliasem, dlaping 127.0.0.1
którego działa dobrze.connection refused
może być, ponieważ domyślnie curl próbuje połączyć się z portem 80 / tcp. Spróbuj znaleźć otwarte porty znmap -sV localhost
czym na przykład gdy 631 / TCP:curl 0.0.0.0:631
.Odpowiedź Lee B. jest słuszna, ale oto kilka istotnych RFC na wypadek, gdybyś był zainteresowany.
0.0.0.0:
Z RFC1122 , sekcja 3.1.2.3:
Po prostu „ten host w tej sieci” ... jak stwierdza odpowiedź Lee B, przekłada się to na wszystkie dostępne adresy IP na twoim hoście. Hostowanie usługi w wersji 0.0.0.0 spowoduje automatyczne hostowanie tej usługi na każdym interfejsie adresowalnym.
127.0.0.1:
Z RFC5735 :
Różnica między 0.0.0.0 a adresem sprzężenia zwrotnego 127.0.0.1 polega na tym, że adres sprzężenia zwrotnego został zaprojektowany w celu umożliwienia w pełni funkcjonalnego interfejsu IP w samym hoście, niezależnie od tego, jak wygląda reszta konfiguracji sieci, jeśli taka istnieje. Każdy ruch wysyłany do urządzenia sprzężenia zwrotnego jest natychmiast odbierany na nim. Nie jest tak bardzo, że sieć sprzężenia zwrotnego „odnosi się” do twojego hosta ... bardziej przypomina to, że masz w swoim hoście mini segment sieci, który urządzenia, procesy i gniazda mogą otwierać i łączyć się z nimi.
źródło
W prostych słowach: Słuchanie na 0.0.0.0 oznacza słuchanie z dowolnego miejsca, które ma dostęp sieciowy do tego komputera, na przykład z tego samego komputera, sieci lokalnej lub Internetu, podczas gdy słuchanie na 127.0.0.1 oznacza słuchanie tylko z tego samego komputera
źródło