Що таке 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 запис з маскою для нашої адреси буде виглядати так (у десятковому поданні):

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 розрядів, вільних для адрес мережі. Так як кожен розряд це 1 біт, що може приймати лише 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

Якщо вам потрібно розрахувати маску підмережі, ви можете легко це зробити скориставшись нашим мережевим калькулятором.

Дивіться також: