Информатика: ОГЭ и ЕГЭ

Разборы · ЕГЭ, задание 10

Задание 10 ЕГЭ по информатике: IP-адрес и маска сети

Что проверяет задание

Задание 10 — про адресацию в сетях TCP/IP: по адресу узла и маске найти адрес сети, число адресов в сети, недостающий байт маски или посчитать адреса с заданным свойством. 1 балл.

Что нужно знать

Как решать

  1. Октеты, где маска равна 255, переписываются из адреса без изменений; где маска 0 — становятся нулями.
  2. Октет, где маска «промежуточная», переведите в двоичную систему и выполните поразрядное И.
  3. Для задач «сколько адресов в сети удовлетворяют условию» удобен модуль ipaddress: по объекту сети можно пройти циклом.

Пример из демоверсии 2027

Даны адрес узла 192.168.159.86 и маска 255.255.252.0. Найдите адрес сети и запишите сумму его октетов.

Решение. Первые два октета маски — 255, они переписываются: 192 и 168. Последний октет маски — 0, получаем 0. Третий: 159 = 10011111₂, 252 = 11111100₂, поразрядное И даёт 10011100₂ = 156. Адрес сети — 192.168.156.0, сумма октетов 192 + 168 + 156 + 0 = 516.

ip = [192, 168, 159, 86]
mask = [255, 255, 252, 0]
net = [a & m for a, m in zip(ip, mask)]
print(net, sum(net))                             # [192, 168, 156, 0] 516

То же через модуль ipaddress. Параметр strict=False нужен, потому что мы передаём адрес узла, а не адрес сети:

from ipaddress import ip_network

net = ip_network("192.168.159.86/255.255.252.0", strict=False)
addr = net.network_address                       # 192.168.156.0
print(addr, sum(int(x) for x in str(addr).split(".")))
print(net.num_addresses)                         # 1024 адреса в этой сети

Типичные ошибки

Потренироваться: задание 10 новые варианты с проверкой ответа

Подготовиться с репетитором

На занятиях разбираем каждое задание в формате экзамена и отрабатываем его на тренажёрах с проверкой по критериям.

Записаться на пробное занятие

Другие разборы