Больше отличных статей.
«Микросервисы — это не все, а лишь подмножество определенного домена».
С таким количеством компонентов мониторинга всегда найдется подходящий для вас
«Наиболее часто используемый набор навыков «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.
- {0,0}: и номер сети, и номер хоста равны 0, что указывает на «этот хост в этой сети», который можно использовать только как исходный адрес.
- {0, host-id}: Хост в этой сети. Может использоваться только как исходный адрес.
- {-1,-1}: указывает, что все биты номера сети и номера хоста равны 1 (двоичные), которые используются для широковещательной передачи в этой сети и могут использоваться только в качестве адреса назначения. Пакеты данных, отправленные на этот адрес, не могут быть перенаправлены на Адрес источника находится вне сети.
- {net-id,-1}: прямая трансляция в указанную сеть. Может использоваться только как адрес назначения.
- {net-id,subnet-id,-1}: прямая трансляция в указанную подсеть указанной сети. Используется только как адрес назначения.
- {net-id,-1,-1}: прямая трансляция во все подсети указанной сети. Может использоваться только как адрес назначения.
- {127,}: любой IP-адрес с сетевым номером 127. Все они являются внутренними петлевыми адресами хоста (loopback), которые никогда не могут появиться в сети за пределами хоста.
3. Вопросы и ответы
Далее, давайте рассмотрим заданный ранее вопрос: в чем разница между адресами 127.0.0.1 и 0.0.0.0? Сначала рассмотрим общие черты:
- Это специальные адреса.
- Все адреса класса А.
- Все адреса 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, также существуют определенные риски безопасности.Для служб, которым требуется только доступ к интрасети, вы можете привязать только адрес интрасети.