ЕГЭ · Информатика · Сети и адресация
Маска подсети и адрес сети
Считать адрес сети, число узлов и решать задание 10.
🎯 ЕГЭ информатика: этот урок закрывает задание(я) 10.
- ⚠Путают адрес сети (биты узла = 0) и адрес конкретного узла
- ⚠Ошибаются в числе адресов: маска /n даёт 232−n адресов
Определение
Адрес сети — поразрядное И IP-адреса и маски: где в маске 1 — бит сохраняется, где 0 — обнуляется. Широковещательный адрес — наоборот: на месте нулей маски ставим единицы.
Алгоритм задания 10: четыре шага и один двоичный перевод
Почти все формулировки задания 10 сводятся к одному и тому же вычислению, и делается оно по одной схеме. Шаг 1. Сопоставьте байты попарно. Выпишите IP и маску столбиком: 192/255, 168/255, 14/255, 181/192. Шаг 2. Байты с маской 255 переписываются как есть. Это часть сети, и в адресе сети они не меняются. Шаг 3. Байты с маской 0 дают ноль. Это часть узла, и в адресе сети она обнуляется. Шаг 4. Только для граничного байта — того, где маска не 0 и не 255, — делается двоичный перевод и поразрядное И. Таким образом, двоичная арифметика нужна ровно для одного байта из четырёх. Это сокращает работу вчетверо и почти исключает арифметическую ошибку. Четыре типовых вопроса и что в них меняется. «Чему равен адрес сети» (или один его байт): IP И маска. «Чему равен номер узла»: IP И инверсия маски, то есть обнуляются те байты, где маска 255. «Сколько адресов в сети»: 2k, где k — число нулей в маске. «Сколько компьютеров можно адресовать»: 2k − 2. И обратная задача: «нужно разместить N компьютеров, какую маску взять». Решают так: берут ближайшую степень двойки, не меньшую N + 2; её показатель даёт число нулей k; число единиц равно 32 − k; маска записывается как /(32 − k). Осторожно с формулировкой «наибольшее возможное количество нулей в маске». Здесь спрашивают не о конкретной маске, а о границе: чем больше нулей, тем меньше единиц и тем крупнее сеть. Ответ определяется тем, где в адресе кончается совпадающая часть.
| Битов под узлы | количество нулей в маске (k) |
|---|---|
| Всего адресов | 2k |
| Можно назначить ПК | 2k − 2 (сеть и широковещательный заняты) |
Маска всегда имеет вид: сначала все единицы, потом все нули (непрерывно). Поэтому её задают числом /n. Например /24 = 255.255.255.0, /26 = 255.255.255.192.
Где теряют балл в задании 10
Ошибка 1. Путают адрес сети и номер узла. Для адреса сети обнуляются байты, где маска 0; для номера узла — наоборот, те, где маска 255. Прочитайте формулировку до конца: «поразрядно умноженного на инверсию маски» означает именно номер узла. Ошибка 2. Забывают вычесть два служебных адреса. «Сколько адресов содержит сеть» и «сколько компьютеров можно адресовать» — разные вопросы, и ответы различаются на два. Ошибка 3. Переводят в двоичный вид все четыре байта. Это лишняя работа и четыре возможности ошибиться вместо одной. Переводят только граничный байт. Ошибка 4. Считают, что байт маски может быть любым. Значений всего девять, и если в условии встретилось другое число, вы неверно прочитали задание. Ошибка 5. В обратной задаче забывают про «+2». Для 30 компьютеров нужно 32 адреса, а не 30. Ошибка 6. Отвечают не тем байтом. «Третий слева байт адреса сети» — значит, именно третий, и его надо посчитать отдельно, а не выписать весь адрес. Ошибка 7. Ошибаются в переводе байта. Полезно помнить веса разрядов: 128, 64, 32, 16, 8, 4, 2, 1. Байт 181 = 128 + 32 + 16 + 4 + 1, то есть 10110101.
Разбор примера
Адрес сети и число узлов
IP 192.168.1.83, маска 255.255.255.0. Найти адрес сети и сколько адресов можно назначить узлам.
Показать решение по шагам
- 1. Маска 255.255.255.0: первые три байта — сеть, последний — узел (8 нулей).
- 2. Адрес сети: обнуляем узловую часть → 192.168.1.0.
- 3. Нулей в маске k=8, всего адресов 2⁸=256.
- 4. Для узлов: 256 − 2 = 254 (минус адрес сети и широковещательный 192.168.1.255).
Ответ: Сеть 192.168.1.0; узлам можно назначить 254 адреса
Разбор примера
Разбор: подбираем маску под нужное число компьютеров
В сети нужно разместить 30 компьютеров. Какую маску взять и сколько единиц будет в её двоичной записи?
Показать решение по шагам
- 1. Шаг 1. Учтём служебные адреса. Кроме тридцати компьютеров, в сети всегда заняты два адреса: сети и широковещательный. Значит, всего адресов нужно не меньше 32.
- 2. Шаг 2. Найдём подходящую степень двойки. Число адресов всегда равно 2k. Ближайшая степень, не меньшая 32, — это сама 32 = 2⁵. Значит, k = 5 нулей.
- 3. Шаг 3. Посчитаем единицы. Всего битов 32, нулей 5, значит, единиц 27. Маска записывается как /27.
- 4. Шаг 4. Переведём в привычную запись. 27 единиц — это три полных байта (24 единицы) и ещё три единицы в четвёртом: 11100000 = 224. Маска — 255.255.255.224.
- 5. Проверка: 2⁵ = 32 адреса, минус два служебных — остаётся 30. Ровно столько, сколько нужно.
- 6. Ловушка: если бы компьютеров было 31, тридцати двух адресов уже не хватило бы (31 + 2 = 33), и пришлось бы брать k = 6, то есть маску /26 и 64 адреса.
Ответ: Маска 255.255.255.224 (/27), единиц в записи — 27
Вопрос на проверку
Сколько адресов можно назначить компьютерам, если в маске 4 нулевых бита?
Ответить и проверить себя — после бесплатной регистрации.
Разбор примера
Маска с «неполным» байтом: адрес сети и число узлов
Узел имеет IP-адрес 192.168.148.37 и маску подсети 255.255.240.0. Определите: 1) адрес сети; 2) сколько битов отведено под номер узла; 3) сколько компьютеров можно адресовать в этой сети, если адрес сети и широковещательный адрес не используются.
Показать решение по шагам
- 1. Шаг 1. Записываем маску по байтам в двоичном виде. 255 = 11111111, 255 = 11111111, 240 = 11110000, 0 = 00000000.
- 2. Шаг 2. Считаем единицы: 8 + 8 + 4 + 0 = 20. Значит, под номер сети отведено 20 бит, а под номер узла — 32 − 20 = 12 бит. Это ответ на второй вопрос.
- 3. Шаг 3. Адрес сети — это поразрядное И адреса с маской. Первые два байта: 192 И 255 = 192, 168 И 255 = 168 — байты сохраняются целиком.
- 4. Шаг 4. Третий байт — самый интересный. 148 в двоичном виде это 10010100, маска 240 это 11110000. Поразрядное И: старшие четыре разряда сохраняются (1001), младшие четыре обнуляются. Получается 10010000, то есть 144.
- 5. Шаг 5. Четвёртый байт: 37 И 0 = 0.
- 6. Шаг 6. Адрес сети: 192.168.144.0. Это ответ на первый вопрос. Обратите внимание, что третий байт уменьшился со 148 до 144 — так и должно быть: И никогда не увеличивает число.
- 7. Шаг 7. Сколько адресов в сети. Двенадцать свободных бит дают 2¹² = 4096 различных номеров узла, то есть 4096 адресов вместе с адресом сети и широковещательным.
- 8. Шаг 8. Вопрос просит число компьютеров, а эти два адреса для них не используются: 4096 − 2 = 4094. Это ответ на третий вопрос.
- 9. Шаг 9. Читайте вопрос внимательно: «сколько всего адресов содержит сеть» — это 4096, а «сколько компьютеров можно адресовать» — 4094. Разница ровно в двойке, и она зависит от одной фразы условия.
- 10. Шаг 10. Полезная таблица «неполных» байтов маски: 128 = 10000000 (1 единица), 192 = 11000000 (2), 224 = 11100000 (3), 240 = 11110000 (4), 248 = 11111000 (5), 252 = 11111100 (6), 254 = 11111110 (7). Других байтов в маске быть не может: единицы в ней идут подряд слева, и дырок не бывает.
- 11. Шаг 11. Из этой таблицы сразу виден и обратный ход. Если сказано, что под узел отведено 12 бит, то под сеть — 20, то есть два полных байта и ещё четыре единицы: маска 255.255.240.0 ✔
Ответ: 192.168.144.0; 12 бит; 4094 компьютера
Разбор примера
Программа для линии 10 в восемь строк
Написать программу, которая по адресу и маске выдаёт адрес сети, номер узла, число бит на каждую часть и количество адресов.
Показать решение по шагам
- 1.
adres = [192, 168, 148, 37] maska = [255, 255, 240, 0]set_adres = [a & m for a, m in zip(adres, maska)] uzel = [a & (255 - m) for a, m in zip(adres, maska)] bit_seti = sum(bin(m).count('1') for m in maska) bit_uzla = 32 - bit_setiprint('адрес сети:', '.'.join(map(str, set_adres))) print('номер узла:', '.'.join(map(str, uzel))) print('бит под сеть:', bit_seti, 'под узел:', bit_uzla) print('всего адресов:', 2 ** bit_uzla, 'компьютеров:', 2 ** bit_uzla - 2) - 2. Шаг 1. Оператор
&в Python — это поразрядное И, ровно то, что требуется по определению адреса сети. Работает он с целыми числами и обрабатывает каждый байт независимо, потому что мы храним адрес списком из четырёх чисел. - 3. Шаг 2.
255 - m— это инверсия байта маски. Работает потому, что маска состоит из единиц слева и нулей справа: вычитание из 255 переворачивает каждый бит. Для произвольного байта то же самое даётm ^ 255, и такая запись надёжнее. - 4. Шаг 3.
bin(m).count('1')считает единицы в двоичной записи байта. Функцияbin(240)возвращает строку'0b11110000', и методcountнаходит в ней четыре единицы. Приставка0bсодержит только нули и результат не портит. - 5. Шаг 4. Что печатает программа для наших данных: адрес сети 192.168.144.0, номер узла 0.0.4.37, под сеть 20 бит, под узел 12, всего адресов 4096, компьютеров 4094.
- 6. Шаг 5. Проверим номер узла руками: 148 И 15 (инверсия 240) = 10010100 И 00001111 = 00000100 = 4; 37 И 255 = 37. Значит, 0.0.4.37 ✔ Как число это 4 · 256 + 37 = 1061.
- 7. Шаг 6. Под другой вопрос меняется только последняя строка. «Чему равен третий слева байт адреса сети» —
print(set_adres[2]). «Сколько единиц в маске» —print(bit_seti). «Чему равен номер узла как число» — собрать байты:uzel[0]*256**3 + uzel[1]*256**2 + uzel[2]*256 + uzel[3]. - 8. Шаг 7. И про запись маски через дробь. Обозначение 192.168.148.37/20 означает ту же маску с двадцатью единицами, то есть 255.255.240.0. Перевод в обе стороны делается по таблице неполных байтов: 20 = 8 + 8 + 4, значит третий байт содержит четыре единицы, то есть равен 240.
Ответ: 192.168.144.0; узел 0.0.4.37; 20 и 12 бит; 4096 и 4094
Все вопросы линии 10 и одна цепочка действий
Линия 10 в КИМ-2027 звучит как «умение использовать маску подсети», и в банке у неё десяток формулировок. Все они — точки на одной цепочке, и достаточно пройти её целиком, чтобы ответить на любую.
Цепочка. Маска → число единиц → число бит под сеть и под узел → число адресов = 2 в степени бит узла → число компьютеров = адресов минус два. Параллельно: адрес и маска → поразрядное И → адрес сети; адрес и инверсия маски → номер узла.
Теперь вопросы банка по этой цепочке.
«Сколько битов отведено под номер сети» — посчитать единицы в маске.
«Сколько битов под номер узла» — вычесть это число из 32.
«Сколько всего адресов содержит сеть» — два в степени числа бит узла, без вычитания: формулировка «включая адрес сети и широковещательный» говорит об этом прямо.
«Сколько компьютеров можно адресовать» — то же самое минус два.
«Чему равен третий слева байт адреса сети» — поразрядное И третьих байтов адреса и маски.
«Чему равен номер узла как число» — И адреса с инверсией маски, затем сборка четырёх байтов в одно число.
«Чему равен четвёртый байт маски» — если дано число бит или число узлов, восстановить маску по таблице неполных байтов.
«Сколько единиц в двоичной записи маски» — то же число бит сети.
Как видите, все восемь вопросов — это разные точки одной и той же цепочки. Пройдите её от начала до конца на черновике, выписав все промежуточные величины, и отвечайте на тот вопрос, который задан. Это занимает минуту и страхует от подстановки не той величины.
И главное, что стоит проверять: единицы в маске идут подряд слева и без дырок. Маска вида 255.0.255.0 некорректна, и если в задаче получилось что-то подобное, ошибка в расчёте.
Разбор примера
Обратная задача: восстановить маску по числу узлов
В сети 62 компьютера, адрес сети и широковещательный адрес для них не используются, лишних адресов нет. Определите маску подсети и сколько единиц в её двоичной записи.
Показать решение по шагам
- 1. Шаг 1. Считаем общее число адресов: 62 компьютера плюс два служебных = 64.
- 2. Шаг 2. Число адресов равно двум в степени числа бит узла: 2ᵏ = 64, откуда k = 6 бит под узел.
- 3. Шаг 3. Под сеть остаётся 32 − 6 = 26 бит, то есть в маске 26 единиц. Это ответ на второй вопрос.
- 4. Шаг 4. Собираем маску. Первые три байта — по восемь единиц: 255.255.255. Осталось 26 − 24 = 2 единицы в четвёртом байте: 11000000 = 192.
- 5. Шаг 5. Маска: 255.255.255.192, краткая запись /26.
- 6. Шаг 6. Проверка: единиц 8 + 8 + 8 + 2 = 26 ✔ Бит узла 6, адресов 2⁶ = 64, компьютеров 62 ✔ Совпало с условием.
- 7. Шаг 7. Про слова «лишних адресов нет». Они означают, что число адресов должно быть ровно 64, а не «не меньше». Если бы их не было, подошла бы и маска /25 (128 адресов, 126 компьютеров), но с запасом. Читайте эту оговорку: она отличает единственный ответ от множества подходящих.
- 8. Шаг 8. Быстрый способ проверить четвёртый байт: размер блока адресов равен 256 минус значение неполного байта. Здесь 256 − 192 = 64 — ровно столько адресов и должно быть в сети ✔ Приём работает всегда и заменяет перевод в двоичную систему.
Ответ: 255.255.255.192, то есть 26 единиц
Приём с размером блока: без двоичной записи
Переводить байты в двоичную систему на экзамене приходится часто, и это отнимает время. Для масок есть способ быстрее, и работает он всегда.
Размер блока. Если неполный байт маски равен m, то размер блока адресов равен 256 − m. Для маски 255.255.240.0 это 256 − 240 = 16; для 255.255.248.0 — 8; для 255.255.255.192 — 64.
Границы сетей. Сети идут блоками указанного размера, начиная с нуля. При размере блока 16 это 0, 16, 32, 48, 64, …, 240. Адрес сети — начало того блока, в который попадает соответствующий байт адреса.
Пример. Адрес 192.168.148.37, маска 255.255.240.0, блок 16. Число 148 лежит между 144 и 159, значит адрес сети — 192.168.144.0. Тот же ответ, что и через двоичную запись, но за пять секунд.
Число адресов. Размер блока по неполному байту умножается на 256 за каждый полностью нулевой байт правее. Для 255.255.240.0 это 16 · 256 = 4096; для 255.255.255.192 нулевых байтов нет, и адресов ровно 64.
Обратный ход. Если известно число адресов, размер блока получается делением на 256 за каждый нулевой байт, а неполный байт равен 256 минус блок. Для 512 адресов при одном нулевом байте блок равен 2, и неполный байт — 254, то есть маска 255.255.254.0.
Почему приём работает. Нули в конце маски отвечают за младшие разряды адреса, и число, которое они «отпускают», — это ровно степень двойки. Неполный байт маски задаёт, сколько младших разрядов свободно в нём самом, а 256 − m как раз и равно двум в степени числа этих разрядов.
Пользоваться приёмом стоит, но двоичную запись знать всё равно надо: вопросы вида «сколько единиц в маске» или «чему равен третий байт маски» решаются именно через неё. Приём с блоками ускоряет самые частые вопросы, но не заменяет понимания.
И маленькая проверка, которая ловит почти любую ошибку в этой теме: адрес сети всегда делится нацело на размер блока. Для маски 255.255.240.0 блок равен 16, и третий байт адреса сети обязан быть кратен шестнадцати: 0, 16, 32, …, 144, 160. Если у вас получилось, скажем, 148, значит поразрядное И выполнено неверно. Та же проверка работает и для четвёртого байта, когда неполным оказывается он.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №10 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Вопрос на проверку
Сколько единиц в двоичной записи маски 255.255.248.0?
Ответить и проверить себя — после бесплатной регистрации.