Маска подсети — битовая маска, позволяющая разделить IP-адрес на адрес подсети и адрес узла (хоста, компьютера, устройства) внутри этой подсети.
Такое разделение производится путём проведения операции поразрядной конъюнкции ("побитовое И") над IP-адресом и маской. Результатом этой операции будет адрес подсети:
Маска подсети: 11111111 11111111 11111110 00000000 (255.255.254.0) IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2) Адрес сети: 11000000 10101000 00000000 00000000 (192.168.0.0) часть маски, состоящая из единиц и определяющая адрес сети; адрес сети; диапазон адресов устройств в этой сети.
Так, например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0 находится в сети 12.34.56.0.
Поскольку маска подсети всегда состоит из некоторого количества единичных битов, идущих подряд (начиная с самого старшего), её нередко записывают в сокращённом виде — указывая количество таких битов после косой черты. Так, в вышеприведённом примере маску подсети вместо 255.255.254.0 можно сокращённо записать как /23.
128-битная адресация в протоколе IPv6 осуществляется аналогичным образом. Так, адрес 2001:0DB8:0001:0000:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) будет находиться в сети 2001:0DB8::/32.
Разбиение одной большой сети на несколько меньших позволяет упростить маршрутизацию. Например, пусть таблица маршрутизации некоторого маршрутизатора выглядит следующим образом:
Сеть назначения Маска сети Адрес шлюза 192.168.2.0 255.255.255.0 10.20.32.2 192.168.1.0 255.255.255.0 10.20.30.1 192.168.3.0 255.255.255.0 10.20.33.1
Пусть маршрутизатор получает пакет данных с адресом назначения 192.168.1.2. Он поочерёдно берёт каждую строчку из таблицы маршрутизации и применяет операцию «побитовое И» к адресу назначения (192.168.1.2) пакета и маске подсети (255.255.255.0). Если получившийся в результате этой операции адрес совпадает с адресом сети назначения в этой строчке (192.168.1.0), то маршрутизатор прекращает поиск и отправляет пакет на указанный адрес шлюза (10.20.30.1).
Битовые операции при расчёте адреса сети в IPv6 выглядят аналогично. Но в IPv6 можно просто рассчитать адрес сети по длине префикса, применив формулу: "длина префикса в битах" / 4 = "кол-во 0xF у адреса сети". Взяв полученное количество 0xF из адреса узла, получаем адрес сети.
Маски при бесклассовой маршрутизации (CIDR)
Маски подсети являются основой метода бесклассовой маршрутизации (). При этом подходе маску подсети записывают вместе с IP-адресом в формате «IP-адрес/количество единичных бит в маске». Число после знака дроби ( длина префикса сети) означает количество единичных разрядов (бит) в маске подсети.
Рассмотрим пример записи диапазона IP-адресов в виде 10.96.0.0/11. В этом случае маска подсети будет иметь двоичный вид 1111_1111.1110_0000.0000_0000.0000_0000, или то же самое в десятичном виде: 255.224.0.0. 11 разрядов IP-адреса отводятся под адрес сети, а остальной 32-11=21 разряд полного адреса (1111_1111.1110_0000.0000_0000.0000_0000) — под локальный адрес в этой сети. Итого, 10.96.0.0/11 означает диапазон адресов от 10.96.0.0 до 10.127.255.255.
В следующей таблице в первом столбце на месте букв a, b, c, d должен располагаться адрес сети. Если присутствуют только три, две или одна буква, это значит, что администратор может указать лишь несколько чисел адреса, остальные же всегда будут равны 0.
+ IPv4 CIDR Адрес сети и её префикс Последний адрес устройства относительно адреса подсети (то же, что обратная маска) Маска подсети Количество адресов в подсети Количество хостов в подсети Класс подсетиa.b.c.d/32 0.0.0.0255.255.255.25511*1/256 Ca.b.c.d/31 0.0.0.1255.255.255.25422*1/128 Ca.b.c.d/30 0.0.0.3255.255.255.252421/64 Ca.b.c.d/29 0.0.0.7255.255.255.248861/32 Ca.b.c.d/28 0.0.0.15255.255.255.24016141/16 Ca.b.c.d/27 0.0.0.31255.255.255.22432301/8 Ca.b.c.d/26 0.0.0.63255.255.255.19264621/4 Ca.b.c.d/25 0.0.0.127255.255.255.1281281261/2 Ca.b.c.0/24 0.0.0.255255.255.255.0002562541 Ca.b.c.0/23 0.0.1.255255.255.254.0005125102 Ca.b.c.0/22 0.0.3.255255.255.252.000102410224 Ca.b.c.0/21 0.0.7.255255.255.248.000204820468 Ca.b.c.0/20 0.0.15.255255.255.240.0004096409416 Ca.b.c.0/19 0.0.31.255255.255.224.0008192819032 Ca.b.c.0/18 0.0.63.255255.255.192.00016 38416 38264 Ca.b.c.0/17 0.0.127.255255.255.128.00032 76832 766128 Ca.b.0.0/16 0.0.255.255255.255.000.00065 53665 534256 C = 1 Ba.b.0.0/15 0.1.255.255255.254.000.000131 072131 0702 Ba.b.0.0/14 0.3.255.255255.252.000.000262 144262 1424 Ba.b.0.0/13 0.7.255.255255.248.000.000524 288524 2868 Ba.b.0.0/12 0.15.255.255255.240.000.0001 048 5761 048 57416 Ba.b.0.0/11 0.31.255.255255.224.000.0002 097 1522 097 15032 Ba.b.0.0/10 0.63.255.255255.192.000.0004 194 3044 194 30264 Ba.b.0.0/9 0.127.255.255255.128.000.0008 388 6088 388 606128 Ba.0.0.0/8 0.255.255.255255.000.000.00016 777 21616 777 214256 B = 1 Aa.0.0.0/7 1.255.255.255254.000.000.00033 554 43233 554 4302 Aa.0.0.0/6 3.255.255.255252.000.000.00067 108 86467 108 8624 Aa.0.0.0/5 7.255.255.255248.000.000.000134 217 728134 217 7268 Aa.0.0.0/4 15.255.255.255240.000.000.000268 435 456268 435 45416 Aa.0.0.0/3 31.255.255.255224.000.000.000536 870 912536 870 91032 Aa.0.0.0/2 63.255.255.255192.000.000.0001 073 741 8241 073 741 82264 Aa.0.0.0/1 127.255.255.255128.000.000.0002 147 483 6482 147 483 646128 A0.0.0.0/0 255.255.255.255000.000.000.0004 294 967 2964 294 967 294256 A
* Чтобы в сетях с такой размерностью маски возможно было разместить хосты, отступают от правил, принятых для работы в остальных сетях.
Возможных узлов подсети меньше количества адресов на два: начальный адрес сети резервируется для идентификации подсети, последний адрес используется в качестве широковещательного адреса (возможны исключения в виде адресации в IPv4 сетей /32 и /31).
Выбор маски для подсети Если — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и (для сетей класса C), то маска подсети вычисляется по следующей формуле: , где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для будет другая формула.
Пример: в некой подсети класса C есть 30 компьютеров; маска для такой сети вычисляется следующим образом:
28 - 30 - 2 = 224 = E0h; маска: 255.255.255.224 = 0xFF.FF.FF.E0.
Литература
См. также Бесклассовая адресация
Примечания
Ссылки
Категория:TCP/IP