Разница между адресами 127.0.0.1 и 0.0.0.0

внешний интерфейс сервер

Больше отличных статей.

«Микросервисы — это не все, а лишь подмножество определенного домена».

«Подбиблиотека и подтаблица»? Отбор и процесс должны быть осторожными, иначе все выйдет из-под контроля».

С таким количеством компонентов мониторинга всегда найдется подходящий для вас

«Наиболее часто используемый набор навыков «vim» в производственной среде Linux.

«С Нетти, что мы разрабатываем? 》

Самая полезная серия:

«Наиболее часто используемый набор навыков «vim» в производственной среде Linux.

«Наиболее часто используемый набор навыков «Sed» в производственной среде Linux.

«Производственная среда Linux, наиболее распространенный набор навыков AWK»

Студенты, изучающие Linux и Java Backend, могут обратить внимание на официальный аккаунт.

1. Введение проблемы

При использовании tomcat ранее запуск tomcat по умолчанию будет привязан к адресу 127.0.0.1 Недавно, при использовании hexo для написания блога, я обнаружил, что IP-адрес, привязанный при запуске службы через команду сервера hexo, равен 0.0.0.0. Так в чем именно разница между этими двумя IP-адресами?

Прежде чем объяснять разницу между двумя адресами, давайте рассмотрим основы IP-адресов.

2. Классификация IP-адресов

2.1 Представление IP-адреса

IP-адрес состоит из двух частей, сетевого идентификатора и идентификатора хоста, то есть номер сети и номер хоста. Net-ID: указывает номер сети, в котором находится IP-адрес. Host-ID: указывает количество хоста в сети, где находится IP-адрес.

который:

  IP-address ::=  { <Network-number>, <Host-number> }

2.2 Классификация IP-адресов

IP-адреса делятся на пять категорий, а именно от A до E. Они классифицируются на основе длины байтов, занимаемой их идентификатором сети, и первых нескольких цифр номера сети.

  • Адрес класса A: номер сети занимает 1 байт. Первая цифра номера сети фиксируется на 0.
  • Адрес класса B: номер сети занимает 2 байта. Первые две цифры номера сети имеют фиксированное значение 10.
  • Адрес класса C: номер сети занимает 3 байта. Первые три бита номера сети имеют фиксированное значение 110.
  • Адрес класса D: Первые четыре цифры — 1110, которые используются для многоадресной рассылки (multicast), то есть связи «один ко многим».
  • Адрес класса E: первые четыре цифры — 1111, зарезервированы для использования в будущем. Среди них три типа адресов ABC — это адреса индивидуальной рассылки (unicast), которые используются для связи «один к одному» и являются наиболее часто используемыми.

2.3 Специальный IP-адрес

Специальный IP-адрес используется для чего-то особенного. Следующие специальные IP-адреса определены в RFC1700.

  1. {0,0}: и номер сети, и номер хоста равны 0, что указывает на «этот хост в этой сети», который можно использовать только как исходный адрес.
  2. {0, host-id}: Хост в этой сети. Может использоваться только как исходный адрес.
  3. {-1,-1}: указывает, что все биты номера сети и номера хоста равны 1 (двоичные), которые используются для широковещательной передачи в этой сети и могут использоваться только в качестве адреса назначения. Пакеты данных, отправленные на этот адрес, не могут быть перенаправлены на Адрес источника находится вне сети.
  4. {net-id,-1}: прямая трансляция в указанную сеть. Может использоваться только как адрес назначения.
  5. {net-id,subnet-id,-1}: прямая трансляция в указанную подсеть указанной сети. Используется только как адрес назначения.
  6. {net-id,-1,-1}: прямая трансляция во все подсети указанной сети. Может использоваться только как адрес назначения.
  7. {127,}: любой IP-адрес с сетевым номером 127. Все они являются внутренними петлевыми адресами хоста (loopback), которые никогда не могут появиться в сети за пределами хоста.

3. Вопросы и ответы

Далее, давайте рассмотрим заданный ранее вопрос: в чем разница между адресами 127.0.0.1 и 0.0.0.0? Сначала рассмотрим общие черты:

  1. Это специальные адреса.
  2. Все адреса класса А.
  3. Все адреса IPv4.

Далее рассмотрим эти два адреса по отдельности:

0.0.0.0

В IPV4 адрес 0.0.0.0 используется для обозначения недопустимого, неизвестного или недоступного пункта назначения.

  • На сервере 0.0.0.0 относится ко всем адресам IPV4 на машине.Если хост имеет два IP-адреса, 192.168.1.1 и 10.1.2.1, и служба на хосте прослушивает адрес 0.0.0.0, то служба может доступ через оба IP-адреса.

  • В маршрутизации 0.0.0.0 представляет собой маршрут по умолчанию, то есть соответствующий маршрут, если в таблице маршрутизации не найден точно соответствующий маршрут.

Резюме использования

  • Если хосту не назначен IP-адрес, он используется для представления самого хоста. (Когда DHCP назначает IP-адрес)
  • Используется как маршрут по умолчанию, что означает «любой хост IPV4». Используется для указания того, что целевая машина недоступна.
  • Используется как сервер с указанием любого адреса IPV4 на локальной машине.

127.0.0.1

127.0.0.1 принадлежит одному из наборов {127,}, и все адреса с номером сети 127 называются петлевыми адресами, поэтому петлевыми адресами! =127.0.0.1, они включительно, то есть петлевой адрес содержит 127.0.0.1. Loopback address: все пакеты, предназначенные для этого типа адреса, должны быть закольцованы.

использовать

  • Проверка обратной связи с помощью команды ping 127.0.0.1 для проверки правильности работы сетевого устройства, операционной системы или реализации TCP/IP на машине.
  • Защита от DDos-атак: после того, как сайт подвергается DDos-атаке, он записывает доменное имя A в 127.0.0.1, то есть позволяет злоумышленнику атаковать себя.
  • Локальный адрес, к которому привязывается большинство веб-контейнеров при тестировании.

localhost

localhost имеет большее значение, чем 127.0.0.1. localhost — это доменное имя, а не IP-адрес. Причина, по которой мы часто думаем о localhost и 127.0.0.1 как об одном и том же, заключается в том, что большинство компьютеров, которые мы используем, говорят, что localhost указывает на адрес 127.0.0.1. В системе Ubuntu файл /ets/hosts будет иметь следующее содержимое:

127.0.0.1   localhost
127.0.1.1   jason-Lenovo-V3000
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Первая строка выше — это конфигурация по умолчанию, которая присутствует почти на каждом компьютере. Но значение localhost не ограничивается 127.0.0.1.

localhost — это доменное имя, используемое для ссылки на этот компьютер или этот хост, которое можно использовать для получения сетевых служб, работающих на этом компьютере. В большинстве систем localhost указывает на 127.0.0.1 для IPV4 и ::1 для IPV6.

127.0.0.1    localhost
::1          localhost

Поэтому при его использовании следует обратить внимание на подтверждение того, является ли он IPV4 или IPV6.

4. Резюме

127.0.0.1 — это петлевой адрес. Не означает «родной». 0.0.0.0 на самом деле означает «эта машина в этой сети». В практических приложениях, как правило, мы можем выбрать привязку к 0.0.0.0 при привязке порта на стороне сервера, чтобы мой посетитель службы мог получить доступ к моей службе через несколько моих IP-адресов.

Например, у меня есть сервер с внешним сетевым адресом A и внутренним сетевым адресом B. Если порт, к которому я привязываюсь, указывает 0.0.0.0, то доступ к моему приложению можно получить через внутренний сетевой адрес или внешний сетевой адрес. Но если я привяжу только адрес интрасети, я не смогу получить к нему доступ через адрес экстрасети. Таким образом, если вы привязываете 0.0.0.0, также существуют определенные риски безопасности.Для служб, которым требуется только доступ к интрасети, вы можете привязать только адрес интрасети.