Маска подсети
Маска подсети — битовая маска для определения по IP-адресу адреса подсети и адреса узла (хоста, компьютера, устройства) этой подсети. В отличие от IP-адреса маска подсети не является частью IP-пакета.
Благодаря маске можно узнать, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0, с длиной префикса 24 бита (/24), находится в сети 12.34.56.0.
В случае адресации IPv6 адрес 2001:0DB8:1:0:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) находится в сети 2001:0DB8::/32.
Другой вариант определения — это определение подсети IP-адресов. Например, с помощью маски подсети можно сказать, что один диапазон IP-адресов будет в одной подсети, а другой диапазон соответственно в другой подсети.
Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (побитовое И). Например, в случае более сложной маски:
IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2) Маска подсети: 11111111 11111111 11111110 00000000 (255.255.254.0) Адрес сети: 11000000 10101000 00000000 00000000 (192.168.0.0)
Легенда:
- часть маски, определяющая адрес сети и состоящая из единиц;
- адрес сети, который определяется маской подсети;
- диапазон адресов устройств в этой сети.
Разбиение одной большой сети на несколько маленьких подсетей позволяет упростить маршрутизацию. Например, пусть таблица маршрутизации некоторого маршрутизатора содержит следующую запись:
Сеть назначения | Маска сети | Адрес шлюза |
---|---|---|
192.168.1.0 | 255.255.255.0 | 10.20.30.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)
Маски подсети являются основой метода бесклассовой маршрутизации (англ. 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.
CIDR | Последний IP-адрес в подсети | Маска подсети | Количество адресов в подсети | Количество хостов в подсети | Класс подсети |
---|---|---|---|---|---|
a.b.c.d/32 | 0.0.0.0 | 255.255.255.255 | 1 | 1* | 1/256 C |
a.b.c.d/31 | 0.0.0.1 | 255.255.255.254 | 2 | 2* | 1/128 C |
a.b.c.d/30 | 0.0.0.3 | 255.255.255.252 | 4 | 2 | 1/64 C |
a.b.c.d/29 | 0.0.0.7 | 255.255.255.248 | 8 | 6 | 1/32 C |
a.b.c.d/28 | 0.0.0.15 | 255.255.255.240 | 16 | 14 | 1/16 C |
a.b.c.d/27 | 0.0.0.31 | 255.255.255.224 | 32 | 30 | 1/8 C |
a.b.c.d/26 | 0.0.0.63 | 255.255.255.192 | 64 | 62 | 1/4 C |
a.b.c.d/25 | 0.0.0.127 | 255.255.255.128 | 128 | 126 | 1/2 C |
a.b.c.0/24 | 0.0.0.255 | 255.255.255.000 | 256 | 254 | 1 C |
a.b.c.0/23 | 0.0.1.255 | 255.255.254.000 | 512 | 510 | 2 C |
a.b.c.0/22 | 0.0.3.255 | 255.255.252.000 | 1024 | 1022 | 4 C |
a.b.c.0/21 | 0.0.7.255 | 255.255.248.000 | 2048 | 2046 | 8 C |
a.b.c.0/20 | 0.0.15.255 | 255.255.240.000 | 4096 | 4094 | 16 C |
a.b.c.0/19 | 0.0.31.255 | 255.255.224.000 | 8192 | 8190 | 32 C |
a.b.c.0/18 | 0.0.63.255 | 255.255.192.000 | 16 384 | 16 382 | 64 C |
a.b.c.0/17 | 0.0.127.255 | 255.255.128.000 | 32 768 | 32 766 | 128 C |
a.b.0.0/16 | 0.0.255.255 | 255.255.000.000 | 65 536 | 65 534 | 256 C = 1 B |
a.b.0.0/15 | 0.1.255.255 | 255.254.000.000 | 131 072 | 131 070 | 2 B |
a.b.0.0/14 | 0.3.255.255 | 255.252.000.000 | 262 144 | 262 142 | 4 B |
a.b.0.0/13 | 0.7.255.255 | 255.248.000.000 | 524 288 | 524 286 | 8 B |
a.b.0.0/12 | 0.15.255.255 | 255.240.000.000 | 1 048 576 | 1 048 574 | 16 B |
a.b.0.0/11 | 0.31.255.255 | 255.224.000.000 | 2 097 152 | 2 097 150 | 32 B |
a.b.0.0/10 | 0.63.255.255 | 255.192.000.000 | 4 194 304 | 4 194 302 | 64 B |
a.b.0.0/9 | 0.127.255.255 | 255.128.000.000 | 8 388 608 | 8 388 606 | 128 B |
a.0.0.0/8 | 0.255.255.255 | 255.000.000.000 | 16 777 216 | 16 777 214 | 256 B = 1 A |
a.0.0.0/7 | 1.255.255.255 | 254.000.000.000 | 33 554 432 | 33 554 430 | 2 A |
a.0.0.0/6 | 3.255.255.255 | 252.000.000.000 | 67 108 864 | 67 108 862 | 4 A |
a.0.0.0/5 | 7.255.255.255 | 248.000.000.000 | 134 217 728 | 134 217 726 | 8 A |
a.0.0.0/4 | 15.255.255.255 | 240.000.000.000 | 268 435 456 | 268 435 454 | 16 A |
a.0.0.0/3 | 31.255.255.255 | 224.000.000.000 | 536 870 912 | 536 870 910 | 32 A |
a.0.0.0/2 | 63.255.255.255 | 192.000.000.000 | 1 073 741 824 | 1 073 741 822 | 64 A |
a.0.0.0/1 | 127.255.255.255 | 128.000.000.000 | 2 147 483 648 | 2 147 483 646 | 128 A |
0.0.0.0/0 | 255.255.255.255 | 000.000.000.000 | 4 294 967 296 | 4 294 967 294 | 256 A |
* Чтобы в сетях с такой размерностью маски возможно было разместить хосты, отступают от правил, принятых для работы в остальных сетях.
Возможных узлов подсети меньше количества адресов на два: начальный адрес сети резервируется для идентификации подсети, последний адрес используется в качестве широковещательного адреса (возможны исключения в виде адресации в IPv4 сетей /32 и /31).
Выбор маски для подсети
Если [math]\displaystyle{ n }[/math] — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и [math]\displaystyle{ n \leqslant 254 }[/math] (для сетей класса C), то маска подсети вычисляется по следующей формуле: [math]\displaystyle{ 2^8 - n - 2 }[/math], где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для [math]\displaystyle{ n \gt 254 }[/math] будет другая формула.
Пример: в некой подсети класса C есть 30 компьютеров; маска для такой сети вычисляется следующим образом:
28 - 30 - 2 = 224 = E0h; маска: 255.255.255.224 = 0xFF.FF.FF.E0.
См. также
Примечания
Литература
- Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов = Computer Networks. Principles, Technologies and Protocols for Network Design. — 3-е изд. — СПб.: Издательский дом «Питер», 2006. — С. 572—576. — 958 с. — ISBN 5-469-00504-6.
Ссылки
- Ivan Pascal. «Вычисление сетевой маски для подсети» . OpenNet.ru (3 июня 2002). Дата обращения: 21 февраля 2011.
- Сергей Верещагин. «Wildcard Mask (шаблонная маска)» (30 мая 2009). Дата обращения: 21 февраля 2011. Архивировано 25 августа 2011 года.