Я понимаю, что такое CIDR, и для чего он используется, но до сих пор не могу понять, как его вычислить в голове. Может кто-нибудь дать пояснение типа "для чайников" с примерами?
CIDR (Бесклассовая междоменная маршрутизация, произносится как «kidder» или «сидр» - добавьте свой собственный локальный вариант в комментарии!) - это система определения сетевой части IP-адреса (обычно люди думают об этом как о маске подсети) . Причина, по которой он «бесклассовый», заключается в том, что он позволяет более гибко разрушать IP-сети, чем их базовый класс.
Когда IP-сети были впервые определены, IP-адреса имели классы на основе их двоичного префикса:
Class Binary Prefix Range Network Bits
A 0* 0.0.0.0-127.255.255.255 8
B 10* 128.0.0.0-191.255.255.255 16
C 110* 192.0.0.0-223.255.255.255 24
D 1110* 224.0.0.0-239.255.255.255
E 1111* 240.0.0.0-255.255.255.255
(Обратите внимание, что это источник людей, называющих / 24 "классом C", хотя это не совсем верное сравнение, потому что класс C должен иметь определенный префикс)
Эти двоичные префиксы использовались для маршрутизации больших фрагментов IP-пространства. Это было неэффективно, потому что это приводило к тому, что большие блоки назначались организациям, которые не обязательно в них нуждались, а также потому, что классы C можно было назначать только с 24-битными приращениями, а это означало, что таблицы маршрутизации могли стать излишне большими, поскольку несколько классов C были маршрутизированы на там же.
CIDR был определен для того, чтобы разрешить применение масок подсети переменной длины (VLSM) к сетям. В зависимости от названия группы адресов или сети могут быть разбиты на группы, которые не имеют прямого отношения к естественному «классу», к которому они принадлежат.
Основная предпосылка VLSM - обеспечить подсчет количества сетевых битов в сети. Поскольку IPv4-адрес является 32-битным целым числом, VLSM всегда будет находиться в диапазоне от 0 до 32 (хотя я не уверен, в каком случае у вас может быть маска нулевой длины).
Самый простой способ начать вычисление VLSM / CIDR в уме - это понять «естественные» 8-битные границы:
CIDR Dotted Quad
/8 255.0.0.0
/16 255.255.0.0
/24 255.255.255.0
/32 255.255.255.255
(Между прочим, совершенно законно и довольно часто в ACL использовать маску / 32. Это просто означает, что вы имеете в виду один IP-адрес)
Как только вы их поймете, это простая двоичная арифметика, чтобы перемещаться вверх или вниз, чтобы получить количество хостов. Например, если / 24 имеет 256 IP-адресов (давайте пока оставим сетевые и широковещательные адреса, это другой вопрос сетевой теории), увеличение подсети на один бит (до / 25) уменьшит пространство хоста на один бит (до 7), то есть будет 128 IP.
Вот таблица последнего октета. Эту таблицу можно переместить в любой октет, чтобы получить эквивалент четырехугольника с точками.
CIDR Dotted Quad
/24 255.255.255.0
/25 255.255.255.128
/26 255.255.255.192
/27 255.255.255.224
/28 255.255.255.240
/29 255.255.255.248
/30 255.255.255.252
/31 255.255.255.254
/32 255.255.255.255
В качестве примера сдвига их на другой октет, / 18 (который составляет / 26 минус 8 бит, поэтому сдвинутый октет) будет 255.255.192.0.
Каждый октет стоит 8.
Таким образом, вы можете быстро сузить свою подсеть, а затем беспокоиться о последних 8 битах.
128, 192, 224, 240, 248, 252, 254, 255
+1 , +2 , +3 , +4 , +5 , +6 , +7 , +8
Надеюсь, это достаточно ясно
На день (так!) Позже, надеюсь, не меньше доллара. CIDR - это количество смежных битов в маске IPv4 (32 бита), начиная со старшего бита.
10000000 00000000 00000000 00000000 где 1 = старший бит
Обычными масками являются / 8, / 16, / 24, которые попадают на 8-битную (октетную) границу.
11111111 00000000 00000000 00000000 = / 8 = 255.0.0.0
11111111 11111111 00000000 00000000 = / 16 = 255.255.0.0
11111111 11111111 11111111 00000000 = / 24 = 255.255.255.0
Это не очень сложно, когда октет не выровнен, но для этого требуется простая математика и понимание того, что такое октет.
11111111 11111111 11100000 00000000 = / 19
Первые два октета маски - 255,255 (/ 16 меньше / 19). Последний октет равен 0 (/ 19 меньше / 24). Пока мы знаем
11111111 11111111 11100000 00000000 = / 19 = 255.255.?.0
При просмотре каждого октета помните, что это 8-битное значение от 0 до 255.
0 0 0 0 0 0 0 0
1
2 6 3 1
8 4 2 6 8 4 2 1
Итак, третий октет (?) 11100000 равен 128 + 64 + 32 = 224. Это означает
11111111 11111111 11100000 00000000 = / 19 = 255.255.224.0
Расчет нетривиальных сетей вручную очень подвержен ошибкам. Попробуйте Калькулятор CIDR вместо.
Напротив, я думаю, что хорошо полностью понять CIDR и уметь делать расчеты в уме ... но иногда вам хочется дважды проверить свои расчеты. Мне нравится использовать Калькулятор подсети PHP: http://share-foo.com/SubnetCalc.php
Еще один хороший документ, если вам просто нужна настольная справка, - RFC 1878 - Таблица подсетей переменной длины для IPv4.