Для работы компьютера (ноутбука, смартфона и т.п.) в сети устройству присваивается IP-адрес. Как правило, вместе с информацией об адресе узла можно узнать и маску сети (или префикс). Маска сети указывает на количество бит в IP-адресе, отведенных под номер сети. Соответственно оставшиеся биты используются под номер узла. Маска и префикс — это разные записи одного и того же значения. Записывается только одно из них. В операционных системах Windows обычно используется маска, в операционных системах на основе Linux могут применяться оба варианта записи. Приведем пример.
Запись в левом столбце идентична записи в правом. Используется один из приведенных вариантов.
По информации об IP-адресе и префиксу можно определить параметры сети, а именно, IP-адрес сети, маску сети, широковещательный адрес сети, диапазон IP-адресов, предназначенных для адресации узлов (с первого адреса до последнего и их количество). Рассчитанные параметры могут понадобиться для добавления узла в существующую локальную сеть. Другие параметры, необходимые для работы в сети, такие как адрес шлюза и DNS-сервера (серверов) можно узнать из настроек сетевого адаптера.
Рассмотрим два примера для решения подобных задач.
Ⅰ Пример. IP-адрес узла и префикс:
10.0.0.10/25
Необходимо определить номер сети, маску сети, широковещательный адрес сети, диапазон и количество адресов.
Ход решения:
1. Переведем IP-адрес и префикс сети в двоичную систему счисления. Двоичный код адреса запишем первым, ниже запишем префикс. Число, обозначающее префикс показывает количество бит, отведенных под номер сети. В данном случае это 25 единиц, остальное нули (так как IP-адрес четвертой версии протокола IP состоит из 32 бит). В данном виде записывается маска в двоичной системе счисления. Биты адреса и префикса записываем на одной вертикальной линии.
Принимаем нумерацию бит справа налево. То есть самый правый бит нумеруем как первый, а самый левый как тридцать второй. Затем определим границу сети в соответствии с маской (по правую сторону от границы должны быть только нули, по левую сторону – только единицы), в данном случае граница сети проходит между восьмым и седьмым битами (под номер сети отводится 25 бит).
2. Определяем номер сети и маску сети. Для этого все биты, принадлежащие IP-адресу узла и находящиеся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:
Переводим номер сети в десятичную систему счисления:
10.0.0.0.
Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:
255.255.255.128
3. Находим широковещательный адрес данной сети. Для этого все, что в номере сети находится слева от границы, записываем без изменений, а все, что справа, - заполняем единицами:
Переводим широковещательный адрес в десятичную систему счисления:
10.0.0.127.
4. Теперь необходимо определить диапазон и количество адресов узлов в сети. Нужно понимать, что нумерация сети состоит из непрерывного диапазона адресов. При этом самый первый адрес (не обязательно заканчивающийся на ноль) - это адрес сети, а самый последний - это широковещательный адрес сети (для групповой рассылки всем узлам сети). Соответственно адресация узлов каждой сети находится между этими двумя значениями. Таким образом, для того чтобы вычислить адрес первого узла в сети, необходимо к номеру сети прибавить единицу (10.0.0.1), а для того чтобы определить адрес последнего узла, - от широковещательного адреса сети отнять единицу (10.0.0.126). Получаем следующий диапазон адресов узлов:
10.0.0.1 – 10.0.0.126.
Таким образом, максимальное количество адресов в сети 10.0.0.0/25 составляет 126 (от 10.0.0.1 до 10.0.0.126).
Пример записи решения:
(1 строка – IP-адрес узла, 2 – номер сети, 3 – маска сети, 4 – широковещательный адрес сети)
Преобразуем все записи из двоичной системы счисления в десятичную:
Номер сети: 10.0.0.0
Маска: 255.255.255.128
Широковещательный IP-адрес: 10.0.0.127
Адрес первого узла в сети: 10.0.0.1
Адрес последнего узла в сети: 10.0.0.126
Количество адресов (максимально возможное количество узлов в данной сети) составляет 126 единиц.
Ⅱ Пример. IP-адрес узла и префикс:
3.0.3.110/20
Необходимо определить номер сети, маску сети, широковещательный адрес сети, диапазон и количество адресов.
Ход решения практически такой же, как и в первом примере. Но из-за того, что префикс сети менее 24, то могут возникнуть определенные сложности при вычислении, поэтому рассмотрим пример более подробно.
1. Переведем IP-адрес и префикс сети в двоичную систему счисления, Граница сети в соответствии с маской (по правую сторону от границы должны быть только нули, по левую сторону – только единицы) проходит между тринадцатым (13) и двенадцатым (12) битами (под номер сети отводится 20 бит):
2. Определяем номер сети. Для этого все биты, что находятся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:
Переведём номер сети в десятичную систему счисления:
3.0.0.0
Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:
255.255.240.0
3. Определим широковещательный адрес данной сети. Для этого все, что слева от границы, записываем без изменений, как в номере сети, а все, что справа, - заполняем единицами:
Переводим в десятичную систему:
3.0.15.255
4. Определяем диапазон адресов узлов в сети. Для того чтобы вычислить адрес первого узла в сети, необходимо к номеру сети прибавить единицу (3.0.0.1), а для того чтобы определить адрес последнего узла, - от широковещательного адреса сети отнять единицу (3.0.15.254). Получаем следующий диапазон адресов узлов: 3.0.0.1 – 3.0.15.254. Таким образом, максимальное количество адресов в сети 3.0.0.0/20 составляет 4094.
Пример записи решения:
(1 – IP-адрес узла, 2 – номер сети, 3 – маска сети, 4 – номер адреса широкого вещания)
Номер сети: 3.0.0.0
Маска: 255.255.240.0
Номер адреса широкого вещания: 3.0.15.255
1-ый узел в сети: 3.0.0.1
Последний узел в сети: 3.0.15.254
Количество адресов (максимально возможное количество узлов в данной сети) составляет 4094 единиц.
Теперь более подробно об определении количества IP-адресов. Как видим в данном случае изменяется содержимое не только четвертого, но также и третьего байта. Распишем изменения чисел, когда третий байт равен нулю
3.0.0.1 – 3.0.0.255 (то есть 255 адресов)
При дальнейшем прибавлении единицы четвертый байт станет равным нулю и изменится третий байт, то есть
3.0.1.0
При третьем байте равным единицы, четвертый байт будет изменяться следующим образом
3.0.1.0 – 3.0.1.255 (то есть 256 адресов)
далее
3.0.2.0 - 3.0.2.255 (256 адресов)
и так далее
...
3.0.14.0 - 3.0.14.255 (256 адресов)
последний байт
3.0.15.0. - 3.0.15.254 (255 адресов)
Рассчитывая подобным образом получим общее число адресов
255+256*14+255=4094
То есть два диапазона - первый и последний (3.0.0.* и 3.0.15.*) имеют по 255 адресов.
Четырнадцать диапазонов (3.0.1.*, 3.0.2.*, 3.0.3.*, 3.0.4.*, 3.0.5.*, 3.0.6.*, 3.0.7.*, 3.0.8.*, 3.0.9.*, 3.0.10.*, 3.0.11.*, 3.0.12.*, 3.0.13.* и 3.0.14.*) по 256 адресов.
Распределение IP-сети на подсети описано в статье