Найти в Дзене
ИНФА СОТКА

Методы решения задания №13 ЕГЭ по информатике

Рассмотрим методику решение нового задания № 13. Данное задание некоторым школьникам кажется достаточно сложным из-за слабых знаний основ построения компьютерных сетей. Данный тип заданий возможно также рашать «ручным» решением. Пример 1. В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0. Для узла с IP-адресом 117.191.176.37 адрес сети равен 117.191.160.0. Чему равен третий слева байт маски? Ответ запи

Рассмотрим методику решение нового задания № 13. Данное задание некоторым школьникам кажется достаточно сложным из-за слабых знаний основ построения компьютерных сетей. Данный тип заданий возможно также рашать «ручным» решением.

Пример 1. В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Для узла с IP-адресом 117.191.176.37 адрес сети равен 117.191.160.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.

Рассмотрим пример теоретического решения

Для узла с IP-адресом 117.191.176.37 адрес сети равен 117.191.160.0. Какой в этом случае может быть маска?

Так как адрес сети получается в результате применения поразрядной конъюнкции к IP-адресу узла и маске, то мы можем записать:

Мы видим, что 1-й и 2-й байты маски – единичные, а 4-й байт – нулевой. Будем «реконструировать» 3-й байт маски.

176_10 = 10110000_2,

192_10 = 10100000_2.

Если 3-й байт маски представить в виде хххххххх_2, то можно записать:

-2

Первая, третья и четвертая слева цифры, принадлежащие рассматриваемому байту маски, определяются однозначно и равны соответственно 1, 1 и 0:

-3

Из того, что маска – 32-битное число, в двоичной записи которого сначала стоят единицы, а потом – нули, следует, что после нуля, стоящего на четвёртом месте, могут следовать только нули:

-4

Тогда для третьего байта маски возможно следующее значение:

11100000_2 = 224_10

Рассмотрим решение с помощью программирования:

-5

Данный код на Python использует библиотеку ipaddress для работы с IP-адресами и сетями. Давайте разберем его по частям:

1. Импорт библиотеки:

from ipaddress import* – импортирует все классы и функции из модуля ipaddress, который предоставляет инструменты для создания, манипуляции и анализа IP-адресов и сетей.

2. Создание IP-адреса:

ip_add = ip_address("117.191.176.37") – создает объект IP-адреса с адресом 117.191.176.37.

3. Цикл по маскам:

for mask in range(33): – создает цикл, который перебирает значения от 0 до 32 (включительно). Эти значения представляют собой возможные длины маски подсети в битах (например, 0 – это маска 0.0.0.0, а 32 – это маска 255.255.255.255).

4. Создание сети:

ip_net = ip_network(f"117.191.160.0/{mask}") – для каждой итерации цикла создается объект сети с базовым адресом 117.191.160.0 и текущей длиной маски.

5. Проверка принадлежности IP-адреса к сети:

if ip_add in ip_net: – проверяет, принадлежит ли IP-адрес 117.191.176.37 к текущей сети ip_net.

6. Вывод маски сети:

print(ip_net.netmask) – если IP-адрес принадлежит сети, выводится маска подсети для этой сети.

7. Обработка исключений:

except:

continue – если возникает ошибка при создании сети (например, если маска недопустима), программа просто продолжает выполнение следующей итерации цикла.

В результате работы программы мы получим саму маску, и увидим, что третий байт маски равен 224.

-6

Пример 2. (Демонстрационный вариант ЕГЭ 2025) В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске сети.

Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0.

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?

Ответ запишите в виде десятичного числа.

-7

Рассмотрим условие для подсчета:

if bin(int(ip_add)).count('1') % 5 != 0:

cnt += 1

- int(ip_add) – преобразует текущий IP-адрес в целое число.

- bin(...) – преобразует это целое число в двоичную строку.

- count('1') – подсчитывает количество единиц в двоичной строке.

- if ... % 5 != 0 – проверяет, делится ли количество единиц на 5 без остатка. Если не делится, счетчик cnt увеличивается на 1.

После завершения цикла программа выводит значение счетчика cnt, которое представляет собой количество IP-адресов в сети, у которых количество единиц в двоичном представлении не делится на 5.

Сеть 172.16.168.0/255.255.248.0 имеет 2048 адресов (от 172.16.168.0 до 172.16.175.255), и в результате выполнения кода будет подсчитано, сколько из этих адресов соответствуют заданному условию.

Ответ: 1663

#информатика #информатикаЕГЭ