Работать удобно только с тем байтом, где маска «переламывается».
Python
ip_network('10.1.2.3/255.255.0.0', strict=False) — сеть по адресу узла.
.network_address, .broadcast_address, .netmask, перебор for a in net.
Разобранные варианты
Сначала реши сам, потом открой разбор. В разборах — двоичные записи и программы с модулем ipaddress.
Вариант 1
наибольший адрес компьютера
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 137.36.78.105 и сетевой маской 255.224.0.0. Найдите в данной сети наибольший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
Разбор
Шаг 1. Маска. 255.224.0.0 — это 11 единиц и 21 нулей. Узловая часть адреса — последние 21 бит.
1 байт
2 байт
3 байт
4 байт
Десятичная
Адрес узла
10001001
00100100
01001110
01101001
137.36.78.105
Маска
11111111
11100000
00000000
00000000
255.224.0.0
Адрес сети
10001001
00100000
00000000
00000000
137.32.0.0
Широковещательный
10001001
00111111
11111111
11111111
137.63.255.255
Шаг 2. Адрес сети — узловые биты равны 0: 137.32.0.0; широковещательный — узловые биты равны 1: 137.63.255.255. Оба нельзя назначить компьютеру.
Шаг 3. Наибольший адрес компьютера — на 1 меньше широковещательного: 137.63.255.254.
Ответ: 13763255254
Решение на Python.
from ipaddress import ip_network
net = ip_network('137.36.78.105/255.224.0.0', strict=False)
addr = net.broadcast_address - 1
print(str(addr).replace('.', ''))
Вариант 2
адреса с условием
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом 190.224.190.128 и маской сети 255.255.255.128. Сколько в этой сети IP-адресов, для которых в двоичной записи IP-адреса единиц больше, чем нулей? В ответе укажите только число.
Разбор
Шаг 1. Маска 255.255.255.128 — 25 единиц, в сети 27 = 128 адресов (адрес сети и широковещательный тоже считаются — вопрос про все IP-адреса сети).
Шаг 2. Первые 25 бит у всех адресов одинаковые, в них 16 единиц. Остальные 7 бит — любые. Нужно посчитать, сколько вариантов последних 7 бит дают нужное условие: удобно перебором программой или через число сочетаний C(n, k).
Ответ: 127
Решение на Python.
from ipaddress import ip_network
net = ip_network('190.224.190.128/255.255.255.128')
count = 0
for a in net: # все адреса сети, включая адрес сети и широковещательный
if bin(int(a)).count('1') > 16:
count += 1
print(count)
Вариант 3
число возможных масок
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Два узла, находящиеся в одной сети, имеют IP-адреса 24.111.200.223 и 24.111.200.220. Сколько существует различных возможных значений маски?
Шаг 2. Адреса совпадают в первых 30 битах, поэтому единиц в маске не больше 30: иначе адреса сети получатся разными.
Шаг 3. Кроме того, узловая часть каждого адреса не должна состоять только из нулей или только из единиц (это адрес сети и широковещательный). Проверяем каждое число единиц в маске: подходят 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26.
Ответ: 26
Решение на Python.
from ipaddress import ip_network, ip_address
a, b = ip_address('24.111.200.223'), ip_address('24.111.200.220')
good = []
for p in range(1, 31): # число единиц в маске
na = ip_network(f'{a}/{p}', strict=False)
nb = ip_network(f'{b}/{p}', strict=False)
if na == nb and a not in (na.network_address, na.broadcast_address) \
and b not in (na.network_address, na.broadcast_address):
good.append(p)
print(len(good))
Вариант 4
третьего байт маски
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Для узла с IP-адресом 130.225.154.221 адрес сети равен 130.225.128.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Разбор
Шаг 1. Сравниваем третьего байт адреса узла и адреса сети в двоичной записи: 10011010 и 10000000.
Шаг 2. Маска — сначала единицы, потом нули. Там, где в адресе узла 1, а в адресе сети 0, в маске обязательно 0. А до последней единицы адреса сети в маске должны стоять единицы — иначе эта единица обнулилась бы.
Шаг 3. Подходящие маски содержат 17, 18, 19 единиц; значения третьего байта: 128, 192, 224. Наибольшее — 224.
Ответ: 224
Решение на Python.
from ipaddress import ip_network
res = []
for p in range(0, 33):
net = ip_network('130.225.154.221/' + str(p), strict=False)
if str(net.network_address) == '130.225.128.0':
res.append(int(str(net.netmask).split('.')[2]))
print(max(res))
Вариант 5
наименьший адрес компьютера
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 211.93.83.102 и сетевой маской 255.255.252.0. Найдите в данной сети наименьший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
Разбор
Шаг 1. Маска. 255.255.252.0 — это 22 единиц и 10 нулей. Узловая часть адреса — последние 10 бит.
1 байт
2 байт
3 байт
4 байт
Десятичная
Адрес узла
11010011
01011101
01010011
01100110
211.93.83.102
Маска
11111111
11111111
11111100
00000000
255.255.252.0
Адрес сети
11010011
01011101
01010000
00000000
211.93.80.0
Широковещательный
11010011
01011101
01010011
11111111
211.93.83.255
Шаг 2. Адрес сети — узловые биты равны 0: 211.93.80.0; широковещательный — узловые биты равны 1: 211.93.83.255. Оба нельзя назначить компьютеру.
Шаг 3. Наименьший адрес компьютера — на 1 больше адреса сети: 211.93.80.1.
Ответ: 21193801
Решение на Python.
from ipaddress import ip_network
net = ip_network('211.93.83.102/255.255.252.0', strict=False)
addr = net.network_address + 1
print(str(addr).replace('.', ''))
Вариант 6
адрес сети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Узел с IP-адресом 190.53.229.29 находится в сети с маской 255.255.255.224. Найдите адрес сети и запишите его в ответе без разделителей. Например, если бы адрес сети был равен 111.22.3.0, в ответе следовало бы записать 1112230.
Разбор
Решение. Поразрядная конъюнкция адреса и маски: там, где в маске 1, бит адреса сохраняется, где 0 — становится 0. Байты маски 255 копируют байт адреса, 0 — дают 0; разбираться нужно только с байтом маски, отличным от 0 и 255.
1 байт
2 байт
3 байт
4 байт
Десятичная
Адрес узла
10111110
00110101
11100101
00011101
190.53.229.29
Маска
11111111
11111111
11111111
11100000
255.255.255.224
Адрес сети
10111110
00110101
11100101
00000000
190.53.229.0
Широковещательный
10111110
00110101
11100101
00011111
190.53.229.31
Адрес сети: 190.53.229.0.
Ответ: 190532290
Решение на Python.
ip = [int(x) for x in '190.53.229.29'.split('.')]
mask = [int(x) for x in '255.255.255.224'.split('.')]
net = [a & m for a, m in zip(ip, mask)]
print(''.join(map(str, net)))
Вариант 7
наибольшая маска
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Два узла, находящиеся в одной сети, имеют IP-адреса 195.24.88.77 и 195.24.93.14. Какое наибольшее количество единиц может быть в маске?
Шаг 2. Адреса совпадают в первых 21 битах, поэтому единиц в маске не больше 21: иначе адреса сети получатся разными.
Шаг 3. Кроме того, узловая часть каждого адреса не должна состоять только из нулей или только из единиц (это адрес сети и широковещательный). Проверяем каждое число единиц в маске: подходят 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21.
Ответ: 21
Решение на Python.
from ipaddress import ip_network, ip_address
a, b = ip_address('195.24.88.77'), ip_address('195.24.93.14')
good = []
for p in range(1, 31): # число единиц в маске
na = ip_network(f'{a}/{p}', strict=False)
nb = ip_network(f'{b}/{p}', strict=False)
if na == nb and a not in (na.network_address, na.broadcast_address) \
and b not in (na.network_address, na.broadcast_address):
good.append(p)
print(max(good))
Вариант 8
адреса с условием
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом 189.29.130.128 и маской сети 255.255.255.128. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 5? В ответе укажите только число.
Разбор
Шаг 1. Маска 255.255.255.128 — 25 единиц, в сети 27 = 128 адресов (адрес сети и широковещательный тоже считаются — вопрос про все IP-адреса сети).
Шаг 2. Первые 25 бит у всех адресов одинаковые, в них 13 единиц. Остальные 7 бит — любые. Нужно посчитать, сколько вариантов последних 7 бит дают нужное условие: удобно перебором программой или через число сочетаний C(n, k).
Ответ: 22
Решение на Python.
from ipaddress import ip_network
net = ip_network('189.29.130.128/255.255.255.128')
count = 0
for a in net: # все адреса сети, включая адрес сети и широковещательный
if bin(int(a)).count('1') % 5 == 0:
count += 1
print(count)
Вариант 9
наибольший адрес компьютера
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 16.154.123.149 и сетевой маской 255.255.224.0. Найдите в данной сети наибольший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
Разбор
Шаг 1. Маска. 255.255.224.0 — это 19 единиц и 13 нулей. Узловая часть адреса — последние 13 бит.
1 байт
2 байт
3 байт
4 байт
Десятичная
Адрес узла
00010000
10011010
01111011
10010101
16.154.123.149
Маска
11111111
11111111
11100000
00000000
255.255.224.0
Адрес сети
00010000
10011010
01100000
00000000
16.154.96.0
Широковещательный
00010000
10011010
01111111
11111111
16.154.127.255
Шаг 2. Адрес сети — узловые биты равны 0: 16.154.96.0; широковещательный — узловые биты равны 1: 16.154.127.255. Оба нельзя назначить компьютеру.
Шаг 3. Наибольший адрес компьютера — на 1 меньше широковещательного: 16.154.127.254.
Ответ: 16154127254
Решение на Python.
from ipaddress import ip_network
net = ip_network('16.154.123.149/255.255.224.0', strict=False)
addr = net.broadcast_address - 1
print(str(addr).replace('.', ''))
Вариант 10
четвёртого байт маски
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Для узла с IP-адресом 53.124.41.46 адрес сети равен 53.124.41.32. Чему равно наибольшее возможное значение четвёртого слева байта маски? Ответ запишите в виде десятичного числа.
Разбор
Шаг 1. Сравниваем четвёртого байт адреса узла и адреса сети в двоичной записи: 00101110 и 00100000.
Шаг 2. Маска — сначала единицы, потом нули. Там, где в адресе узла 1, а в адресе сети 0, в маске обязательно 0. А до последней единицы адреса сети в маске должны стоять единицы — иначе эта единица обнулилась бы.
Шаг 3. Подходящие маски содержат 27, 28 единиц; значения четвёртого байта: 224, 240. Наибольшее — 240.
Ответ: 240
Решение на Python.
from ipaddress import ip_network
res = []
for p in range(0, 33):
net = ip_network('53.124.41.46/' + str(p), strict=False)
if str(net.network_address) == '53.124.41.32':
res.append(int(str(net.netmask).split('.')[3]))
print(max(res))
Для самостоятельного решения
Варианты 11–15 без разборов. Ответ можно проверить кнопкой.
Вариант 11
наибольшая маска
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Два узла, находящиеся в одной сети, имеют IP-адреса 184.10.65.136 и 184.14.113.153. Какое наибольшее количество единиц может быть в маске?
Вариант 12
адреса с условием
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом 33.248.48.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, для которых в двоичной записи IP-адреса единиц больше, чем нулей? В ответе укажите только число.
Вариант 13
наименьший адрес компьютера
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 44.120.142.169 и сетевой маской 255.254.0.0. Найдите в данной сети наименьший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
Вариант 14
число возможных масок
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Два узла, находящиеся в одной сети, имеют IP-адреса 161.171.128.29 и 161.170.83.80. Сколько существует различных возможных значений маски?
Вариант 15
третьего байт маски
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Для узла с IP-адресом 74.35.178.188 адрес сети равен 74.35.176.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.