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

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

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

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

3 ответа3

3

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .