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

398
Radioreve

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

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

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

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

0
Эффективная маска подсети для IP-адреса вне вашей локальной сети всегда равна / 32 (для IPV4; это / 128 для IPV6), поэтому цитирование будет избыточным Mike Scott 6 лет назад 1
я думаю, я знаю, что ты имеешь в виду, спасибо Radioreve 6 лет назад 0

3 ответа на вопрос

3
jcbermu

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

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

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

2
LawrenceC

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

0
davidgo

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

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

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

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

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

Официальное примечание: любой пользователь (или гость) может изменить порядок ответов (сортировка по активным, самым старым, голосам). Фраза «оба приведенных выше ответа» не имеет смысла. Kamil Maciorowski 6 лет назад 1