Для определения сетевой маски удобно использовать так называемый декодер. Перейти к нему прозе всего сначала приведя простой пример — рассмотрим как мы воспринимаем числа записанные в десятичной системе счисления:
Возьмем число 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