Расчет маски подсети

Сложно ли рассчитать маску сети? Как по сетевой масске рассчитать количество адресов? Это очень просто. Для этого достаточно знать действия первого класса обычной школы и знать степени числа 2. Сетевой адрес состоит из двух частей: адреса сети и адреса хоста в этой сети. А маска сети как раз и является той разделительной чертой, которая разделяет эти адреса.

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

subnet16

Как рассчитать, сколько это адресов?

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

IP-адрес из сети: 11000000 10101000 00001010 00100010 (192.168.10.34)
Маска подсети:    11111111 11111111 00000000 00000000 (255.255.0.0)
Адрес сети:       11000000 10101000 00000000 00000000 (192.168.0.0)
IP-адрес из сети: 11000000 10101000 00001010 00100010 (192.168.10.34)
Маска подсети:    11111111 11111111 00000000 00000000 (255.255.0.0)
Адрес сети:       11000000 10101000 00000000 00000000 (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 бита. Соответственно, два во второй степени будет четыре. Сколько же адресов можно использовать в такой сети для назначения устройствам? Правильный ответ: всего один! Потому что, как выяснили ранее, два адреса в каждой сети служебные. Остается два адреса. Но если мы хотим подключить компьютер с адресом с такой маской в сеть, то нам нужно будет ещё выделить адрес в этой сети для маршрутизатора, через который можно будет попасть в другие сети, поскольку в данной сети других адресов нет.

subnet_example

Крайние случаи: /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.

Пример деления сети на меньшие подсети из блога компании Selectel:

Материалы:

  • Статья «Система учета IP-адресов» от Selectel
  • Маска подсети — wikipedia
  • VN:F [1.9.22_1171]
    Рейтинг: 9.0/10 (21 голоса(ов))
    Расчет маски подсети, 9.0 out of 10 based on 21 ratings

    1. Добрый день, исправьте пожалуйста грамматические ошибки в инструкции.
      (в частности » Как по сетевой массе рассчитать количество адресов?» имелось ввиду маска наверняка)

    2. «наша сеть разбивается на две: 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 и так далее.»

      ПОЧЕМУ???

    3. Правильно решил задачу 196.68.1.120/27. ?
      1. Сколько компьютеров ?
      32-27=(2^5)=32-2 — компьютеров в сети ( 2 компа 0 и 255 )
      2. Маска : 256-32=224 , 255.255.255.224 (27)
      3. Начальный адрес — 196.68.1.88 , конечный — 196.68.1.120

    4. Полагаю вопрос «Думаю, что теперь каждый сможет определить, сколько адресов, какой адрес сети и какой адрес broadcast для сети 196.68.1.120/27.» правильней звучал бы так : сколько адресов, какой адрес сети и какой адрес broadcast для сети, хостом которой является 196.68.1.120/27

      • 196.68.1.120/27 — это:
        1) 27 бит под адрес сети. Получается 32 — 27 = 5 бит под адреса в сети.
        Определим настоящий адрес подсети (вертикальной чертой я отделил 5 бит под ip адреса с правой стороны, от адреса подсети с левой стороны):
        120 (dec) = (bin) 011|1 1000
        Отрезаем 5 бит заполняя нулями и получаем:
        96 (dec) = (bin) 011|0 0000
        и настоящей подсетью является 196.68.1.96/27, а 196.68.1.120 является IP адресом из подсети.

        2) зная, что у нас 5 бит под ip адреса, наибольший адрес будет сети будет:
        (bin) 011|1 1111 = 127 (dec)

        а всего адресов в сети будет 31:
        (bin) 000|1 1111 = 31 (dec)

        3) в итоге получилось:
        адрес подсети: 196.68.1.96/27
        минимальный рабочий IP (он же обычно шлюз, адрес подсети + 1): 196.68.1.97
        максимальный IP (broadcast): 196.68.1.127
        максимальный IP для хостов получится (broadcast — 1): 196.68.1.126

    5. Александр
      16.08.2015 в 20:34
      >>2) зная, что у нас 5 бит под ip адреса, наибольший адрес будет
      127 (dec) = (bin) 011|1 1111
      Как это вычисляется???

      • Все зависит от размера подсетей на которые вы хотите порезать /16 подсеть.

        К примеру, вам нужны /28 подсети.

        /16 подсеть — это 16 бит под адрес сети и 16 бит под IP адресы.
        /28 подсеть — это 28 бит под адрес сети и 4 бита под IP адресы.

        Разница между адресами сети 16 бит и 28 бит в 12 бит (единицами просто показал левую часть адреса подсети для удобства).
        /28 — 11111111 11111111 11111111 11110000
        /16 — 11111111 11111111 00000000 00000000

        Следовательно в 12 бит у нас возможно 4096 подсетей: 2^12 = 4096.
        Адреса подсетей будут следующими на примере: 192.168.1.0/28, 192.168.1.16/28, 192.168.1.32/28 и так далее. Так как количество IP адресов в /28 подсети 2^4=16, то и адрес сети увеличивается на 16.

        Полученные /28 подсети вы можете продолжить делить дальше, как вам угодно.

    6. Помогите, пожалуйста.
      Имеется такая задача. Пользователь может ввести любую маску подсети и любой IP-адрес (вроде как при настройке IPv4 в Windows). Необходимо проверить соответствие заданного IP заданной маске. И корректность маски (пользователь вводит IP и маску в десятично-точечной нотации, числа от 0 до 255)

      Насколько я понимаю из MSDN, алгоритм действий следующий:
      1.отбросить маски 0.0.0.0 и 255.255.255.255 (т.е. где все биты единичные или нулевые)
      2.отбросить «рваные» маски, т.е. биты должны быть заполнены последовательно, не допустимы маски типа 11111111 11111111 11110000 11110000 (255.255.240.240)
      3. далее надо провести над IP и маской операцию побитового И, результат должен быть = IP
      А вот далее я не могу разобраться: как не попасть в адрес сети или широковещательный адрес, и есть ли еще какие-нибудь ограничения на валидность масок/IP
      с уважением, Ян

    7. что-то не пойму, как в «Диапазон IP» указать любой ip, открыть доступ с любого ip?

    8. Доброго дня уважаемые. подскажите пожалуйста, может ли измениться количество возможных хостов, если подсеть с маской 255.255.255.0 разбить на 2 подсети с маской 255.255.255.128 ?
      Подсчитываю и по таблице сравниваю что будет не хватать 2 …правильно ли?
      Заранее благодарен.

      • 20 компьютеров — 20 адресов, по одному адресу на один компьютер. Хватит /27 подсети:

        Address: 192.168.0.1 11000000.10101000.00000000.000 00001
        Netmask: 255.255.255.224 = 27 11111111.11111111.11111111.111 00000
        Wildcard: 0.0.0.31 00000000.00000000.00000000.000 11111
        =>
        Network: 192.168.0.0/27 11000000.10101000.00000000.000 00000
        HostMin: 192.168.0.1 11000000.10101000.00000000.000 00001
        HostMax: 192.168.0.30 11000000.10101000.00000000.000 11110
        Broadcast: 192.168.0.31 11000000.10101000.00000000.000 11111
        Hosts/Net: 30 Class C, Private Internet

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

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