11111111 — максимум одного октета. Значений всего 256: от 0 до 255.
Без двоичной системы IP-адрес — это просто четыре непонятных числа. С ней — прозрачная арифметика.
Ничего знать заранее не нужно. Мы начнём с выключателя света и к концу спокойно распишем любой адрес до последнего бита.
У лампочки два состояния: горит и не горит. Больше ничего. Компьютер устроен так же.
Два варианта — и всё. Ни «наполовину», ни «почти»: либо ток есть, либо нет.
Договоримся, сколько «стоит» каждая лампочка: самая левая — 128, дальше 64, 32, 16, 8, 4, 2 и самая правая — 1. Чтобы прочитать ряд, складываем цены только тех лампочек, которые горят.
Восемь лампочек в ряд — это байт, он же октет. Ровно из четырёх таких рядов состоит IP-адрес.
В проводе нет «цифры 7». Есть только напряжение: есть или нет. Цифру приходится собирать из лампочек.
В проводе есть только «есть напряжение» и «нет». Значит, всё, что мы передаём, — это последовательность нулей и единиц.
Слева — старший разряд (вес 128), справа — младший (вес 1). Чтобы получить десятичное число, складываем веса тех разрядов, где стоит единица: 128 + 64 = 192.
| Разряд | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| Вес | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Сумма слева направо | 128 | 192 | 224 | 240 | 248 | 252 | 254 | 255 |
Нижняя строка — это все возможные маски внутри одного октета. Она встретится нам ещё десять раз, так что запоминаем её сразу: 128 · 192 · 224 · 240 · 248 · 252 · 254 · 255.
Так же считаются остальные октеты адреса 192.168.15.1: 10101000 = 128+32+8 = 168, 00001111 = 8+4+2+1 = 15, 00000001 = 1.
Идём по весам от 128 к 1. Влезает — ставим 1 и вычитаем. Не влезает — ставим 0.
11111111 — максимум одного октета. Значений всего 256: от 0 до 255.
Если число на 1 меньше степени двойки (127, 63, 31) — это единицы подряд справа.
128, 64, 32, 16, 8, 4, 2, 1 — ровно один разряд включён.
Число 128 и больше — старший разряд точно 1. Меньше — точно 0.
Чётное число заканчивается на 0, нечётное — на 1.
В октете дописываем нули слева: 1 → 00000001. Иначе адрес «съедет».
Весь фокус — идти слева направо и просто копить сумму. Ошибиться можно только в одном: сбиться в цене лампочки. Поэтому цены сначала подписывают, а потом считают.
Проверка бесплатная: сложите цены включённых лампочек обратно. Получилось исходное число — значит, всё верно.
Число 1 в октете пишется 00000001, а не «1». Лампочек всегда восемь, даже если горит одна.
Цены растут к левому краю. Самая левая лампочка — самая дорогая, 128.
Ноль — это полноценное значение. Октет из восьми нулей — это число 0, а не пустое место.
Мы только складываем цены горящих лампочек. Никаких умножений в уме не требуется.
Если запутались — вернитесь к слайду с кнопками и пощёлкайте лампочки: там сумма пересчитывается сама, и видно, откуда взялось число.
Три строчки. Если они в голове — дальше всё пойдёт легко.
Чтобы данные дошли до нужного устройства, у каждого узла должен быть уникальный адрес. Иначе сеть не знает, кому отдать пакет.
Оба адреса нужны одновременно: IP говорит «в какую сеть и какому узлу», MAC — «какой конкретной сетевой карте передать кадр на этом участке пути».
Читать 32 нуля и единицы человеку неудобно, поэтому адрес делят на четыре группы по 8 бит — октеты — и каждую переводят в десятичное число. Разделяют точками. Такая запись называется точечно-десятичной.
Восемь бит физически не могут выразить число больше 255. Поэтому 300.1.1.1 — не адрес, а опечатка, и любое устройство откажется его принять.
В номере +7 383 2XX-XX-XX начало — это страна и город, конец — конкретный абонент.
IP-адрес устроен так же: начало говорит, в какую сеть везти, конец — какому узлу отдать. Разница только в том, что границу между «городом» и «абонентом» нам показывает маска.
Если префикс кратен восьми — /8, /16, /24 — граница проходит ровно по точке, и считать вообще нечего. Все «страшные» вычисления начинаются только там, где префикс не кратен восьми: /25, /26, /27…
Любой IP-адрес делится на две части: адрес сети — куда доставить, и адрес узла — кому именно внутри этой сети.
Правило жёсткое: сначала все единицы, потом все нули. Единица означает «этот бит относится к адресу сети», ноль — «этот бит относится к узлу». Смешивать нельзя: 11010000 маской быть не может.
где N — количество нулей в маске, то есть число бит, отданных под узлы.
| Префикс | Маска | Двоичный вид | Всего адресов | Узлов (−2) |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 | 16 777 216 | 16 777 214 |
| /16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 | 65 536 | 65 534 |
| /24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | 256 | 254 |
| /25 | 255.255.255.128 | …11111111.10000000 | 128 | 126 |
| /26 | 255.255.255.192 | …11111111.11000000 | 64 | 62 |
| /27 | 255.255.255.224 | …11111111.11100000 | 32 | 30 |
| /28 | 255.255.255.240 | …11111111.11110000 | 16 | 14 |
| /29 | 255.255.255.248 | …11111111.11111000 | 8 | 6 |
| /30 | 255.255.255.252 | …11111111.11111100 | 4 | 2 |
/30 — рабочая лошадка для линков между маршрутизаторами: два адреса, ровно два интерфейса, ничего не тратится зря.
Тяни ползунок: чем больше единиц в маске, тем меньше узлов в сети — но тем больше самих сетей.
Чтобы узнать адрес сети, устройство накладывает маску на адрес поразрядной операцией AND.
Единица получается только там, где обе единицы. Значит, там, где в маске нули, результат гарантированно ноль — биты узла обнуляются.
| A | B | A и B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Первые три октета переписались без изменений (там маска — единицы), а последний обнулился (там нули). Отсюда и правило быстрого счёта: где маска 255 — октет переписываем, где 0 — ставим 0.
Узлы 54 и 250 получили один и тот же адрес сети — значит, они в одной сети и общаются напрямую, без маршрутизатора.
Сети 192.168.10.0 и 192.168.20.0 — разные. Напрямую такие узлы не поговорят: нужен маршрутизатор, который перекинет пакет из одной сети в другую.
Два адреса из каждого диапазона нельзя отдать компьютеру: они служебные.
Все биты узловой части — нули. Это «имя» самой сети: так её записывают в таблицах маршрутизации и так о ней говорят. Ни одному компьютеру этот адрес не назначают.
Все биты узловой части — единицы. Пакет на такой адрес получают все узлы сети сразу. Так работают, например, запросы ARP и поиск DHCP-сервера, когда адрес ещё неизвестен.
Из всех адресов вычитаем два служебных: адрес сети и широковещательный. Остальное можно раздавать устройствам.
Пример на этом рецепте: 192.168.15.100/26. Шаг 64, границы 0 · 64 · 128 · 192. Сотня лежит между 64 и 128 → сеть 192.168.15.64, broadcast .127, узлы .65–.126. Всё, задача закрыта в четыре движения.
«Почему нельзя назначить .63, если это обычное число?»
Потому что при маске /26 узловая часть — шесть последних бит. У числа 63 это 111111 — все единицы. А все единицы означают «всем сразу», то есть broadcast. Такой адрес занят службой, а не устройством.
«Чей телефон на подоконнике?» — слышит весь этаж, отвечает один.
Так узел ищет чужой MAC-адрес или DHCP-сервер: адресата он ещё не знает, поэтому спрашивает у всех. Пока узлов немного — нормально. Когда их пятьсот, коридор превращается в базар: все слушают, все отвлекаются.
Исторически границу «сеть / узел» не выбирали свободно. Её задавал класс адреса, а класс читался по старшим битам первого октета.
| Класс | Старшие биты | Первый октет | Маска по умолчанию | Префикс |
|---|---|---|---|---|
| A | 0… | 0 – 127 | 255.0.0.0 | /8 |
| B | 10… | 128 – 191 | 255.255.0.0 | /16 |
| C | 110… | 192 – 223 | 255.255.255.0 | /24 |
| D | 1110… | 224 – 239 | — | многоадресный |
| E | 1111… | 240 – 255 | — | экспериментальный |
Границы легко проверить на битах: 01111111 = 127 — конец класса A, 10111111 = 191 — конец B, 11011111 = 223 — конец C. Ничего заучивать не нужно, если умеешь считать веса.
| Класс | Бит на сеть | Бит на узлы | Сетей | Узлов в сети |
|---|---|---|---|---|
| A | 8 | 24 | 128 | 16 777 214 |
| B | 16 | 16 | 16 384 | 65 534 |
| C | 24 | 8 | 2 097 152 | 254 |
Один класс A — это 16 миллионов адресов на одну организацию.
65 тысяч адресов: много, но уже реалистично.
254 адреса — типовая локальная сеть.
| Адрес | Первый октет в битах | Класс | Маска | Адрес сети | Broadcast |
|---|---|---|---|---|---|
| 10.0.5.9 | 00001010 | A | 255.0.0.0 | 10.0.0.0 | 10.255.255.255 |
| 172.16.45.200 | 10101100 | B | 255.255.0.0 | 172.16.0.0 | 172.16.255.255 |
| 192.168.15.1 | 11000000 | C | 255.255.255.0 | 192.168.15.0 | 192.168.15.255 |
Алгоритм всегда один: первый октет → биты → класс → маска → обнулить узловую часть. Broadcast — та же сеть, но узловая часть из единиц.
Эти адреса узлам не назначают: у них другая работа.
Unicast. Пакет идёт одному конкретному узлу — обычный случай.
Broadcast. Получают все узлы сети: в узловой части адреса все единицы.
Multicast. Получают только подписчики группы, адрес из класса D (224–239).
Пример из жизни: видеотрансляция на 500 человек. Unicast — 500 копий потока, multicast — один поток, который сеть размножает сама.
Между классами B и C — пропасть: 65 534 и 254. А если нужно 400 узлов?
Публичный адрес уникален во всём Интернете и выдаётся провайдером. Частный используется только внутри локальной сети.
| Диапазон | Адреса | Назначение |
|---|---|---|
| 127.0.0.0/8 | 127.0.0.1 – 127.255.255.254 | Loopback: проверка собственного стека TCP/IP. Пакет не выходит из устройства. |
| 169.254.0.0/16 | 169.254.0.1 – 169.254.255.254 | APIPA: адрес, который узел назначает себе сам, когда DHCP-сервер не ответил. |
| 192.0.2.0/24 | 192.0.2.0 – 192.0.2.255 | TEST-NET: адреса для документации, примеров и обучения. |
Практический вывод: увидели у себя адрес 169.254.х.х — это не «интернет сломался», а DHCP не ответил. Проверять надо кабель и сервер, а не браузер.
Посмотреть выданный адрес: ipconfig в Windows, ifconfig или ip a в Linux.
Границу «сеть / узел» ставим где хотим, а маску передаём вместе с адресом. Класс адреса больше ничего не решает.
Broadcast не выходит за границу подсети. Меньше домен — меньше лишнего трафика у каждого узла.
Между подсетями трафик идёт через маршрутизатор, где его можно фильтровать списками доступа.
Отдел, этаж, филиал — своя подсеть. Легче искать неисправность и планировать рост.
Каждой группе — ровно столько адресов, сколько нужно, а не «класс целиком».
Шторм или сбой в одной подсети не топит всю сеть организации.
Правила, приоритеты и политики удобно вешать на подсеть целиком.
Широковещательные запросы получают все узлы сегмента. Чем больше узлов — тем больше служебного шума.
Чтобы получить подсети, мы удлиняем маску: несколько старших бит узловой части переходят к сети. Эти биты и нумеруют подсети. Всё, что осталось справа, — по-прежнему узлы.
Было одно большое здание на 254 койки и один общий коридор. Стало четыре этажа по 62 койки, у каждого свой коридор.
Вот и весь секрет «разбиения на подсети»: мы не добываем новые адреса, а переобозначаем часть старых. Сколько лампочек забрали — столько раз удвоилось число этажей: 1 бит → 2, 2 бита → 4, 3 бита → 8.
Обратите внимание: адресов было 256 и осталось 256, но полезных узлов стало меньше — 126 + 126 = 252 вместо 254. Каждая новая подсеть съедает свои два служебных адреса. Это цена порядка.
| № | Биты подсети | Адрес подсети | Диапазон узлов | Broadcast |
|---|---|---|---|---|
| 1 | 00000000 | 192.168.15.0/26 | 192.168.15.1 – 192.168.15.62 | 192.168.15.63 |
| 2 | 01000000 | 192.168.15.64/26 | 192.168.15.65 – 192.168.15.126 | 192.168.15.127 |
| 3 | 10000000 | 192.168.15.128/26 | 192.168.15.129 – 192.168.15.190 | 192.168.15.191 |
| 4 | 11000000 | 192.168.15.192/26 | 192.168.15.193 – 192.168.15.254 | 192.168.15.255 |
Шаг между подсетями — 64: 0, 64, 128, 192. Это и есть размер подсети в адресах.
| № | Биты подсети | Адрес подсети | Диапазон узлов | Broadcast |
|---|---|---|---|---|
| 1 | 00000000 | 192.168.15.0/27 | .1 – .30 | .31 |
| 2 | 00100000 | 192.168.15.32/27 | .33 – .62 | .63 |
| 3 | 01000000 | 192.168.15.64/27 | .65 – .94 | .95 |
| 4 | 01100000 | 192.168.15.96/27 | .97 – .126 | .127 |
| 5 | 10000000 | 192.168.15.128/27 | .129 – .158 | .159 |
| 6 | 10100000 | 192.168.15.160/27 | .161 – .190 | .191 |
| 7 | 11000000 | 192.168.15.192/27 | .193 – .222 | .223 |
| 8 | 11100000 | 192.168.15.224/27 | .225 – .254 | .255 |
Биты подсети просто считают в двоичной системе: 000, 001, 010, 011… Шаг между подсетями — 32.
Берём «интересный» октет маски — тот, где она не 255 и не 0, — и вычитаем его из 256. Получаем размер подсети, он же шаг между их адресами.
| Вариант | Префикс | Подсетей | Узлов в каждой |
|---|---|---|---|
| 1 бит | /17 | 2 | 32 766 |
| 2 бита | /18 | 4 | 16 382 |
| 3 бита | /19 | 8 | 8 190 |
| 4 бита | /20 | 16 | 4 094 |
| 5 бит | /21 | 32 | 2 046 |
| 6 бит | /22 | 64 | 1 022 |
| № подсети | Адрес | Диапазон узлов | Broadcast |
|---|---|---|---|
| 1 | 192.168.0.0/22 | 192.168.0.1 – 192.168.3.254 | 192.168.3.255 |
| 2 | 192.168.4.0/22 | 192.168.4.1 – 192.168.7.254 | 192.168.7.255 |
| 3 | 192.168.8.0/22 | 192.168.8.1 – 192.168.11.254 | 192.168.11.255 |
| 50 | 192.168.196.0/22 | 192.168.196.1 – 192.168.199.254 | 192.168.199.255 |
| 64 | 192.168.252.0/22 | 192.168.252.1 – 192.168.255.254 | 192.168.255.255 |
64 подсети создали, 50 задействовали — 14 в запасе на рост. Шаг здесь считается в третьем октете: 256 − 252 = 4.
Второй тип задач: известно, сколько устройств в подсети. Найти маску.
Запас всего два адреса — впритык. Если отдел точно будет расти, честнее взять /25 (126 узлов) и не переделывать схему через полгода.
Здесь узловая часть перешагнула через октет: узлы занимают весь четвёртый октет и один бит третьего. Broadcast — 172.16.1.255.
VLSM — Variable Length Subnet Mask. Подсети получают разные маски: каждой ровно столько адресов, сколько ей нужно.
Выдан блок 172.16.0.0/16. Нужно распределить адреса так, чтобы хватило всем и осталось на рост.
Не забываем про каналы между маршрутизаторами: это отдельные сети, по два адреса в каждой.
| Сеть | Нужно узлов | Расчёт | Адресов | Префикс |
|---|---|---|---|---|
| HQ | 300 | 2⁹ − 2 = 510 ≥ 300 | 512 | /23 |
| Филиал 2 | 70 | 2⁷ − 2 = 126 ≥ 70 | 128 | /25 |
| Филиал 1 | 20 | 2⁵ − 2 = 30 ≥ 20 | 32 | /27 |
| Линк Ф1–HQ | 2 | 2² − 2 = 2 | 4 | /30 |
| Линк Ф2–HQ | 2 | 2² − 2 = 2 | 4 | /30 |
Порядок выделения — от самой большой сети к самой маленькой. Иначе крупный блок не встанет на ровную границу и придётся всё переделывать.
| № | Сеть | Адрес/маска | Диапазон узлов | Broadcast |
|---|---|---|---|---|
| 1 | HQ, 300 узлов | 172.16.0.0/23 | 172.16.0.1 – 172.16.1.254 | 172.16.1.255 |
| 2 | Филиал 2, 70 узлов | 172.16.2.0/25 | 172.16.2.1 – 172.16.2.126 | 172.16.2.127 |
| 3 | Филиал 1, 20 узлов | 172.16.2.128/27 | 172.16.2.129 – 172.16.2.158 | 172.16.2.159 |
| 4 | Линк Ф1 – HQ | 172.16.2.160/30 | 172.16.2.161 – 172.16.2.162 | 172.16.2.163 |
| 5 | Линк Ф2 – HQ | 172.16.2.164/30 | 172.16.2.165 – 172.16.2.166 | 172.16.2.167 |
Одна и та же задача: 2560 адресов против 680. Именно поэтому VLSM — стандарт для реального проектирования, а «одна маска на всех» осталась в учебных примерах.
Слева — базовый блок с префиксом, справа — потребности в узлах через запятую. Порядок значения не имеет: планировщик сам отсортирует по убыванию, как это делается на бумаге.
Одна маска на всех — это выдать всей группе 45-й размер. Кому-то подойдёт, остальные будут шлёпать.
VLSM: большому отделу — большой блок, маленькому — маленький, каналу между двумя маршрутизаторами — крошечный /30 на два адреса. Ничего не болтается, ничего не жмёт.
Дано: адрес узла 192.168.20.137, маска 255.255.255.192. Найти: префикс, адрес сети, broadcast, диапазон узлов, сколько узлов всего и в какой по счёту подсети мы находимся.
Проверка на битах: 137 = 10001001. Первые два бита (10) — номер подсети «два» в двоичном счёте, то есть третья по порядку: 00, 01, 10, 11. Остальные шесть бит 001001 = 9 — это девятый узел внутри подсети. Сходится.
Дано: блок 192.168.30.0/24. Отделы: бухгалтерия 50 машин, склад 25, охрана 10, канал до второго офиса 2 адреса. Найти: адресацию без перекрытий.
Почему именно так: каждый блок начинается на адресе, кратном своему размеру (0 кратно 64, 64 кратно 32, 96 кратно 16, 112 кратно 4). Если начать не с той границы, маска «разрежет» блок пополам и адресация сломается.
Дано: два компьютера — 10.20.35.40/21 и 10.20.40.5/21. Вопрос: смогут ли они обменяться данными напрямую, без маршрутизатора?
Коварство задачи: адреса выглядят похоже, первые два октета совпадают, и кажется, что сеть одна. Но /21 нарезает третий октет кусками по 8, и 35 с 40 попадают в разные куски. Broadcast первой сети — 10.20.39.255, а второй узел начинается уже за ним.
Сеть и broadcast? Число узлов? Число подсетей? От этого зависит, какую формулу брать.
Переводим маску в /N или наоборот. Считаем единицы, остальное — нули.
256 − интересный октет. Выписываем границы через шаг — это скелет ответа.
Сеть, broadcast, узлы. Проверяем: узлов 2ʰ−2, и наш адрес попал внутрь диапазона.
Если застряли — переведите «интересный» октет в лампочки. Восемь цен 128 64 32 16 8 4 2 1 отвечают на любой вопрос этой темы, потому что вся тема состоит только из них.
Адресов IPv4 всего 2³² — около 4,3 млрд, и они закончились. IPv6 даёт 2¹²⁸ адресов и делает адресацию проще для маршрутизаторов.
Двойное двоеточие можно использовать только один раз: иначе непонятно, сколько нулевых групп восстанавливать в каждом месте.
Обычно организация получает блок /48. Под номер подсети отводят 16 бит — это 2¹⁶ = 65 536 подсетей, и в каждой 2⁶⁴ адресов. Для сравнения: весь IPv4 — это 2³² адресов.
Технически да: удлиняем префикс, как в IPv4. Практически — редко: /64 считается стандартным размером сегмента.
В IPv6 не экономят адреса — экономят усилия администратора. Поэтому подсети берут заведомо большими.
| Термин | Что это |
|---|---|
| MAC-адрес | Физический адрес, 48 бит, присваивается производителем, работает внутри сегмента. |
| IPv4-адрес | Логический адрес, 32 бита, четыре октета через точку, работает между сетями. |
| Октет | Группа из 8 бит, значения 0…255. |
| Маска подсети | 32-битное число: единицы — часть сети, нули — часть узла. |
| Префикс /N | Короткая запись маски: сколько бит слева отдано сети. |
| Адрес сети | Все биты узловой части — нули. Узлу не назначается. |
| Broadcast | Все биты узловой части — единицы. Пакет получают все узлы сети. |
| Q = 2ᴺ | Всего адресов в сети, N — число нулей маски. |
| Q = 2ᴺ − 2 | Число адресов, которые можно отдать узлам. |
| Частный адрес | 10/8, 172.16/12, 192.168/16 — только внутри организации, наружу через NAT. |
| Публичный адрес | Уникален в Интернете, выдаётся провайдером. |
| Loopback | 127.0.0.0/8 — проверка собственного стека TCP/IP. |
| APIPA | 169.254.0.0/16 — адрес, назначенный узлом самому себе, когда DHCP молчит. |
| DHCP | Служба автоматической выдачи адресов в аренду. |
| CIDR | Бесклассовая адресация: маска задаётся вручную и передаётся с адресом. |
| VLSM | Маски переменной длины: каждой подсети своя маска по потребности. |
| Шаг подсети | 256 минус «интересный» октет маски. Он же размер подсети в адресах. |
AND адреса с маской. Где 255 — октет переписываем, где 0 — ставим 0, где «интересный» — считаем по шагу.
h = 32 − префикс, узлов 2ʰ − 2.
Заняли n бит у узловой части — получили 2ⁿ подсетей, шаг = 256 − октет маски.
Сортируй по убыванию, подбирай 2ʰ − 2 ≥ N, выделяй подряд, линкам — /30.
Всё остальное в этих главах — следствие этих четырёх действий и умения складывать веса 128 64 32 16 8 4 2 1.
Дальше — практика: берём любой адрес и раскладываем его до последнего бита.