02 Подсчет количества адресов в сети
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Компьютер в сети имеет IP-адрес 10.18.134.17, маска этой сети 255.255.255.128. Чему равно наибольшее количество возможных адресов компьютеров в этой сети, если два адреса (адрес сети и широковещательный) не используют?
В ответе укажите только число.
Решение руками:
1. Так как первые три октета (октет - число маски, содержит 8 бит) все равны 255, то в двоичном виде они записываются как 24 единицы, а значит, первые три октета определяют адрес сети.
2. Запишем число 128 в двоичном виде.
3. Запишем последний октет IP-адреса компьютера в сети:
4. Сопоставим последний октет маски и адреса компьютера в сети:
10000000
00010001
Жирным выделена часть, отвечающая за адрес сети, следовательно остальные биты могут меняться, чтобы
образовать различные IP-адреса компьютеров в этой сети. Всего таких адресов: .
Решение Python:
from ipaddress import ip_network # Задаем сеть с указанным IP-адресом и маской network = ip_network(’10.18.134.0/255.255.255.128’) # Находим общее количество адресов в сети с вычетом двух (адрес сети и широковещательный) total_addresses = network.num_addresses - 2 print(total_addresses)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана адресом 88.147.254.128 и маской сети 255.255.255.128. Чему равно количество возможных адресов компьютеров в этой сети, если два адреса (адрес сети и широковещательный) не используют?
В ответе укажите только число.
Решение руками:
Вспомним, что маска подсети условно делится на сетевую часть и на хостовую. Хостовая часть, это та, где стоят нули. Для того чтобы определить количество хостов, достаточно перевести маску в двоичную систему счисления и посчитать количество нулей. Количество нулей — это количество бит в которые можно закодировать адреса хостов.
Маска в двоичной системе счисления будет выглядеть следующим образом:
11111111.11111111.11111111.10000000
В ней 7 нулей, тогда всего хостов в сети может быть . Мы вычли 2, так как два адреса (адрес сети и
широковещательный) не используют.
Решение Python:
from ipaddress import ip_network # Задаем сеть с указанным IP-адресом и маской network = ip_network(’88.147.254.128/255.255.255.128’) # Находим общее количество адресов в сети с вычетом двух (адрес сети и широковещательный) total_addresses = network.num_addresses - 2 print(total_addresses)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места – нули. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
Для узла с IP-адресом 200.14.152.118 адрес сети равен 200.14.152.112. Чему равно наименьшее количество возможных адресов в этой сети?
Примечание. Адрес сети и широковещательный адрес необходимо учитывать при подсчёте.
Решение Python:
from ipaddress import * # Создаем объект IP-адреса из строки ’200.14.152.118’ ip = ip_address(’200.14.152.118’) # Создаем объект IP-адреса, который будет использоваться как адрес сети, из строки ’200.14.152.112’ net = ip_address(’200.14.152.112’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объект сети, используя IP-адрес и текущую маску. network = ip_network(f’{ip}/{mask}’, 0) # Проверяем, равен ли адрес сети текущей сети, заданной переменной ’net’ if net == network.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network.num_addresses) # Ответом будет минимальное число в выводе
Решение руками:
Запишем четвёртый байт IP-адреса и адреса сети в двоичной системе счисления:
Заметим, что 5 первых слева бита адреса сети совпадают с IP-адресом, а затем идут нули. То есть после
поразрядной конъюнкции IP-адреса и маски последние 3 бита обнулились, значит, в маске на этих местах стояли нули:
. Количество нулей в последнем байте маски равняется 3.
Следовательно, наименьшее количество возможных адресов в этой сети равняется .
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места – нули. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
Для узла с IP-адресом 108.212.62.110 адрес сети равен 108.212.62.64. Чему равно наибольшее количество возможных адресов в этой сети?
Примечание. Адрес сети и широковещательный адрес необходимо учитывать при подсчёте.
Решение руками:
Запишем четвёртый байт IP-адреса и адреса сети в двоичной системе счисления:
Так как адрес сети получается поразрядной конъюнкией маски и IP-адреса, то маска равна . Количество
нулей в последнем байте маски равняется 6. Следовательно, наибольшее количество возможных адресов в этой сети
равняется
.
Решение Python:
from ipaddress import ip_network # Задаем сеть с указанным адресом сети и определяем маску network = ip_network(’108.212.62.64/255.255.255.192’) # Находим общее количество адресов в сети (с учетом адреса сети и широковещательного) total_addresses = network.num_addresses print(total_addresses)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской подсети называется 32-разрядное двоичное число, определяющее, какие именно разряды IP-адреса компьютера являются общими для всей подсети — в этих разрядах маски стоит 1. Обычно маски записываются в виде четверки десятичных чисел — по тем же правилам, что и IP-адреса. Для некоторой подсети используется маска 255.255.255.240.
Сколько различных адресов компьютеров теоретически допускает эта маска, если два адреса (адрес сети и широковещательный) не используют?
Решение Python:
import ipaddress # Используем адрес 0.0.0.0 с маской 255.255.255.240 network = ipaddress.ip_network(’0.0.0.0/255.255.255.240’, strict=False) # Выводим количество адресов print(network.num_addresses - 2)
Решение руками:
- Так как первые три числа маски равны 255, то в двоичном виде они записываются как 24 единицы, а значит, первые три числа определяют адрес сети.
-
Запишем число 240 в двоичном виде:
.
В этом числе стоят 4 нуля. Итого у нас есть 4 двоичных разряда для того, чтобы записать адрес компьютера.
- Тогда
, но, так как два адреса не используются, получаем
адресов.
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской подсети называется 32-разрядное двоичное число, определяющее, какие именно разряды IP-адреса компьютера являются общими для всей подсети – в этих разрядах маски стоит 1. Обычно маски записываются в виде четверки десятичных чисел – по тем же правилам, что и IP-адреса. Для некоторой подсети используется маска 255.255.224.0. Сколько различных адресов компьютеров теоретически допускает эта маска, если два адреса (адрес сети и широковещательный) не используют?
Решение Python:
import ipaddress # Используем адрес 0.0.0.0 с маской 255.255.255.240 network = ipaddress.ip_network(’0.0.0.0/255.255.224.0’, strict=False) # Выводим количество адресов print(network.num_addresses - 2)
Решение руками:
- Так как первые два числа маски равны 255, то в двоичном виде они записываются как 16 единиц, а значит, первые два числа определяют адрес сети.
-
Запишем число 224 в двоичном виде:
.
В этом числе стоят 5 нулей, еще 8 нулей мы получаем из последнего числа маски. Итого у нас есть 13 двоичных разрядов для того, чтобы записать адрес компьютера.
- Тогда
, но, так как два адреса не используются, получаем
адресов.
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 142.111.21.158 адрес сети равен 142.111.21.144. Чему равно количество возможных адресов в этой сети?
Решение руками:
Запишем третий и четвертый слева байты IP-адреса в двоичной системе счисления: ,
Аналогично запишем третий и четвертый слева байты адреса сети, также в двоичной системе счисления:
,
.
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем два последних байт маски: .
Так как в маске 4 нуля, то количество адресов в этой сети равно: .
Решение Python:
from ipaddress import * # Задаем сеть с указанной маской network = ip_network(’142.111.21.144/255.255.255.240’) # Общее количество адресов в сети total_addresses = network.num_addresses print(total_addresses)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 127.98.13.202 адрес сети равен 127.98.13.192. Чему равно наибольшее количество возможных адресов в этой сети?
Решение Python:
from ipaddress import * # Создаем объект IP-адреса из строки ’127.98.13.202’ ip = ip_address(’127.98.13.202’) # Создаем объект IP-адреса, который будет использоваться как адрес сети, из строки ’127.98.13.192’ net = ip_address(’127.98.13.192’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объект сети, используя IP-адрес и текущую маску. network = ip_network(f’{ip}/{mask}’, 0) # Проверяем, равен ли адрес сети текущей сети, заданной переменной ’net’ if net == network.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network.num_addresses) # Ответом будет максимальное число в выводе
Решение руками:
Запишем четвертый слева байты IP-адреса в двоичной системе счисления:
.
Аналогично запишем четвертый слева байты адреса сети, также в двоичной системе счисления:
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь неоднозначное значение:
Так как по условию задачи нам необходимо найти максимальное количество возможных адресов, то на место символа «x» ставим цифру 0. Получаем искомое количество адресов:
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Два узла, находящиеся в одной сети, имеют IP-адреса 151.111.55.71 и 151.111.55.99. Укажите наименьшее возможное количество адресов в этой сети.
Решение Python:
from ipaddress import * # Создаем объекты IP-адресов ip1 = ip_address(’151.111.55.71’) ip2 = ip_address(’151.111.55.99’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объекты сетии, используя IP-адреса и текущую маску. network1 = ip_network(f’{ip1}/{mask}’, 0) network2 = ip_network(f’{ip2}/{mask}’, 0) # Проверяем, равны ли адреса сетей if network2.network_address == network1.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network1.num_addresses) # Ответом будет минимальное число в выводе
Решение руками:
Запишем последние байты IP-адресов в двоичной системе счисления:
IP-адреса начинают различаться начиная с 27 бита слева. Значит, количество адресов в сети равно:
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 164.148.22.144 и маской сети 255.255.255.240. Сколько в этой сети IP-адресов, для которых количество нулей в двоичной записи IP-адреса больше 18?
Решение Python:
from ipaddress import * count = 0 net = ip_network(’164.148.22.144/255.255.255.240’) for i in net: if bin(int(i))[2:].count(’0’) > 18: count += 1 print(count)
Решение руками:
Рассмотрим таблицу, где IP-адрес сети и маска уже переведены в двоичную систему счисления:
IP маска | 11111111.11111111.11111111.11110000 |
IP сети | 10100100.10010100.00010110.10010000 |
IP узла | 10100100.10010100.00010110.1001хххх |
Последние 4 бит, обозначенные через символ «x» мы можем изменять.
Первоначально получаем, что количество нулей равно 17. То есть на место символов «x» нужно поставить 2, 3 либо 4 нуля, чтобы общее количество нулей было больше 18.
Это можно сделать вариантами. Получаем, что в этой сети 11 IP-адресов, для которых количество
нулей в двоичной записи IP-адреса больше 18.
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 134.127.52.160 и маской сети 255.255.255.224. Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса четна?
Решение Python:
from ipaddress import * count = 0 net = ip_network(’134.127.52.160/255.255.255.224’) for i in net: if bin(int(i))[2:].count(’1’) % 2 == 0: count += 1 print(count)
Решение руками:
Рассмотрим таблицу, где IP-адрес сети и маска уже переведены в двоичную систему счисления:
IP маска | 11111111.11111111.11111111.11100000 |
IP сети | 10000110.01111111.00110100.10100000 |
IP узла | 10000110.01111111.00110100.101xxxxx |
Последние 5 битов, обозначенные через символ «x» мы можем изменять.
Первоначально получаем, что количество единиц равно 15, то есть их сумма нечетна. Для того, чтобы сделать сумму четной, необходимо, чтобы в последних 5 битах была 1 единица, 3 единицы, либо 5 единиц.
Одну единицу мы можем поставить пятью способами, пять единиц – одним способом. Три единицы расставить на 5
позиций можно: способами.
Получаем, что в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса
четна.
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 230.5.60.68 адрес сети равен 230.5.60.64. Определите максимально возможное количество физических устройств в этой сети.
Решение Python:
from ipaddress import * # Создаем объект IP-адреса из строки ’230.5.60.68’ ip = ip_address(’230.5.60.68’) # Создаем объект IP-адреса, который будет использоваться как адрес сети, из строки ’230.5.60.64’ net = ip_address(’230.5.60.64’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объект сети, используя IP-адрес и текущую маску. network = ip_network(f’{ip}/{mask}’, 0) # Проверяем, равен ли адрес сети текущей сети, заданной переменной ’net’ if net == network.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети (без учета двух) print(network.num_addresses - 2) # Ответом будет максимальное число в выводе
Решение руками:
Переведем последний байт IP-адреса и адреса сети в двоичную систему счисления:
Тогда, последний байт маски сети равен:
где на месте может стоять как 0, так и 1. Так как нам нужно найти максимальное количество
устройств, то поставим на место
0. Получаем, что в маске 6 нулей и количество физических устройств
равно:
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 156.27.8.160 и маской сети 255.255.255.248. Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса четна?
Решение руками:
Рассмотрим таблицу, где IP-адрес сети и маска уже переведены в двоичную систему счисления:
IP маска | 11111111.11111111.11111111.11111000 |
IP сети | 10011100.00011011.00001000.10100000 |
IP узла | 10011100.00011011.00001000.10100xxx |
Последние 3 бита, обозначенные через символ «x» мы можем изменять.
Первоначально получаем, что количество единиц равно 11, то есть их сумма нечетна. Для того, чтобы сделать сумму четной, необходимо, чтобы в последних 3 битах была 1 либо 3 единицы.
Одну единицу мы можем поставить тремя способами, три единицы – одним способом.
Получаем, что в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса
четна.
Решение Python:
from ipaddress import * net = ip_network(’156.27.8.160/255.255.255.248’) c = 0 for i in net: if bin(int(i))[2:].count(’1’) % 2 == 0: c += 1 print(c)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 164.128.132.192 и маской сети 255.255.255.224. Сколько в этой сети IP-адресов, для которых количество нулей в двоичной записи IP-адреса строго больше 22?
Решение руками:
Рассмотрим таблицу, где IP-адрес сети и маска уже переведены в двоичную систему счисления:
IP маска | 11111111.11111111.11111111.11100000 |
IP сети | 10100100.10000000.10000100.11000000 |
IP узла | 10100100.10000000.10000100.110ххххх |
Последние 5 бит, обозначенные через символ «x» мы можем изменять.
Первоначально получаем, что количество нулей равно 19. То есть на место символов «x» нужно поставить 4 либо 5 нулей, чтобы общее количество нулей было больше 22.
Это можно сделать вариантами. Получаем, что в этой сети 6 IP-адресов, для которых количество нулей в
двоичной записи IP-адреса больше 22.
Решение Python:
from ipaddress import * net = ip_network(’164.128.132.192/255.255.255.224’) c = 0 for i in net: if bin(int(i))[2:].count(’0’) > 22: c += 1 print(c)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Два узла, находящиеся в одной сети, имеют IP-адреса 202.222.47.159 и 202.222.47.141. Укажите наименьшее возможное количество адресов в этой сети.
Решение Python:
from ipaddress import * # Создаем объекты IP-адресов ip1 = ip_address(’202.222.47.159’) ip2 = ip_address(’202.222.47.141’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объекты сетии, используя IP-адреса и текущую маску. network1 = ip_network(f’{ip1}/{mask}’, 0) network2 = ip_network(f’{ip2}/{mask}’, 0) # Проверяем, равны ли адреса сетей if network2.network_address == network1.network_address and ip1 != network1.network_address and \ ip2 != network2.network_address and ip1 != network1.broadcast_address and ip2 != network2.broadcast_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network1.num_addresses) # Ответом будет минимальное число в выводе
Решение руками:
Запишем последние байты IP-адресов в двоичной системе счисления:
IP-адреса начинают различаться начиная с 28 бита слева. Однако, в таком случае у нас получается, что первый узел будет иметь широковещательный адрес. Значит, нужно добавить больше нулей в маску.
Получаем последний байт маски: 11000000. Значит, количество адресов в сети равно:
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 100.28.155.148 адрес сети равен 100.28.155.128. Чему равно наибольшее количество возможных адресов в этой сети?
Решение Python:
from ipaddress import * # Создаем объект IP-адреса из строки ’100.28.155.148’ ip = ip_address(’100.28.155.148’) # Создаем объект IP-адреса, который будет использоваться как адрес сети, из строки ’100.28.155.128’ net = ip_address(’100.28.155.128’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объект сети, используя IP-адрес и текущую маску. network = ip_network(f’{ip}/{mask}’, 0) # Проверяем, равен ли адрес сети текущей сети, заданной переменной ’net’ if net == network.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network.num_addresses) # Ответом будет максимальное число в выводе
Решение руками:
Запишем четвертый слева байты IP-адреса в двоичной системе счисления: .
Аналогично запишем четвертый слева байты адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как по условию задачи нам необходимо найти максимальное количество возможных адресов, то на место
символа «x» ставим цифру 0. Получаем искомое количество адресов: .
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 231.25.4.185 адрес сети равен 231.25.4.176 Чему равно количество возможных адресов в этой сети?
Решение Python:
from ipaddress import * # Создаем объект IP-адреса из строки ’231.25.4.185’ ip = ip_address(’231.25.4.185’) # Создаем объект IP-адреса, который будет использоваться как адрес сети, из строки ’231.25.4.176’ net = ip_address(’231.25.4.176’) # Цикл по диапазону от 0 до 32 (включительно), чтобы проверить все возможные маски подсети for mask in range(33): # Создаем объект сети, используя IP-адрес и текущую маску. network = ip_network(f’{ip}/{mask}’, 0) # Проверяем, равен ли адрес сети текущей сети, заданной переменной ’net’ if net == network.network_address: # Если адрес сети совпадает, выводим количество адресов в этой сети print(network.num_addresses)
Решение руками:
Запишем четвертый слева байт IP-адреса в двоичной системе счисления:
Аналогично запишем четвертый слева байт адреса сети, также в двоичной системе счисления:
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем последний байт маски:
Так как в маске 4 нуля, то количество адресов в этой сети равно:
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 179.181.51.48 и маской сети 255.255.255.240.
Сколько в этой сети IP-адресов, в которых в байтах двоичной записи IP-адреса не встречается 111? То есть ситуация 1001001.11010011 возможна, а 10000111.01110011 нет.
В ответе укажите только число.
Решение Python:
from ipaddress import * # Создаем объект сети net = ip_network(’179.181.51.48/255.255.255.240’) count = 0 # Проходим по всем IP-адресам в сети for ip in net: # Преобразуем IP-адрес в двоичную строку binary_ip = bin(int(ip))[2:].zfill(32) # Добавляем ведущие нули для получения 32 бит # Разбиваем на байты (8 бит) bytes_ip = [binary_ip[i:i+8] for i in range(0, 32, 8)] # Проверяем каждый байт на наличие ’111’ if all(’111’ not in i for i in bytes_ip): count += 1 # Увеличиваем счетчик, если ни один байт не содержит ’111’ print(count)
Решение руками:
NET | 10110011.10110101.00110011.00110000 |
Mask | 11111111.11111111.11111111.11110000 |
IP | 10110011.10110101.00110011.0011xxxx |
Сразу очевидно, что на месте первого «x» не может стоять 1, так как получится комбинация «111». Поэтому, там ставим 0.
Остается комбинация «xxx». Всего вариантов расставить 0 и 1 на три места – , но нам не подходит вариант
111. Поэтому, количество IP-адресов, в которых в двоичной записи IP-адреса не встречается 111, равно
.
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 58.27.142.224 и сетевой маской 255.255.255.240.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 2?
В ответе укажите только число.
Решение руками:
Переведем IP-адрес узла и сетевую маску в двоичную систему счисления и распишем чему равен адрес сети:
Адрес сети | 00111010.00011011.10001110.11100000 |
Mask | 11111111.11111111.11111111.11110000 |
IP | 00111010.00011011.10001110.1110xxxx |
На месте символов «xxxx» могут стоять как 1, так и 0. Так как на этой стадии в адресе сети уже есть 15 единиц, то есть количество не кратно 2, то нам нужно добавить либо 1, либо 3 едицины.
Количество способов поставить 1 единицу на 4 места – 4. Количество способов поставить 3 единицы на 4 позиции:
. Общее количество IP-адресов:
.
Решение Python:
from ipaddress import * net = ip_network(’58.27.142.224/255.255.255.240’) c = 0 for i in net: if bin(int(i)).count(’1’) % 2 == 0: c += 1 print(c)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Сеть задана IP-адресом 156.27.8.160 и маской сети 255.255.255.248. Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса четна?
В ответе укажите только число.
Решение руками:
Рассмотрим таблицу, где IP-адрес сети и маска уже переведены в двоичную систему счисления:
IP маска | 11111111.11111111.11111111.11111000 |
IP сети | 10011100.00011011.00001000.10100000 |
IP узла | 10011100.00011011.00001000.10100xxx |
Последние 3 бита, обозначенные через символ «x» мы можем изменять.
Первоначально получаем, что количество единиц равно 11, то есть их сумма нечетна. Для того, чтобы сделать сумму четной, необходимо, чтобы в последних 5 битах была 1 либо 3 единицы.
Одну единицу мы можем поставить тремя способами, три единицы – одним способом.
Получаем, что в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса
четна.
Решение Python:
from ipaddress import * net = ip_network(’156.27.8.160/255.255.255.248’) c = 0 for i in net: if bin(int(i)).count(’1’) % 2 == 0: c += 1 print(c)