Что такое маска подсети 255.255.255.0
Маска подсети 255.255.255.0 значит: первые три числа IP-адреса — номер сети, последнее — номер устройства в ней. Компьютер с адресом 192.168.1.25 и такой маской живёт в сети 192.168.1.x: все адреса от 192.168.1.1 до 192.168.1.254 для него «свои», к ним он обращается напрямую. Всё остальное — через шлюз, то есть роутер.
Та же маска коротко пишется как /24: 192.168.1.25/24.
Откуда берётся /24
Адрес IPv4 — это 32 бита, по 8 на каждое из четырёх чисел. Маска — тоже 32 бита: сначала идут единицы (биты номера сети), потом нули (биты номера устройства). Число 255 — это восемь единиц, 0 — восемь нулей:
mask = "255.255.255.0"
print(".".join(f"{int(part):08b}" for part in mask.split(".")))11111111.11111111.11111111.00000000Единиц 24 — отсюда /24. На устройства остаются 8 бит, то есть 256 адресов. Из них первый (192.168.1.0) — адрес самой сети, последний (192.168.1.255) — широковещательный, для сообщений всем устройствам сразу. Для устройств остаются 254 адреса — дома этого хватает с запасом.
Частые маски
| Маска | Запись | Адресов | Для устройств |
|---|---|---|---|
255.0.0.0 | /8 | 16 777 216 | 16 777 214 |
255.255.0.0 | /16 | 65 536 | 65 534 |
255.255.254.0 | /23 | 512 | 510 |
255.255.255.0 | /24 | 256 | 254 |
255.255.255.128 | /25 | 128 | 126 |
255.255.255.192 | /26 | 64 | 62 |
255.255.255.252 | /30 | 4 | 2 |
Каждый бит, отданный сети, вдвое уменьшает число адресов. Таблицу легко проверить на Python — модуль ipaddress из стандартной библиотеки считает сам:
import ipaddress
for prefix in (8, 16, 23, 24, 25, 26, 30):
net = ipaddress.ip_network(f"10.0.0.0/{prefix}")
print(f"/{prefix} {net.netmask} {net.num_addresses}")/8 255.0.0.0 16777216
/16 255.255.0.0 65536
/23 255.255.254.0 512
/24 255.255.255.0 256
/25 255.255.255.128 128
/26 255.255.255.192 64
/30 255.255.255.252 4Своя сеть или чужая
Сравните у двух адресов части, отмеченные маской. При маске 255.255.255.0 это первые три числа:
192.168.1.25и192.168.1.200— одна сеть: первые три числа совпадают;192.168.1.25и192.168.0.25— разные сети, хотя адреса похожи.
С маской 255.255.0.0 (/16) своими были бы все адреса 192.168.x.x.
Подводные камни
- Маска у всех устройств одной сети должна быть одинаковой. Если у компьютера
/24, а у принтера/16, они по-разному понимают, кто «свой», и часть адресов окажется недоступной. - Шлюз — в той же сети. С адресом
192.168.1.25/24шлюз192.168.0.1работать не будет. - Маска — не адрес. В поле «Маска подсети» пишут
255.255.255.0, а не адрес роутера. - Домашней сети хватает /24. 254 адресов дома достаточно с запасом, а маску у роутера без нужды лучше не менять: устройства с адресами, заданными вручную, придётся перенастраивать. Подробнее об адресах и шлюзе — в уроке IP-адрес, маска, шлюз и DHCP.