Почему публичные IP-адреса не всегда отображаются с маской подсети?

Почему публичные IP-адреса не всегда отображаются с маской подсети?

Мне сказали, что публичный IP-адрес без соответствующей ему маски подсети бессмыслен, поскольку невозможно отличить идентификатор сети от идентификатора хоста, что, на мой взгляд, совершенно логично.

Однако, большую часть времени я вижу IP-адреса (DNS, findmyip.com и т. д.), это только IP без номера cidr. Например, я просто скормил веб-сайту только IP-адрес, и он выдал мне правильное доменное имя.

Что я упускаю? Думаю, есть какие-то другие протоколы, которые могут работать только с IP-адресами, но я о них пока не слышал.

Если мой вопрос показывает отсутствие базовых знаний о том, как работают сети, то ресурсы будут очень признательны. Я разработчик, изучающий все это самостоятельно, и кроме 5-минутных руководств или 1000+ малоизвестных книг (привет TCP Illustrated) я не могу найти материал, который ищу.

решение1

Оба приведенных выше ответа верны — вот более подробный нетехнический ответ:

Компьютеру нужно знать только, принадлежит ли IP-адрес компьютеру, который подключен к нему напрямую, а компьютеры, подключенные через концентратор/коммутатор/Wi-Fi в одной и той же «локальной сети»), считаются подключенными напрямую.

Для всего остального компьютеру нужно знать только, куда отправить пакет дальше - т. е. адрес маршрутизатора (который в свою очередь знает, куда отправить пакеты дальше). Когда вы делаете traceroute, вы видите этот путь.

Маска подсети используется для группировки машин, которые подключены напрямую, поэтому для машин, которые не подключены напрямую, маска подсети не требуется.

В частности, маска подсети может также использоваться брандмауэром или другим программным обеспечением для указания группы IP-адресов, которые будут обрабатываться одинаково (именно поэтому они иногда важны за пределами локальной сети), но не являются необходимыми для обычного общения в Интернете.

решение2

Все системы, использующие TCP/IP для взаимодействия с другими системами, обращаются к локальной «базе данных пересылки» или локальной таблице маршрутизации, которая поддерживается системой.

Запись таблицы маршрутизации в основном выглядит следующим образом:

Сеть назначения / Шлюз / Маска подсети назначения / Метрика

Вот моя текущая таблица маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth2
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eth2
172.16.160.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth2
192.168.87.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1

Каждый раз, когда система хочет отправить трафик на IP, она ищет эту таблицу. Если она находит сеть назначения, которая соответствует и вписывается в маску подсети, она отправляет трафик из сетевого адаптера, идентифицированногоЯ лицо.

Все эти сетевые адаптеры «подключены напрямую» — вот почему вы видите 0.0.0.0 для шлюза. Это означает, что если система хочет отправить что-то на 192.168.2.80, например, она может просто отправить это напрямую на 192.168.2.80 через интерфейс eth2.

Однако из-за маски подсети 192.168.87.80 не будет выходить через eth2, он будет выходить через vmnet1.

Если IP-адрес вписывается в две записи, используется тот, у которого маска подсети CIDR больше (более конкретная). Если есть два с одинаковой маской подсети, метрика используется для разрыва связи, и если это время, система может выбрать один и придерживаться его или балансировать нагрузку между ними.

например

192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth2
192.168.2.0     0.0.0.0         255.255.255.240 U     100    0        0 ethX

255.255.255.240 — это CIDR /28, а 255.255.255.0 — это CIDR /24. Таким образом, если бы существовали две записи, то что-то, идущее на 192.168.2.1, выходило бы из интерфейса ethX, а что-то, идущее на 192.168.2.241, выходило бы из интерфейса eth2.

А если ничего не совпадает? Тогда используется шлюз по умолчанию. Обратите внимание, что у него "самая низкая" маска подсети 0.0.0.0 (которая представляет собой слеш /0).

Вот для чего нужна подсеть. Сообщает системе, какие сети могут быть доступны через какой интерфейс. Ваша система использует это при отправке трафика (чтобы определить разницу между Интернетом и локальной сетью), а маршрутизаторы используют это для пересылки трафика.

За пределами этих ситуаций маска подсети не нужна. Она не нужна после уровня сетевой маршрутизации, в принципе. HTTP — это прикладной уровень.

решение3

Маска подсети полезна для самого хоста и для оборудования маршрутизации.

Вашему ПК не нужно знать маску подсети удаленного устройства, ему нужно знать только адрес и сравнить его ссобственный адресИ егособственная маска подсетион будет знать, является ли адрес локальным или удаленным.

Если он локальный, то пакеты будут отправлены напрямую, если удаленный, то пакеты будут отправлены на шлюз по умолчанию.

Связанный контент