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

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

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

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

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

3 ответа

Все системы, использующие 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, она ищет эту таблицу. Если он находит сеть назначения, которая совпадает и вписывается в маску подсети, он отправляет трафик из сетевого адаптера, идентифицированного Iface.

Все эти сетевые адаптеры "подключены напрямую" - вот почему вы видите 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 это прикладной уровень.

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

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

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

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

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

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

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

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

Другие вопросы по тегам