№13
Примеры решений прототипа №1
IP-адресация
ПРИМЕРЫ РЕШЕНИЙ
№ 10150 (Уровень: Базовый)
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32. 240.0.
Для узла с IP-адресом 145.192.94.230 адрес сети равен 145.192.80.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
from ipaddress import *
for mask in range(32):
net = ip_network(f'145.192.94.230/{mask}', 0)
if net.network_address == ip_address('145.192.80.0'):
print(net.netmask.packed[2])
break
№ 18955 (Уровень: Средний)
(Д. Бахтиев) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Два узла, находящиеся в одной сети, имеют IP-адреса 200.154.190.12 и 200.154.184.0. Укажите наибольшее возможное количество единиц в маске этой сети. Учтите, что два адреса в любой подсети зарезервированы: адрес всей подсети и широковещательный адрес.
from ipaddress import *
ip1 = ip_address('200.154.190.12')
ip2 = ip_address('200.154.184.0')
for mask in range(32, 0, - 1):
net1 = ip_network(f'200.154.190.12/{mask}', 0)
net2 = ip_network(f'200.154.184.0/{mask}', 0)
if net1 == net2 and ip1 in net1.hosts() and ip2 in net1.hosts():
print(mask)
break
№ 29345 Открытый вариант 2026 (Уровень: Базовый)
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 68.203.243.87 и сетевой маской 255.255.224.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите сумму числовых значений октетов найденного IP-адреса.
Например, если бы найденный адрес был равен 100.20.3.4, то в ответе следовало бы записать: 127
from ipaddress import *
net = ip_network('68.203.243.87/255.255.224.0', strict=0)
ip = net[-2]
# print(sum([int(x) for x in str(ip).split('.')])) # Вариант 1
# print(ip.packed[0] + ip.packed[1] + ip.packed[2] + ip.packed[3]) # Вариант 2
print(sum(ip.packed))
№ 27625 Апробация 04.03.26 (Уровень: Базовый)
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла маске сети.
Сеть задана IP-адресом 172.16.96.0 и маской сети 255.255.224.0.
Сколько в этой сети IP-адресов, для которых количество единиц в их двоичной записи кратно 2?
В ответе укажите только число.
from ipaddress import *
net = ip_network(f'172.16.96.0/255.255.224.0', 0)
k = 0
for ip in net:
# if f'{ip:b}'.count('1') % 2 == 0: k += 1 # вариант 1
if bin(int(ip))[2:].count('1') % 2 == 0: k += 1 # вариант 2
print(k)
№ 20807 Апробация 05.03.25 (Уровень: Базовый)
В терминологии сетей ТСР/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом 172.16.192.0 и маской сети 255.255.192.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?
В ответе укажите только число.
from ipaddress import *
net = ip_network(f'172.16.192.0/255.255.192.0', 0)
k = 0
for ip in net:
if f'{ip:b}'.count('1') % 5 != 0: k += 1
print(k)