Что такое маска подсети
IP адрес протокола IPv4 состоит из 32 бит, но не все биты в адресе имеют одинаковое значение. Биты делятся на две части: слева некоторое количество бит обозначают сеть, к которой относится данный адрес, оставшиеся биты справа идентифицируют устройство внутри сети. Подробнее об этом можно прочесть в статье про IPv4-адресацию. Граница между этими двуя группами бит может проходить в разных местах, например, для 32-битного адреса, первые 16 бит могут обозначать сеть, вторые – хост внутри сети, возможны любые другие сочетания (10 и 22, 8 и 24, 30 и 2) – в принципе, любые два числа, дающие в сумме 32 подойдут.
Для описания того, где проходит эта граница используется маска подсети. Она представляет из себя так же 32 бита, среди которых слева находится некоторое количество единиц, а остальные биты равны нулю. Там, где в маске подсети стоит единица, в основном адресе бит содержит информацию о сети, там, где в маске подсети 0 – в основном адресе содержится информация о хосте. Возможно, такое описание не сильно понятно, давайте рассмотрим пример.
Адрес 192.168.10.130 с маской 255.255.255.192, где в адресе хост, а где – сеть? Запишем в двоичном виде адрес, а под ним маску:
11000000.10101000.00001010.10000010 11111111.11111111.11111111.11000000
Там где в маске единички – в адресе хранится информация о сети, там где в маске нули – в адресе хранится информация о хосте. Если выполнить между адресом и маской двоичную операцию «И» побитово, то на выходе получим адрес сети. Эта операция в нашем случае просто обнулит ту часть адреса, где в маске находятся нули.
Получим 11000000.10101000.00001010.10000000, что соответствует сети 192.168.10.128
Таким образом, в нашем адресе 192.168.10.128 – это сеть.
Перевод маски подсети в префикс подсети
Если стоит задача узнать префикс по маске, то надо просто сосчитать количество единичек в маске. В нашем примере в маске (в двоичном виде) содержится 26 единичек, значит она может быть записана префиксом /26. Это же означает, что в адресе 192.168.10.130 первые 26 бит – это сеть, а оставшиеся 6 – это хост внутри сети.
Маски подсети в IPv6
Маска подсети должна иметь ту же длину, что и сам IP адрес. В IPv6 адрес имеет длину 128 бит и маски подсети не используются в связи с тем, что они были бы слишком длинными. Вместо масок подсети в IPv6 информация о том, какая часть адреса хранит информацию о сети, а какая — о хосте записывается в виде сетевого префикса.
Комментарии
lomaster (не проверено)
чт, 02/16/2017 - 11:17
Постоянная ссылка (Permalink)
Спасибо. Ещё бы описали двоичную операцию «И». А так, всё хорошо
bacek
пт, 02/17/2017 - 11:05
Постоянная ссылка (Permalink)
Евгений (не проверено)
вс, 12/24/2017 - 11:58
Постоянная ссылка (Permalink)
Адрес 192.168.10.130 с маской 255.255.255.192.
Меня одного удивляет как смогли получить число 130 из 6 бит?
bacek
вс, 12/24/2017 - 19:55
Постоянная ссылка (Permalink)
Отличный вопрос. Обожаю такие конкретные, тут явно есть что разъяснить. Ошибки нет. Наш адрес 192.168.10.130 в двоичном виде последний октет выглядит так 10000010. Теперь я поставлю вертикальную черту там где кончается сеть и начинается хочтовая часть: 10|00010 То есть сеть у нас 192.168.10.128. Таким образом из 6 бит мыполучили число 2, а 128 там уже было - это сама сеть. 128+2 дало нам 130. Кстати, брудкаст в этой сети будет 10|111111 -192.168.10.191, то есть хосты в этой сети будут идти с 192.168.10.129 по 192.168.10.190.
ARK
сб, 04/14/2018 - 17:58
Постоянная ссылка (Permalink)
1.
«там где в маске нули – в адресе хранится информация о хосте.»:
11000000.10101000.00001010.10|000010
11111111.11111111.11111111.11|000000
Получается, что в сети 192.168.10.128 хост № 2. Каким образом получить 3 или 4 ?
2.
И как получился брудкаст? 10|111111-192.168.10.191
Если переводить все единицы (шесть единиц: 32+16+8+4+2+1=63), то получается 192.168.10.63
ARK
сб, 04/14/2018 - 18:03
Постоянная ссылка (Permalink)
Третий хост будет: 192.168.10.131, четвёёртый 192.168.10.132 ?
ARK
сб, 04/14/2018 - 19:18
Постоянная ссылка (Permalink)
Про брудкаст разобрался из другой статьи). Но 1 вопрос всё ещё актуален.
bacek
пн, 04/16/2018 - 11:40
Постоянная ссылка (Permalink)
Здравствуйте.
На счёт брудкаста - вы забыли прибавить первую единичку (128). Когда переводим из двоичной в десятичную и обратно, нем не важно, где там сеть, где хост переводим весь октет в любом случае.
По поводу вопроса 1:
11000000.10101000.00001010.10|000010
11111111.11111111.11111111.11|000000
Valger
пн, 11/07/2022 - 17:35
Постоянная ссылка (Permalink)
Здравствуйте. Зарегистрировался что бы сказать "Спасибо" за интересную и качественную подачу материала. Очень кратко, ёмко и интересно.
Добавить комментарий