Как рассчитывать маску подсети

Опубликовано: 20 ноября 2012 в 11:37
Время на прочтение: 3 минут(ы)

Сложно ли рассчитать маску сети? Это очень просто. Для этого достаточно знать действия первого класса обычной школы и знать степени числа 2. Но когда спрашиваешь на собеседовании, что такое маска сети и как её посчитать, 90% начинают рисовать нолики и единички, говорят, что вот если бы был под рукой калькулятор для расчета масок.

Решил завести ещё одну рубрику и начать с «главного» вопроса для этой рубрики. Как по сетевой массе рассчитать количество адресов. Сетевой адрес состоит из двух частей: адреса сети и адреса хоста в этой сети. А маска сети как раз и является той разделительной чертой, которая разделяет эти адреса.

А хотели бы Вы стать гуру в этом вопросе? Научиться легко разбираться в сетевых настройках на профессиональном уровне? Если да, то напишите мне через страницу обратной связи.

Теория: маска сети определяет, сколько бит в IP адресе идентифицирует сеть. Рассмотрим частные адреса (RFC1918) из сети класса «С»: они занимают диапазон 192.168.0.0 — 192.168.255.255. Маска этого сегмента 192.168.0.0/16. Как рассчитать, сколько это адресов?

Запись 192.168.0.0/16 (255.255.0.0) означает, что под адрес сети занято 16 бит. Если адрес перевести в двоичное исчисление, то первые 16 бит это – 192.168. Это и есть адрес сети: 192.168.0.0.

Практика: адрес сети это первый адрес, данного сегмента. Этот адрес нельзя назначить никакому хосту. Если сеть задана в таком виде, то адреса типа : 192.168.1.0, 192.168.1.255 это просто адреса хостов, при такой маске их можно назначать компьютерам. Но если задать сеть как 192.168.1.0/24, то оба вышеуказанных адреса назначить каким-либо устройствам не удастся. В этом случае, первый адрес является адресом сети, а второй broadcast адресом для этой сети.

Broadcast адрес это второй служебный адрес для каждой сети. Он нужен для рассылки все адресам сети. Если послать сетевой пакет на этот адрес, то он придет на все адреса своего сегмента сети. Broadcast адрес всегда последний адрес сети. Поэтому назначить адресов в любой сети можно всегда на два адреса меньше. В случае всего сегмента частых адресов класса «С» это адреса: 192.168.0.0 и 192.168.255.255.

Теперь как посчитать, сколько же адресов может быть в сети. Важное замечание: адресов в любой сети всегда четное! Более того, оно всегда кратно степени двойки. То есть число адресов – это число, равное два в степени: число бит, оставшееся от вычитания количества бит под адрес сети из полного числа бит. Всего в адресе 32 бита, в нашем случае под адрес сети выделено 16 бит, под адреса остается тоже 16. Это значит, чтобы узнать количество адресов в данной сети надо два возвести в 16 степень. Это будет 65536 адресов. Сеть такого масштаба вряд ли кому то нужна. Чаще бывают более мелкие сети. Например, маска /30 означает, что под адреса остается только 2 бита. Соответственно, два во второй степени будет четыре. Сколько же адресов можно использовать в такой сети для назначения устройствам? Правильный ответ: всего один! Потому что, как выяснили ранее, два адреса в каждой сети служебные. Остается два адреса. Но если мы хотим подключить компьютер с адресом с такой маской в сеть, то нам нужно будет ещё выделить адрес в этой сети для маршрутизатора, через который можно будет попасть в другие сети, поскольку в данной сети других адресов нет.

Крайние случаи: /0 и /32. Маска /0 означает все адреса, весь интернет. Маска /32 означает единичный хост. Такие адреса провайдеры выделяют для экономии. Соединение в таком случае возможно только точка-точка. То есть используется протокол PPP.

Расчет маски в нотации 255.255.255.0 довольно просто в случае, если первые 3 октета 255. В противном случае надо переводить десятичное число в двоичное и выяснять количество бит, которое оно означает. Либо вычитать это число из 256 и определить в какую степень нужно возвести двойку, чтобы получить это число. Степень и будет равна числу бит. В случае, если маска определяется только последним октетом, можно посчитать следующим образом. Максимальное число адресов в данной ситуации 256, нумерация начинается с нуля! Если последний октет 255 – это соответствует маске /32 и означает единичный хост. Если последний октет ноль, то этот случай соответствует маске /24 и адресов в данной сети – 256. промежуточные варианты определяются также, как я описал чуть выше. Например, последний октет 240. Вычитаем это число из 256, получаем 16. В сети с такой маской может быть 16 адресов и соответственно можно включить 14 компьютеров. А если такую сеть выделил провайдер, то только 13, так как один адрес придется использовать под маршрутизатор. Как видите все просто. Теперь как перевести из одного представления маски в другое. Возьмем опять маску 255.255.255.240. В такой сети может быть 16 адресов. 16 – это два в четвертой степени. Следовательно, под адреса выделено 4 бита. Значит под сеть – 28. Маска по CIDR будет /28. Теперь обратно. Возьмем маску для разнообразия /26. 32-26=6. 6 бит под адреса. Адресов в этом случае будет: два в шестой степени = 64. Соответственно: 256-64=192. Маска будет: 255.255.255.192. Вот так легко рассчитываются адреса и маски.

В заключение ещё один момент. Адреса сети имеют определенные значения. От маски сети зависит, какие значения они могут принимать. Для простоты возьмем сеть 192.168.1.0/24. в этой сети только один адрес сети: 192.168.1.0. Меняем маску на 25. В этом случае адресов в сети может только 128. наша сеть разбивается на две: 192.168.1.0/25 и 192.168.1.128/25. Если передадим ещё один бит маске сети — /26, то сетей будет уже 4 по 64 адреса: 192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26 и 192.168.1.192/26 и так далее. Думаю, что теперь каждый сможет определить, сколько адресов, какой адрес сети и какой адрес broadcast для сети 196.68.1.120/27. Если возникнут затруднения или что-то осталось непонятным задайте мне вопрос на сайте.

CIDR IPv4

Поделиться

One Response to“Как рассчитывать маску подсети”

  1. Иван
    10/03/2019 at 19:24 #

    Благодарю, помогли кое-что вспомнить по мат.части.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

(Required)