Преобразование блока CIDR в диапазон IP-адресов в вашей голове за 9 секунд
Я часто сталкиваюсь с людьми, которые используют онлайн-инструменты CIDR всякий раз, когда им нужно рассчитать диапазон IP-адресов для блока CIDR. Мало ли эти люди знают, что на самом деле вы можете вычислить диапазон IP в своей голове всего за 9 секунд!
Прочтите, чтобы узнать о 2 ключевых шагах, которые сделают это возможным!
Получение первого и последнего IP-адресов
Сначала немного предыстории:
Давайте посмотрим на случайный блок CIDR:
3.58.1.97/12
Обозначение состоит из IP-адреса и номера префикса. Номер префикса - это количество заблокированных битов с левой стороны. IP-адрес - это начало диапазона IP-адресов, охватываемого блоком CIDR.
Биты? Какие биты?
Каждый IP-адрес может быть представлен в двоичной форме. Например, IP-адрес в нашем блоке CIDR при перезаписи в двоичной форме выглядит так:
00000011.00111010.00000001.01100001
Кстати, именно поэтому каждый раздел IPv4 также известен как «октет» (то есть группа из 8). Заблокированные биты в нашем IP-адресе:
00000011.00111010.00000001.01100001
Какой самый быстрый и самый запоминающийся способ вычислить первый и последний IP-адреса диапазона IP-адресов?
Понятие баланса
Какое количество битов может измениться в нашем адресе? Общее количество битов в двоичном представлении IPv4 равно 32. Как указано в нашем блоке CIDR, количество заблокированных битов равно 12. Вычитание из 32 оставляет нам 20 бит.
Думайте об этих 20 битах как о балансе, который вы можете «потратить» на октеты в IP-адресе. Вы всегда начинаете тратить с правильной стороны. Пример:
Total balance: 20 bits. Spend 8 bits. 00000011.00111010.00000001.01100001 Spend 8 more bits. 00000011.00111010.00000001.01100001 Current balance: 4 bits. Number of full octets that were covered: 2. Remaining Balance: 4 bits. Spend the remaining 4 bits. 00000011.00111010.00000001.01100001
Знание того, сколько полных октетов мы покрыли, особенно полезно, поскольку оно позволяет нам быстро вычислить соответствующие части первого и последнего IP-адресов.
Полностью закрытый октет - это полностью разблокированный октет. Числа в таком октете охватывают весь диапазон значений от 8 нулей до 8 единиц или в десятичной форме от 0 до 255.
Для каждых 8 в нашем балансе битов мы получаем полностью разблокированный октет с правой стороны.
Вот что нам известно о первом и последнем IP-адресах:
First IPv4 : XXX.XXX.0.0 Last IPv4 : XXX.XXX.255.255
Сложная часть
Как мы вычисляем значения для третьего справа октета?
Мы сразу знаем, что значение третьего октета в первом IP-адресе будет равно значению третьего октета IP-адреса, указанного в нашем блоке CIDR:
First IPv4 : XXX.58.0.0 Last IPv4 : XXX.XXX.255.255
Это связано с тем, что IP-адрес, указанный в блоке CIDR, является началом диапазона IP-адресов, охватываемого блоком CIDR.
Чтобы вычислить значение того же октета для последнего IP-адреса, возьмите 2 в степени количества битов, потраченных на этот октет, и добавьте это значение к значению того же октета в первом IP-адресе.
4 bits spent. 2 ^ 4 = 16. 16 is the range of change of the 3rd octet. First IPv4 : XXX.58.0.0 Last IPv4 : XXX.73.255.255 (!?)
Вы знаете, почему это не 74? Разве 58 + 16 = 74? Это правильно, но оставшиеся 65536 адресов последней 16-й подсети типа B в нашем диапазоне уже покрыты двумя последними октетами:
First IPv4 : XXX.58.0.0 Last IPv4 : XXX.73.255.255
Наконец, для четвертого октета справа мы просто копируем значение того же октета с IP-адреса, указанного в блоке CIDR. Значения заблокированных октетов остаются неизменными для всех IP-адресов, охваченных CIDR:
First IPv4 : 3.58.0.0 Last IPv4 : 3.73.255.255
Вот и все!
Подводя итоги
Просто запомните три вещи, которые нужно сделать, чтобы вычислить первый и последний IP-адреса CIDR:
- Найдите полностью разблокированные октеты. Для этих октетов используйте 0 и 255 для первого и последнего IP-адреса соответственно.
- Рассчитайте диапазон изменения частично разблокированного октета. Не забывайте, что последняя подсеть покрыта предыдущими октетами (справа).
- Для заблокированных октетов используйте значения из тех же октетов IP-адреса, который указан в блоке CIDR.
Это все, что вам нужно, чтобы быстро определить первый и последний IP-адреса блока CIDR!
Совет: запоминание таблицы степеней двойки значительно ускорит второй шаг!
Время практики!
Готовы принять вызов? Попробуйте вычислить следующие диапазоны блоков CIDR!
10.8.17.0/13 11.5.0.0/8 172.16.32.0/22 19.8.8.77/13 255.255.255.253/11 (hardcore) 0.0.0.0/19
Оставляйте свои ответы в комментариях ниже! Обещаю просмотреть каждую заявку :)
Если вы нашли эту статью ценной, поделитесь ею! И спасибо, что прочитали!