Маска (жанр)
- 1 year ago
- 0
- 0
Маска подсети — битовая маска для определения по 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 ). При этом подходе маску подсети записывают вместе с 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.111
0_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).
Если — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и (для сетей класса C ), то маска подсети вычисляется по следующей формуле: , где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для будет другая формула.
Пример: в некой подсети класса C есть 30 компьютеров; маска для такой сети вычисляется следующим образом:
28 - 30 - 2 = 224 = E0h; маска: 255.255.255.224 = 0xFF.FF.FF.E0.