Зачем IP-адресу вторая половина
Один IP-адрес состоит из двух смысловых частей: идентификатор сети и идентификатор конкретного устройства в ней. Сам по себе адрес не показывает, где проходит граница. Это сообщает маска подсети: 32-битное число, в котором единицы соответствуют сетевой части, а нули хостовой.
Запись 255.255.255.0 читается как 24 единицы подряд и восемь нулей. Значит, первые три числа адреса определяют сеть, а последнее, четвёртое, устройство. Все узлы с одинаковой сетевой частью считаются соседями и общаются напрямую.
Как вычислить сеть побитовым И
Чтобы получить адрес сети, компьютер выполняет побитовое умножение адреса на маску. Возьмём адрес 192.168.10.37 и маску 255.255.255.0. Первые три октета совпадают, поскольку умножаются на 255, а четвёртый на 0 превращается в ноль. Получается 192.168.10.0, это адрес сети.
Маска не обязана совпадать с границами октетов. При маске 255.255.255.192 значимыми становятся два старших бита последнего числа: сеть делится на четыре блока по 64 адреса, и адрес 192.168.10.37 попадёт в блок, начинающийся с 192.168.10.0, а адрес 192.168.10.100 уже в следующий, с 192.168.10.64.
Сколько хостов помещается
Число адресов в сети равно двум в степени количества нулей маски. Для маски с восемью нулями это 256 адресов. Два из них служебные: самый первый обозначает саму сеть, самый последний это широковещательный адрес. Оставшиеся 254 можно назначать устройствам.
Правило нужно для планирования. Если в офисе шестьдесят компьютеров, блока на 64 адреса не хватит: после вычета двух служебных остаётся 62, а нужно учесть принтеры, телефоны и рост. Разумнее взять блок на 128 адресов. Есть и исключения вроде сетей /31 для соединений точка-точка, но в обычных сегментах правило работает.
Где маска встречается на практике
Маска видна в настройках сетевого адаптера рядом с IP и шлюзом, её выдаёт DHCP. Домашние сети в подавляющем большинстве используют 255.255.255.0, поэтому цифры привычны и не привлекают внимания. Но ошибка в маске приводит к странному поведению: устройство считает часть соседей внешними и отправляет их трафик на шлюз, или наоборот пытается дотянуться до чужих сетей напрямую.
Маску используют и правила сетевых экранов, и списки доступа, где нужно описать целый диапазон одной записью. Подробнее о краткой форме написания рассказано на странице про CIDR.
Типичные ошибки: Маска подсети
Первая: считать, что маска описывает количество компьютеров. Она описывает границу между частями адреса, а число узлов только следствие. Вторая: путать маску с обратной маской, применяемой в некоторых системах, где единицы и нули поменяны местами. Третья: назначать двум устройствам адреса из разных подсетей и удивляться, почему они не видят друг друга без маршрутизатора.
Проверьте у себя: команда ipconfig в Windows покажет маску подсети, а ip a в Linux отобразит её в краткой форме вроде /24.
Быстрый способ считать в уме
Чтобы не переводить всё в двоичную запись, запомните значения последнего октета маски: 128, 192, 224, 240, 248, 252. Каждое следующее вдвое сужает блок. Размер блока равен 256 минус значение октета. Для 192 это 64, для 224 это 32, для 240 это 16, для 252 это 4.
Скажем, у устройства адрес 10.1.5.77 и маска 255.255.255.224. Размер блока 32, границы идут через 0, 32, 64, 96. Число 77 лежит между 64 и 96, значит, сеть 10.1.5.64, широковещательный адрес 10.1.5.95, а рабочие адреса от 10.1.5.65 до 10.1.5.94. Тренируясь на нескольких примерах, вы вскоре начнёте определять границы почти мгновенно, и это пригодится при настройке правил экрана и планировании адресов.
Есть и особый случай: маска из одних единиц, 255.255.255.255, описывает единственный адрес. Такую запись встречают в маршрутах до конкретного узла, а маска из одних нулей вместе с адресом 0.0.0.0 обозначает любую сеть и лежит в основе маршрута по умолчанию.
Проверьте себя: маска 255.255.255.128 делит сеть пополам, и адрес 192.168.4.200 окажется во второй половине, начинающейся с 192.168.4.128.