ЕГЭ · Информатика · Сети и адресация
IP-адреса и структура сети
Разобраться, из чего состоит IPv4-адрес и как читать его в двоичном виде.
🎯 ЕГЭ информатика: задание 10. №10 — компьютерные сети: маски подсети.
- ⚠Путают адрес сети (биты узла = 0) и адрес конкретного узла
- ⚠Ошибаются в числе адресов: маска /n даёт 232−n адресов
Определение
IPv4-адрес — 32 бита, записанные как четыре десятичных числа 0..255 через точки (192.168.1.83). Каждое число — один байт (8 бит); 255₂ = 11111111, 0₂ = 00000000.
Зачем адресу две части и откуда взялась маска
IP-адрес — это 32 бита, и записывают их четырьмя числами от 0 до 255 через точку только для удобства человека. Внутри это просто длинная двоичная строка. Почему адрес делят на две части. Представьте, что маршрутизатор хранил бы путь к каждому из четырёх миллиардов адресов по отдельности — такая таблица нереальна. Поэтому адреса группируют: старшие биты объявляют адресом сети, младшие — адресом узла внутри сети. Маршрутизатору достаточно знать дорогу до сети, а внутри неё разберутся сами. Где проходит граница между частями, адрес не знает. Её задаёт маска подсети — ещё одно 32-битное число, устроенное так: сначала идут только единицы, потом только нули. Единицы стоят там, где в адресе номер сети, нули — где номер узла. Отсюда и короткая запись /n: число n — это количество единиц. Маска /24 означает 24 единицы и 8 нулей, то есть 255.255.255.0. Что надо помнить о байтах маски. Байт маски не может быть произвольным: поскольку единицы идут подряд слева, возможных значений всего девять. 0 = 00000000 (ноль единиц), 128 = 10000000 (одна), 192 = 11000000 (две), 224 = 11100000 (три), 240 = 11110000 (четыре), 248 = 11111000 (пять), 252 = 11111100 (шесть), 254 = 11111110 (семь), 255 = 11111111 (восемь). Этот ряд стоит выучить наизусть: он превращает перевод маски в двоичный вид в простое припоминание, и почти все задания 10 решаются именно через него. Два адреса в каждой сети заняты. Адрес, где все биты узла нулевые, — это адрес самой сети; адрес, где все биты узла единичные, — широковещательный, по нему обращаются сразу ко всем узлам. Назначить их компьютеру нельзя, поэтому из общего числа адресов всегда вычитают два.
| 0 | 00000000 — ноль единиц, весь байт отдан узлу |
|---|---|
| 128 | 10000000 — одна единица |
| 192 | 11000000 — две единицы |
| 224 | 11100000 — три единицы |
| 240 | 11110000 — четыре единицы |
| 248 | 11111000 — пять единиц |
| 252 | 11111100 — шесть единиц |
| 254 | 11111110 — семь единиц |
| 255 | 11111111 — восемь единиц, весь байт отдан сети |
Адрес логически делится на адрес сети (старшие биты) и адрес узла (младшие биты). Где проходит граница — задаёт маска. 255 в маске = 8 единиц (весь байт — сеть), 0 = 8 нулей (весь байт — узел), 192 = 11000000 делит байт.
Разбор примера
Разбор: номер узла в сети
Сеть задана IP-адресом 192.168.14.181 и маской 255.255.255.192. Чему равен номер узла в этой сети?
Показать решение по шагам
- 1. Номер узла — это та часть адреса, которая приходится на нулевые биты маски. Формально: IP, поразрядно умноженный на инверсию маски.
- 2. Байты, где маска 255, целиком принадлежат сети, значит, в номере узла они дают ноль. Это первые три байта: 192, 168, 14 — все обнуляются.
- 3. Остаётся граничный байт: IP 181, маска 192. Переводим оба в двоичный вид: 181 = 10110101, 192 = 11000000.
- 4. Инверсия маски в этом байте: 00111111. Поразрядное умножение (логическое И) даёт 00110101.
- 5. Переводим обратно: 00110101 = 32 + 16 + 4 + 1 = 53.
- 6. Ответ: 53. Заметьте, что двоичный перевод понадобился ровно для одного байта — того, где маска не 0 и не 255. Это и есть главный приём экономии времени в задании 10.
- 7. Проверка смысла: маска /26 оставляет под узел 6 бит, то есть номера узлов идут от 0 до 63. Число 53 в этот диапазон укладывается — значит, ответ правдоподобен.
Ответ: 53
Вопрос на проверку
Сколько бит в IPv4-адресе?
Ответить и проверить себя — после бесплатной регистрации.
Вопрос на проверку
Какое число НЕ может быть байтом маски подсети?
Ответить и проверить себя — после бесплатной регистрации.
Вопрос на проверку
Почему из общего числа адресов сети вычитают два?
Ответить и проверить себя — после бесплатной регистрации.
Вопрос на проверку
Как в двоичном виде выглядит число 255?
Ответить и проверить себя — после бесплатной регистрации.
Что такое IP-адрес и почему он 32-битный
IP-адрес версии 4 — это 32 двоичных разряда, то есть четыре байта. Записывать тридцать два нуля и единицы неудобно, поэтому адрес пишут четырьмя десятичными числами через точку: каждое число — один байт, то есть значение от 0 до 255.
Адрес 192.168.148.37 в двоичном виде выглядит так: 11000000.10101000.10010100.00100101. Точки — это просто границы байтов, никакого смысла они не несут; для машины адрес — сплошная цепочка из тридцати двух бит.
Отсюда сразу два следствия, которые проверяют на экзамене.
Байт больше 255 невозможен. Адрес вида 192.300.1.1 некорректен: в восьми битах умещаются числа от 0 до 255, и трёхсот там нет. Это первое, что проверяют в заданиях на «выберите корректный адрес».
Всего адресов 2³² ≈ 4,3 миллиарда. Их не хватает на все устройства мира — отсюда и адреса версии 6 длиной 128 бит, и технологии, позволяющие нескольким устройствам делить один внешний адрес.
Адрес делится на две части: старшая — номер сети, младшая — номер узла внутри этой сети. Где проходит граница, сам адрес не говорит: её задаёт маска подсети. Поэтому адрес без маски неполон, и в заданиях линии 10 их всегда дают парой.
Логика деления простая: маршрутизатор смотрит только на номер сети и решает, куда отправить пакет; номером узла занимается уже сама сеть-получатель. Так же устроен почтовый адрес: город и улица определяют, в какое отделение везти письмо, а номер квартиры важен только почтальону на месте.
И ещё одно, что стоит помнить про перевод. Байты адреса переводят в двоичную запись по отдельности, дополняя каждый нулями слева до восьми разрядов. Число 6 — это 00000110, а не 110: без ведущих нулей границы байтов сдвинутся, и вся дальнейшая работа с маской пойдёт насмарку.
Разбор примера
Номер узла: поразрядное И с инверсией маски
Узел сети имеет IP-адрес 6.193.223.48 и маску подсети 255.255.0.0. Чему равен номер данного компьютера в сети, то есть значение IP-адреса, поразрядно умноженного на инверсию маски?
Показать решение по шагам
- 1. Шаг 1. Что такое инверсия маски. Маска 255.255.0.0 в двоичном виде — это шестнадцать единиц и шестнадцать нулей. Инверсия переворачивает каждый бит: единицы становятся нулями и наоборот. Побайтно: 255 → 0, 255 → 0, 0 → 255, 0 → 255. Получилась маска 0.0.255.255.
- 2. Шаг 2. Зачем она нужна. Единицы маски отмечают номер сети, нули — номер узла. Значит, инверсия отмечает единицами как раз узловую часть, и поразрядное И адреса с инверсией оставляет от адреса только её.
- 3. Шаг 3. Считаем по байтам. Первый байт: 6 И 0. Ноль обнуляет всё, что с ним умножается поразрядно, значит результат 0.
- 4. Шаг 4. Второй байт: 193 И 0 = 0.
- 5. Шаг 5. Третий байт: 223 И 255. Число 255 — это восемь единиц, и поразрядное И с ним оставляет байт без изменений: результат 223.
- 6. Шаг 6. Четвёртый байт: 48 И 255 = 48.
- 7. Шаг 7. Номер узла в виде адреса: 0.0.223.48. Но вопрос просит число, а не адрес, значит надо собрать эти четыре байта в одно 32-битное число.
- 8. Шаг 8. Собираем: значение = 0 · 256³ + 0 · 256² + 223 · 256 + 48 = 57 088 + 48 = 57 136.
- 9. Шаг 9. Ответ: 57 136. Проверка порядка: ненулевыми остались два младших байта, значит число должно быть меньше 2¹⁶ = 65 536 ✔ И оно действительно меньше.
- 10. Шаг 10. Приём, экономящий время: поразрядное И с числом 255 не меняет байт, а с нулём обнуляет его. Поэтому, пока маска состоит только из байтов 0 и 255, никакой двоичной записи не нужно вовсе — достаточно вычеркнуть байты. Двоичный вид понадобится, только если в маске есть байт вроде 240 или 192.
Ответ: 57136
Разбор примера
Собрать маску по числу узлов
В сети должно быть не менее 500 компьютеров (адрес сети и широковещательный адрес для них не используются). Какую маску подсети выбрать, чтобы адресов хватило, а лишних было как можно меньше?
Показать решение по шагам
- 1. Шаг 1. Переводим требование в число адресов. Компьютеров нужно 500, плюс два служебных адреса — значит, всего адресов должно быть не меньше 502.
- 2. Шаг 2. Число адресов — это 2 в степени числа бит, отведённых под узел. Ищем наименьшую подходящую степень: 2⁸ = 256 — мало, 2⁹ = 512 — хватает, и лишних всего десять адресов.
- 3. Шаг 3. Значит, под узел нужно 9 бит, а под сеть остаётся 32 − 9 = 23 бита.
- 4. Шаг 4. Собираем маску из 23 единиц. Первые два байта — по восемь единиц, то есть 255.255. Осталось 23 − 16 = 7 единиц в третьем байте: 11111110 = 254. Четвёртый байт нулевой.
- 5. Шаг 5. Маска: 255.255.254.0, в краткой записи /23.
- 6. Шаг 6. Проверка: единиц в маске 8 + 8 + 7 = 23 ✔ Бит под узел 9, адресов 2⁹ = 512, компьютеров 512 − 2 = 510 — не меньше пятисот ✔
- 7. Шаг 7. Проверим, что меньшую сеть взять нельзя. Маска /24 (255.255.255.0) оставляет под узел 8 бит, то есть 256 адресов и 254 компьютера — пятисот не хватает ✔ Значит, /23 действительно минимальная подходящая.
- 8. Шаг 8. Полезно помнить направление: чем больше единиц в маске, тем меньше сеть. Маска /30 оставляет под узел два бита, то есть четыре адреса и всего два компьютера — так адресуют канал между двумя маршрутизаторами. Маска /8 оставляет 24 бита, то есть больше шестнадцати миллионов адресов.
- 9. Шаг 9. И обратная задача того же типа: «маска /26 — сколько компьютеров?» Под узел 32 − 26 = 6 бит, адресов 2⁶ = 64, компьютеров 62. Все такие вопросы решаются одной цепочкой: число единиц → число бит узла → степень двойки → минус два, если спрашивают компьютеры.
Ответ: 255.255.254.0, то есть /23
Частные и публичные адреса, и зачем это знать
Не все IP-адреса равноправны, и деление между ними встречается в вопросах о структуре сети.
Публичные адреса уникальны во всём Интернете и выдаются провайдерами. По такому адресу до устройства можно достучаться откуда угодно.
Частные адреса используются только внутри локальных сетей и в Интернете не маршрутизируются. Под них зарезервированы три диапазона: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Именно поэтому домашние маршрутизаторы почти всегда раздают адреса вида 192.168.x.y — этот диапазон отдан частным сетям намеренно, и одинаковые адреса в разных домах друг другу не мешают.
Особые адреса внутри сети. Адрес сети — тот, у которого все биты узла нулевые; он обозначает сеть целиком и компьютеру не назначается. Широковещательный адрес — тот, у которого все биты узла единичные; пакет на него получают все узлы сети. Оба исключаются, когда спрашивают «сколько компьютеров можно адресовать», — отсюда и знаменитое «минус два».
Адрес 127.0.0.1 («локальная петля») всегда означает сам компьютер: пакет на него не уходит в сеть вовсе.
Зачем это в задачах. Во-первых, вопрос «сколько компьютеров» почти всегда предполагает вычитание двух служебных адресов, и знать, каких именно, полезно для понимания. Во-вторых, встречаются задания на выбор корректного адреса или на определение, принадлежат ли два узла одной сети, — и там частные диапазоны фигурируют напрямую.
Проверка «в одной ли сети два узла» делается просто: вычислить адрес сети для каждого с общей маской и сравнить. Если совпали — узлы в одной сети и общаются напрямую; если нет — пакет пойдёт через маршрутизатор.
Разбор примера
В одной ли сети два узла
Два компьютера имеют адреса 192.168.150.10 и 192.168.145.200 при общей маске подсети 255.255.248.0. Находятся ли они в одной сети?
Показать решение по шагам
- 1. Шаг 1. Способ проверки один: вычислить адрес сети для каждого узла и сравнить. Если совпали — узлы в одной сети и обмениваются пакетами напрямую; если нет — только через маршрутизатор.
- 2. Шаг 2. Разбираем маску. 248 в двоичном виде — это 11111000, то есть пять единиц. Всего единиц 8 + 8 + 5 = 21, под узел остаётся 11 бит.
- 3. Шаг 3. Первые два байта у обоих адресов совпадают и маской не меняются: 192.168. Четвёртый байт обнуляется маской у обоих. Значит, всё решает третий байт.
- 4. Шаг 4. Первый узел, третий байт 150. В двоичном виде 150 = 10010110. Маска 248 = 11111000. Поразрядное И: старшие пять разрядов сохраняются (10010), младшие три обнуляются. Получается 10010000 = 144.
- 5. Шаг 5. Второй узел, третий байт 145. В двоичном виде 145 = 10010001. И с маской: старшие пять разрядов те же 10010, младшие обнуляются → 10010000 = 144.
- 6. Шаг 6. Адреса сетей совпали: оба 192.168.144.0. Значит, узлы находятся в одной сети ✔
- 7. Шаг 7. Почему так вышло. Пять старших бит третьего байта у обоих одинаковы, а различаются они только младшими тремя, которые маска отбрасывает. Проще говоря, при маске /21 в одну сеть попадают все адреса, у которых третий байт лежит в диапазоне от 144 до 151: и 145, и 150 в него входят.
- 8. Шаг 8. Проверим границу. Узел 192.168.152.5 дал бы третий байт 152 = 10011000, И с маской = 10011000 = 152 — это уже другая сеть 192.168.152.0. Значит, на числе 152 диапазон обрывается, и разница всего в один шаг третьего байта меняет ответ.
- 9. Шаг 9. Быстрый способ без двоичной записи: при маске с неполным байтом размер блока равен 256 минус значение этого байта. Здесь 256 − 248 = 8, значит сети идут блоками по восемь: 0–7, 8–15, …, 144–151, 152–159. Числа 145 и 150 лежат в одном блоке ✔ Этот приём быстрее и почти не даёт ошибок.
Ответ: Да, оба узла в сети 192.168.144.0
Проверочный список для линии 10
Задание 10 решается за пару минут, но ошибиться в нём легко: всё строится на двоичных записях, а они не прощают невнимательности.
Байты переводят по отдельности и дополняют до восьми разрядов. Число 6 — это 00000110, число 37 — 00100101. Без ведущих нулей границы байтов сдвинутся, и дальше всё пойдёт неверно.
И с числом 255 не меняет байт, И с нулём обнуляет. Пока в маске только байты 0 и 255, двоичная запись не нужна вовсе. Она понадобится только для «неполного» байта.
Единицы в маске идут подряд слева. Если в вашей маске получились дырки (вроде 255.0.255.0), где-то ошибка. Допустимых значений неполного байта всего семь: 128, 192, 224, 240, 248, 252, 254.
Адрес сети — И с маской, номер узла — И с инверсией маски. Перепутать эти два действия — самая частая ошибка линии, и результат выглядит правдоподобно в обоих случаях.
«Всего адресов» и «сколько компьютеров» различаются на два. Формулировка «включая адрес сети и широковещательный» означает, что вычитать не надо; «адрес сети и широковещательный адрес не используются» — что надо.
Ответ в виде числа или в виде адреса. Если просят «номер узла как число», четыре байта собирают в одно 32-битное значение: b₁ · 256³ + b₂ · 256² + b₃ · 256 + b₄. Если просят байт — печатают один байт.
Проверка порядка. Номер узла всегда меньше числа адресов в сети, адрес сети всегда не больше исходного адреса побайтно. Обе проверки занимают секунды и ловят перепутанные действия.
Зачем нужна маска и откуда взялась краткая запись
Маска подсети отвечает на единственный вопрос: где в тридцати двух битах адреса проходит граница между номером сети и номером узла.
Сам адрес об этом не говорит ничего. Адрес 192.168.148.37 может принадлежать огромной сети на миллионы узлов и крошечной сети на два узла — всё зависит от маски. Поэтому адрес и маска всегда идут парой.
Устройство маски. Это тоже 32 бита, но устроены они строго: сначала идут единицы, потом нули, и перемешивать их нельзя. Единицы отмечают разряды номера сети, нули — разряды номера узла. Отсюда и ограниченный набор допустимых значений байта: 0, 128, 192, 224, 240, 248, 252, 254, 255 — и никаких других.
Краткая запись. Поскольку маска задаётся только числом единиц, её пишут через косую черту после адреса: 192.168.148.37/20 означает двадцать единиц, то есть маску 255.255.240.0. Такая запись короче и однозначна, и в условиях заданий встречается наравне с обычной.
Перевод между формами. Из числа единиц в маску: разделить на восемь с остатком. Двадцать единиц — это два полных байта (255.255) и ещё четыре единицы в третьем (240), остальное нули. Из маски в число единиц: сложить количество единиц в каждом байте по таблице.
Зачем это нужно на практике. Маршрутизатор, получив пакет, накладывает маску на адрес получателя и сравнивает результат с адресами известных ему сетей. Совпало — пакет уходит в эту сеть; нет — отправляется дальше по умолчанию. Вся маршрутизация Интернета держится на этой одной операции поразрядного И, выполняемой миллиарды раз в секунду.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Частные адреса, IPv6 и зачем нужен NAT
Несколько фактов, которые объясняют, почему адресов «не хватает» и почему у домашнего компьютера адрес обычно начинается с 192.168. Сколько всего адресов. IPv4 даёт 2³² ≈ 4,3 миллиарда адресов. В 1980-е годы это казалось запасом на века; сегодня устройств больше, чем людей, и свободные адреса кончились. Частные диапазоны. Часть адресов зарезервирована для внутренних сетей и в Интернете не маршрутизируется: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Их можно использовать сколько угодно раз в разных домах и организациях — конфликта не будет, потому что наружу они не выходят. NAT (преобразование сетевых адресов). Домашний маршрутизатор имеет один внешний адрес и подменяет в исходящих пакетах внутренний адрес на него, запоминая, кому вернуть ответ. Поэтому вся квартира выходит в Интернет под одним адресом. Именно NAT и отсрочил исчерпание адресов IPv4. Особые адреса. 127.0.0.1 — локальная петля, обращение компьютера к самому себе (имя localhost). 0.0.0.0 означает «любой адрес», 255.255.255.255 — широковещательный для всей локальной сети. IPv6. Следующая версия протокола использует 128 бит вместо 32, то есть примерно 3,4 · 10³⁸ адресов. Записывают их шестнадцатеричными группами через двоеточие: 2001:0db8:85a3::8a2e:0370:7334. Двойное двоеточие заменяет цепочку нулевых групп. В заданиях ЕГЭ встречается только как факт: сколько бит и во сколько раз больше адресов.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.