Что такое CIDR?

CIDR (Classless Inter-Domain Routing) - это метод бесклассовой адресации в компьютерных сетях на основе IP-протокола. Такой способ адресации позволяет более гибко управлять адресным пространством доступных IP-адресов, в отличии от классовой адресации.

Для чего нужна адресация в IP-сетях?

В целом адресное пространство в IP-сетях конечно. Например, в IPv4 сетях (это основной протокол на сегодняшний день для глобальной сети Интернет), длина каждого отдельного IP-адреса равна 32 битам, что в совокупности дает адресное пространство количеством 232 = 4 294 967 296 всех возможных адресов (чуть более 4 миллиардов адресов). В то же время новый стандарт IPv6 определяет IP-адреса длиной в 128 бит, что существенно увеличивает адресное пространство до числа примерно равному 3.4×1038 адресов. Это в 79 228 162 514 264 337 593 543 950 336 раз больше, чем адресное пространство IPv4. Примерно 79 септиллионов! Если каждому из 7 миллиардов жителей выделить по пространству адресов, равному IPv4 из пространства адресов IPv6, то каждый из нас получит примерно по 11 318 308 930 609 191 085, то есть примерно по 11.3 квадриллиона IPv4 адресных пространств. Но хотя эти числа и столь огромны, они все равно конечны.

Поскольку Интернет из себя представляет множество различных сетей, объединенных в одну глобальную сеть, существует необходимость каким-то образом распределять адреса из глобального пространства и выделять их в пользование отдельным сетям. Более крупные сети могуть выделять отдельные блоки из своего адресного пространства и распределять их между своими подсетями и так далее.

То есть с точки зрения использования адресного пространства каждая отдельная сеть ассоциирована с некоторым выделенным из глобального пространства блоком IP-адресов. То есть говорят, что такой выделенный блок адресован сети.

CIDR по своей сути и является таким специальным методом выделения некоторых блоков адресов отдельным сетям.

Как это работает?

Давайте рассмотрим принципы CIDR на примере адресного пространства IPv4, поскольку более мелкие цифры будут смотреться на этой странице более наглядно. В целом, основные принципы будут также применимы и к пространству IPv6.

Итак, первым делом вспомним, как выглядит IPv4 адрес, например - 198.51.100.15, то есть это 4 блока десятичных чисел от 0 до 255, разделенных символом точка.

В целом же, по своей природе, это просто целое число длинной 32 бита. Бит - это минимальная единица информации, которой оперирует компьютер. Большинство наших компьютеров оперируют двоичными битами, то есть такими, которые могут принимать два состояния и описаны числами 0 и 1. Это значит, если представить IPv4 адрес в двоичном представлении из единиц и нулей (то, как видит его компьютер), то получиться цепочка из единиц и нулей длинной в 32 символа (разряда). Например, минимальный адрес IPv4 будет выглядеть так:

00000000000000000000000000000000

а максимальный - так:

11111111111111111111111111111111

Поскольку большинство современных компьютеров оперируют байтом информации равном 8 битам, можно разделить эти 32 бита на 4 октета, и записать их через точку в виде (давайте возьмем теперь адрес из нашего примера):

11000110.00110011.01100100.00001111

Если перевести эту переписать в десятичное представление (что нам людям более привычно для восприятия), то мы и получим IP-адрес в привычном для нас виде - 198.51.100.15

Как было сказано, каждая сеть - это некоторый блок адресов. А каждый блок адресов имеет начальный (базовый) адрес сети и конечный (широковещательный) адрес. Все остальные адреса, за исключением начального и конечного могут быть использованы как адреса реальных узлов (хостов) данной сети.

Чтобы при маршрутизации пакетов компьютер мог определить начальный адрес сети (а это необходимо для реализации маршрутизации пакетов) применяют понятие битовой маски подсети. В CIDR применяются сетевые маски переменной длинны (VLSM - variable length subnet mask). При таком подходе маску определяют как количество единичных старших бит в маске и записывают через символ "/" сразу после IP-адреса. Допустим маска нашей подсети - это 24 старших единичных бита, то есть для компьютера она выглядит так:

11111111.11111111.11111111.00000000

То в этом случае CIDR запись c маской для нашего адреса будет выглядеть так (в десятичном представлении):

198.51.100.15/24

При помощи маски компьютер легко вычисляет начальный адрес сети для любого адреса применяя побитовое логическое И к адресу и маске подсети, то есть

11000110.00110011.01100100.00001111
&
11111111.11111111.11111111.00000000
=
11000110.00110011.01100100.00000000

Или в десятичном виде:

198.51.100.0

Количество нулей в младших битах маски определяют максимальное количество возможных адресов в сети. Их подсчитать достаточно просто. Считаем количество нулей. Если у нас из 32 бит 24 определены единицами, то нулей будет 32 - 24 = 8. То есть - это 8 разрядов, свободных для адресов сети. Так как каждый разряд может принимать 2 значения (0 или 1) то всего у нас получается 28 возможных комбинаций, что равно 256, это в свою очередь равно ряду чисел от 0 до 255. Таким образом последний адрес в нашей подсети будет 198.51.100.255 (он же - широковещательный). То есть знание адреса и его маски подсети дает возможность определить и начальный и конечный адреса сети, и количество реальных возможных узлов внутри сети. В нашем примере, CIDR запись вида 198.51.100.15/24 подробно описывает следующую информацию:

Другими словами, блок адресов с маской /24 позволяет создать подсеть, например, из 254 одновременно подключенных к сети компьютеров (узлов или хостов).

Таблица масок переменной длинны

Основываясь на описанных выше правилах CIDR адресации можно построить следующую таблицу VLSM, которая может стать хорошим подспорьем в работе любого системного администратора сети.

CIDR Маска Кол-во
адресов
Кол-во
узлов
Класс
A.B.C.D/32 255.255.255.255 1 1 1/256 C
A.B.C.D/31 255.255.255.254 2 2 1/128 C
A.B.C.D/30 255.255.255.252 4 2 1/64 C
A.B.C.D/29 255.255.255.248 8 6 1/32 C
A.B.C.D/28 255.255.255.240 16 14 1/16 C
A.B.C.D/27 255.255.255.224 32 30 1/8 C
A.B.C.D/26 255.255.255.192 64 62 1/4 C
A.B.C.D/25 255.255.255.128 128 126 1/2 C
A.B.C.0/24 255.255.255.000 256 254 C
A.B.C.0/23 255.255.254.000 512 510 2 C
A.B.C.0/22 255.255.252.000 1 024 1 022 4 C
A.B.C.0/21 255.255.248.000 2 048 2 046 8 C
A.B.C.0/20 255.255.240.000 4 096 4 094 16 C
A.B.C.0/19 255.255.224.000 8 192 8 190 32 C
A.B.C.0/18 255.255.192.000 16 384 16 382 64 C
A.B.C.0/17 255.255.128.000 32 768 32 766 128 C
A.B.0.0/16 255.255.000.000 65 536 65 534 B
A.B.0.0/15 255.254.000.000 131 072 131 070 2 B
A.B.0.0/14 255.252.000.000 262 144 262 142 4 B
A.B.0.0/13 255.248.000.000 524 288 524 286 8 B
A.B.0.0/12 255.240.000.000 1 048 576 1 048 574 16 B
A.B.0.0/11 255.224.000.000 2 097 152 2 097 150 32 B
A.B.0.0/10 255.192.000.000 4 194 304 4 194 302 64 B
A.B.0.0/9 255.128.000.000 8 388 608 8 388 606 128 B
A.0.0.0/8 255.000.000.000 16 777 216 16 777 214 A
A.0.0.0/7 254.000.000.000 33 554 432 33 554 430 2 A
A.0.0.0/6 252.000.000.000 67 108 864 67 108 862 4 A
A.0.0.0/5 248.000.000.000 134 217 728 134 217 726 8 A
A.0.0.0/4 240.000.000.000 268 435 456 268 435 454 16 A
A.0.0.0/3 224.000.000.000 536 870 912 536 870 910 32 A
A.0.0.0/2 192.000.000.000 1 073 741 824 1 073 741 822 64 A
A.0.0.0/1 128.000.000.000 2 147 483 648 2 147 483 646 128 A
0.0.0.0/0 000.000.000.000 4 294 967 296 4 294 967 294 256 A

Если вам требуется рассчитать маску подсети, вы можете легко это сделать воспользовавшись нашим сетевым калькулятором.

Смотрите также: