Я знаю, что 127.0.0.1 ~ 127.255.255.254 - это петлевые IP-адреса для большинства современных операционных систем, и эти IP-адреса можно использовать для обозначения нашего собственного компьютера.
Но что такое 0.0.0.0? Кажется, это также относится к локальному компьютеру, так в чем же разница ?
И не могли бы вы объяснить следующие IP-соединения для меня:
ip
ip-address
netstat
Jichao
источник
источник
::1
качестве петлевого адреса.Ответы:
Единственное, что вы не говорите «все адреса должны иметь доступ» - это делается в вашем брандмауэре (ах) и / или на серверном программном обеспечении и / или других уровнях безопасности, таких как tcpwrappers.
0.0.0.0 в этом контексте означает «все IP-адреса на локальном компьютере» (фактически, вероятно, «все IPv4-адреса на локальном компьютере»). Таким образом, если ваш компьютер веб-сервера имеет два IP-адреса, 192.168.1.1 и 10.1.2.1, и вы разрешаете демону веб-сервера, например apache, прослушивать 0.0.0.0, он будет доступен на обоих этих IP-адресах. Но только к тому, что можно связать эти IP-адреса и веб-порт (ы).
Обратите внимание, что в другом контексте (маршрутизация) 0.0.0.0 обычно означает маршрут по умолчанию (маршрут к «остальной части» Интернета, кроме маршрутов в вашей локальной сети и т. Д.).
источник
0.0.0.0
означает маршрут по умолчанию, только если он сопровождается префиксом/0
(или0.0.0.0
Когда служба прослушивает 0.0.0.0, это означает, что служба прослушивает все настроенные сетевые интерфейсы, при прослушивании 127.0.0.1 служба привязана только к интерфейсу обратной связи (доступно только на локальном компьютере).
источник
IP-адрес
0.0.0.0
может иметь очень разные значения, в зависимости от того, где он используется.0.
).netstat
вы видите в выводе команды (что вы и просили), это означает, что данный сокет прослушивает все доступные IP-адреса, которые есть у компьютера; когда компьютер имеет более одного IP-адреса, сокет может быть связан только с конкретным адресом и парой портов или с портом и всеми адресами; если вы видите там IP-адрес, это означает, что сокет прослушивает только этот порт и этот конкретный адрес; если вы видите0.0.0.0
, это означает, что он прослушивает этот порт на всех адресах машины, включая loopback one (127.0.0.1
).источник
ping 0.0.0.0
системе Windows приводит к сообщению об ошибке.curl 0.0.0.0
уступаетconnection refused
по Arch Linux.ping 0.0.0.0
с другой стороны, кажется, псевдоним, дляping 127.0.0.1
которого работает нормально.connection refused
может быть потому, что по умолчанию curl пытается подключиться к порту 80 / tcp. Попробуйте найти открытые порты с ,nmap -sV localhost
а затем в течение , например , если 631 / TCP:curl 0.0.0.0:631
.Ответ Lee B правильный, но вот некоторые соответствующие RFC на тот случай, если вам интересно.
0.0.0.0:
Из RFC1122 , раздел 3.1.2.3:
Просто, «этот хост в этой сети» ... как говорится в ответе Ли Б., это преобразуется во все доступные IP-адреса на вашем хосте. Размещение службы на 0.0.0.0 будет автоматически размещать эту службу на каждом адресуемом интерфейсе.
127.0.0.1:
Из RFC5735 :
Разница между 0.0.0.0 и адресом обратной связи 127.0.0.1 заключается в том, что адрес обратной связи предназначен для обеспечения полностью функционирующего IP-интерфейса внутри самого хоста, независимо от того, как выглядят остальные настройки сети, если таковые имеются. Любой трафик, отправленный на устройство обратной связи, сразу же принимается на нем. Это не так, что петлевая сеть «ссылается» на ваш собственный хост… это скорее похоже на мини-сегмент сети на вашем хосте, который устройства, процессы и сокеты могут открывать и подключать.
источник
Проще говоря: прослушивание 0.0.0.0 означает прослушивание из любого места, которое имеет сетевой доступ к этому компьютеру, например, с этого компьютера, из локальной сети или из Интернета, в то время как прослушивание по 127.0.0.1 означает прослушивание только с этого самого компьютера.
источник