Что будет, если указать неправильную маску подсети?
Обновлено Редакция GAW
Маска говорит устройству, какие первые биты адреса — номер сети. Перед отправкой каждого пакета узел накладывает маску на свой адрес и на адрес получателя: совпали — получатель «свой», пакет уходит напрямую, не совпали — через шлюз (RFC 1122, разд. 3.3.1.1). Неверная маска ломает именно это решение.
Пример: сеть роутера 192.168.1.0/24
Роутер — 192.168.1.1/24, устройство — 192.168.1.50. Наш расчёт операции «И» адреса с маской для трёх случаев:
| Маска устройства | Сеть устройства | Адресат | Сеть адресата под той же маской | Решение | Итог |
|---|---|---|---|---|---|
| 255.255.255.0 (верно) | 192.168.1.0 | 192.168.7.10 | 192.168.7.0 | через шлюз | работает |
| 255.255.0.0 (широкая) | 192.168.0.0 | 192.168.7.10 | 192.168.0.0 | напрямую | ответа нет: узла нет в сегменте |
| 255.255.255.128 (узкая) | 192.168.1.0 | 192.168.1.200 | 192.168.1.128 | через шлюз | зависит от роутера |
Широкая маска
Устройство считает «своими» адреса, которые на самом деле за роутером, и ищет их через ARP в своём сегменте. Наш вывод: ответа на такой запрос не будет. Пропадает связь только с узлами, которые попали в расширенный диапазон 192.168.0.0/16, но лежат вне настоящей подсети 192.168.1.0/24, — например, 192.168.7.10. Адреса за пределами 192.168.0.0/16, в том числе интернет, по-прежнему уходят через шлюз, и локальная сеть тоже работает.
Узкая маска
Часть настоящих соседей становится «чужими» — пакеты к ним уходят на шлюз. Хуже, если шлюз сам окажется вне сети устройства: при адресе 192.168.1.150 и маске 255.255.255.128 сеть устройства — 192.168.1.128, а шлюз 192.168.1.1 в неё не входит. Шлюз по умолчанию должен быть в подсети устройства (руководство Modbus по TCP/IP, разд. 4.3.3.1), и выхода наружу не будет — как в ответе «Почему ESP32 со статическим IP не выходит в интернет».
Проверить адрес, маску и шлюз можно в калькуляторе подсетей, а побитовое «И» — в калькуляторе битовых масок. Где задаются адрес и маска у W5500, ENC28J60 и ESP32 — в статье «Ethernet для микроконтроллера».
Похожие вопросы
Почему с неправильной маской часть устройств всё же доступна?
Потому что ошибка проявляется только для адресов, которые попадают «не туда». Соседи из настоящей подсети при широкой маске остаются своими и доступны напрямую, а при узкой маске часть из них уходит через шлюз — роутер может переслать такие пакеты, а может и нет (наш вывод).
Какую маску ставить в домашней сети?
Ту же, что выдаёт роутер своим клиентам по DHCP, — посмотрите её у компьютера в той же сети. Часто это 255.255.255.0 (/24), но правило одно: маска у устройства и у роутера должна совпадать.
Бывает ли маска вроде 255.255.0.255?
Нет: в маске сначала идут единицы, затем нули, иначе это не маска. Записи вроде 255.255.0.255 калькулятор подсетей не примет.
Источники
- IETF. RFC 1122: Requirements for Internet Hosts — Communication Layers, 1989 — разд. 3.3.1.1: маска выделяет номер сети и подсети; если биты адреса назначения под маской совпадают с битами адреса источника, пакет передаётся напрямую, иначе — только через шлюз (разд. 3.3.1.2)
- IETF. RFC 950: Internet Standard Subnetting Procedure, 1985 — маска подсети — 32-битное поле, единицы в котором выделяют номер сети и подсети, нули — номер узла
- Modbus Organization. MODBUS Messaging on TCP/IP Implementation Guide V1.0b, 2006 — разд. 4.3.3.1: шлюз по умолчанию должен быть в подсети локального адреса
Нашли ошибку?
Смотрите также
- Калькулятор подсетей IPv4Маска и CIDR, сеть, broadcast, узлы, частные диапазоны, деление на подсети
- Битовые маскиПоле регистра: маска, сдвиг, чтение и запись, код на C
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- Почему ESP32 со статическим IP не выходит в интернет?Шлюз не из подсети, неверная маска или нет DNS-сервера
- Конвертер HEX, BIN, DECДополнительный код, float, байты и биты