В чем разница между IP-адресом 0.0.0.0 и 127.0.0.1?
Я знаю, что 127.0.0.1 ~ 127.255.255.254 - это петлевые IP-адреса для большинства современных операционных систем, и эти IP-адреса могут использоваться для обозначения нашего собственного компьютера.
Но что такое 0.0.0.0? Похоже, что это также относится к локальному компьютеру, так что такое разница ?
И вы могли бы объяснить мне следующие IP-соединения:
5 ответов
Единственное, что вы не говорите: «все адреса должны иметь доступ» - это делается в ваших брандмауэрах и /или серверном программном обеспечении и /или других уровнях безопасности, таких как 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, это означает, что служба прослушивает все настроенные сетевые интерфейсы, при прослушивании на 127.0.0.1 служба привязана только к интерфейсу loopback (доступна только на локальном компьютере)
IP-адрес 0.0.0.0
может иметь очень разные значения, в зависимости от того, где он используется.
- Это не действительный адрес, который должен быть дан фактическому сетевому интерфейсу, а также любой другой адрес в подсети 0.0.0.0/8 (т.е. любой адрес, начинающийся с
0.
). - Он не может использоваться в качестве исходного адреса для любого IP-пакета, если это не происходит, когда компьютер по-прежнему не знает свой собственный IP-адрес и пытается его приобрести (классический пример: DHCP).
- Если используется в таблице маршрутизации, он идентифицирует шлюз по умолчанию; маршрут до 0.0.0.0 является стандартным, то есть тот, который используется, когда нет более определенного маршрута, доступного для адреса назначения.
- Наконец, когда вы видите на выходе команды
netstat
(что вы просили), это означает, что данный сокет прослушивает все доступные IP-адреса, которые имеет компьютер; когда компьютер имеет более одного IP-адреса, сокет может быть привязан только к определенной паре адресов и портов или к портам и адресам all ; если вы видите там IP-адрес, это означает, что сокет прослушивает только этот порт и этот конкретный адрес; если вы видите0.0.0.0
, это означает, что он прослушивает этот порт на адресах all на компьютере, включая loopback one (127.0.0.1
).
Ответ Ли Б справедлив, но вот некоторые релевантные RFC, если вы заинтересованы.
0.0.0.0:
От RFC1122 , раздел 3.1.2.3:
Теперь мы суммируем важные частные случаи для классов A, B, и C IP-адреса, используя следующие обозначения для IP-адреса адрес:
{ <Network-number>, <Host-number> } or { <Network-number>, <Subnet-number>, <Host-number> }
...
(a) { 0, 0 } This host on this network. MUST NOT be sent, except as a source address as part of an initialization procedure by which the host learns its own IP address.
Только это, «этот хост в этой сети» ... как ответ Ли Б говорит, что это означает все доступные IP-адреса вашего хоста. Хостинг службы на 0.0.0.0 автоматически будет размещать эту службу на каждом адресуемом интерфейсе.
127.0.0.1:
Из RFC5735 :
127.0.0.0/8 - Этот блок назначается для использования в качестве адреса петли интернет-хоста. Дейтаграмма, отправленная протоколом более высокого уровня на адрес в любом месте этого блока, возвращается обратно внутри хоста. Обычно это выполняется с использованием только 127.0.0.1/32 для loopback. Как описано в [RFC1122], раздел 3.2.1.3, адреса во всем блоке 127.0.0.0/8 не могут быть законно представлены в любой сети в любом месте.
Разница между 0.0.0.0 и адресом loopback 127.0.0.1 заключается в том, что обратный адрес сконструирован так, чтобы обеспечить полностью функционирующий IP-интерфейс внутри самого хоста, независимо от того, как выглядит остальная сетевая настройка, если таковая имеется. , Любой трафик, отправленный на устройство loopback, немедленно получает на нем. Это не так, что петлевая сеть «ссылается» на ваш собственный хост ... это больше похоже на то, что у вас есть сегмент мини-сети на вашем хосте, что устройства, процессы и сокеты могут открываться и подключаться.
Простыми словами: Прослушивание 0.0.0.0 означает прослушивание из любого места, имеющего сетевой доступ к этому компьютеру, например, с этого самого компьютера, из локальной сети или из Интернета, а при прослушивании 127.0.0.1 означает только прослушивание из этот самый компьютер