cidr для чайников

<p>я понимаю, что такое cidr и для чего он используется, но я все еще не могу понять, как рассчитать его в своей голове. может кто-нибудь дать объяснение типа "для чайников" с примерами?</p>

<p>cidr (бесклассовая междоменная маршрутизация, произносится как "kidder" или "cider" - добавьте свой собственный локальный вариант в комментарии!) - это система определения сетевой части ip-адреса (обычно люди думают об этом как о маске подсети) , причина, по которой он "бесклассовый", заключается в том, что он позволяет более гибко разбивать ip-сети, чем их базовый класс.</p><p>когда ip-сети были впервые определены, ip-адреса имели классы на основе их двоичного префикса:</p><pre><code>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 </code></pre><p>(обратите внимание, что это источник людей, называющих/24 "классом с", хотя это не совсем точное сравнение, потому что класс с должен иметь конкретный префикс)</p><p>эти двоичные префиксы использовались для маршрутизации больших кусков пространства ip вокруг. это было неэффективно, потому что это приводило к тому, что большие блоки назначались организациям, которые не обязательно в них нуждались, а также потому, что классы c могли назначаться только с 24-битными приращениями, а это означало, что таблицы маршрутизации могли становиться излишне большими, так как несколько классов c были направлены в в том же месте.</p><p>cidr был определен, чтобы позволить маскам подсети переменной длины (vlsm) применяться к сетям. как следует из названия, группы адресов или сети могут быть разбиты на группы, которые не имеют прямого отношения к естественному "классу", к которому они принадлежат.</p><p>основная предпосылка vlsm состоит в том, чтобы обеспечить подсчет количества сетевых битов в сети. поскольку ipv4-адрес представляет собой 32-разрядное целое число, vlsm всегда будет в диапазоне от 0 до 32 (хотя я не уверен, в каком случае у вас может быть маска 0-длины).</p><p>самый простой способ начать вычисление vlsm/cidr в вашей голове - это понять "естественные" 8-битные границы:</p><pre><code>cidr dotted quad /8 255.0.0.0 /16 255.255.0.0 /24 255.255.255.0 /32 255.255.255.255 </code></pre><p>(кстати, вполне допустимо и довольно часто в acl использовать маску/32. это просто означает, что вы ссылаетесь на один ip)</p><p>как только вы поймете это, это простая двоичная арифметика для перемещения вверх или вниз, чтобы получить количество хостов. например, если/24 имеет 256 ip-адресов (давайте пока не будем указывать сетевые и широковещательные адреса, это другой вопрос теории сетей), увеличение подсети на один бит (до/25) уменьшит пространство хоста на один бит (до 7), то есть будет 128 ip-адресов.</p><p>вот таблица последнего октета. эта таблица может быть сдвинута на любой октет, чтобы получить точечный четырехугольный эквивалент.</p><pre><code>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 </code></pre><p>в качестве примера смещения их на другой октет,/18 (то есть/26 минус 8 бит, поэтому смещенный октет) будет 255.255.192.0.</p>

<p>каждый октет стоит 8.</p><ul> <li>255.0.0.0/8</li> <li>255.255.0.0/16</li> <li>255.255.255.0/24</li> <li>255.255.255.255/32</li> </ul><p>таким образом, вы можете быстро сузить свою подсеть, а затем вы просто беспокоитесь о последних 8 битах.</p><pre><code>128, 192, 224, 240, 248, 252, 254, 255 +1 , +2 , +3 , +4 , +5 , +6 , +7 , +8 </code></pre><ul> <li>255.128.0.0 =/9</li> <li>255.192.0.0 =/10</li> <li>255.224.0.0 =/11</li> <li>255.240.0.0 =/12</li> <li>255.248.0.0 =/13</li> <li>255.252.0.0 =/14</li> <li>255.254.0.0 =/15</li> </ul><p>надеюсь, это достаточно ясно</p>

<p>поздний день (так), надеюсь, не за доллар. cidr - это количество непрерывных битов в маске ipv4 (32 бита), начиная с самого старшего бита.</p><p>10000000 00000000 00000000 00000000 где 1 = старший значащий бит</p><p>общими масками являются/8,/16,/24, которые находятся на 8-битной (октетной) границе.</p><p>11111111 00000000 00000000 00000000 =/8 = 255.0.0.0</p><p>11111111 11111111 00000000 00000000 =/16 = 255,255.0,0</p><p>11111111 11111111 11111111 00000000 =/24 = 255.255.255.0</p><p>это не очень сложно, когда он не выровнен по октету, но требует некоторой простой математики и понимания того, что такое октет.</p><p>11111111 11111111 11100000 00000000 =/19</p><p>первые два октета маски - 255.255 (/ 16 меньше/19). последний октет равен 0 (/ 19 меньше/24). пока мы знаем</p><p>11111111 11111111 11100000 00000000 =/19 = 255,255.?.0</p><p>при взгляде на каждый октет помните, что это 8-битное значение, 0 - 255.</p><pre><code>0 0 0 0 0 0 0 0 1 2 6 3 1 8 4 2 6 8 4 2 1 </code></pre><p>таким образом, третий октет (?) 11100000 равен 128 + 64 + 32 = 224. это означает</p><p>11111111 11111111 11100000 00000000 =/19 = 255,255,224,0</p>

<p>очень легко вычислять нетривиальные сети вручную. вместо этого попробуйте <a href="http://www.subnet-calculator.com/cidr.php">cidr calculator</a> .</p>

<p>напротив, я думаю, что это хорошо, чтобы полностью понять <strong> [~ # ~] cidr [~ # ~] </strong> и уметь делать вычисления в своем мозгу. ... но иногда вы хотите перепроверить ваши расчеты. мне нравится использовать <strong> калькулятор подсети php </strong>: <a href="http://share-foo.com/subnetcalc.php"><strong> http://share-foo.com/ subnetcalc.php </strong></a> </p><p><img src="https://i.stack.imgur.com/0qs6p.png" alt="alt text"></p>

<p>еще один хороший документ, если вам нужна только настольная ссылка, это rfc 1878 - <a href="http://www.rfc-editor.org/rfc/rfc1878.txt">таблица подсети переменной длины для ipv4</a> .</p>