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

Для определения сетевой маски удобно использовать так называемый декодер. Перейти к нему прозе всего сначала приведя простой пример — рассмотрим как мы воспринимаем числа записанные в десятичной системе счисления:

Возьмем число 4921 и разложим его на разряды десятичной системы счисления, т.е. 4 раза возьмем по 1000, 9 раз по 100, 2 раза по 10 и 1 раз по 1.

1000 100 10 1

4    9    2 1

Очевидно, что чтобы получить изначальное число нужно перемножить значение на разрядность и сложить все разряды

1000*4 + 100*9 + 10*2 + 1*1 = 4921

 

Вычисление маски подсети по заданному адресу

Прежде всего, вычислить сетевую маску зная только IP адрес нельзя. Вопрос актуален при делении сети на подсети если исходная маска известна и требуется задать новую.

Перейдем к декодеру. Имеется IPv4 адрес, который представляет собой 4 октета, в каждом из которых 256 бита. Для октета, который рассматриваем или для каждого октета адреса записываем сам декодер:

128 64 32 16 8 4 2 1

 

Для примера запишем в двоичном виде адрес localhost 127.0.0.1

128 64 32 16 8 4 2 1      128 64 32 16 8 4 2 1     128 64 32 16 8 4 2 1     128 64 32 16 8 4 2 1

0   1   1  1 1 1 1 1       0  0   0  0  0 0 0 0     0   0  0  0  0 0 0 0    0      0  0  0  0 0 0 1

 

Адрес не может быть 127.0.0.1 потому, что в этом случае не останется бит под хост, все биты были бы отданы под маску.

Адрес относится к классу А, т.е. под сеть выделяется 8 первых бит, остальное под хост — вычислять здесь ничего не требуется, значение стандартное.

 

Для других адресов может оказаться полезным соотношение двух числовых рядов:

Декодер:

128  64  32  16   8  4   2   1

Маска:
128 192 224 240 248 252 254 255

 

 

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

Стандартные значения классов А,В и С известны, но на практике часто возникает необходимость дробить сети на более мелкие участки. Делать это проще всего также используя декодер — возьмем, например, адрес в котором первый пять бит последнего октета отданы под сеть. Прежде всего запишем декодер


Декодер
128  64  32  16   8  4   2   1

Фактически имеем следующее значение, которое хотим отдать под сеть:

1    1   1   1    1  0   0   0


Перемножаем 1 и 0 со значениями декодера и складываем то, что получилось

128+64+32+16+8+0+0+0=248 — это искомая кастомная маска (ее можно взять из стандартного ряда — 248 соответствует последней единице в ряде бит октета)

 

Биты для маски могут выделяться только слева направо непрерывно, в другой репрезентации 255.255.255.0 будет /8, что означает последовательные 8 бит отданные под маску.

Для адресов класса В стандартная маска /16 или 255.255.0.0, для класса С — /24 255.0.0.0

Если под сеть отданы все биты в октете — маска 255