Тема 13 Организация компьютерных сетей

02 Подсчет количества адресов в сети

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела 13 организация компьютерных сетей
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#68524

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

В ответе укажите только число.

Показать ответ и решение

Решение руками:

1. Так как первые три октета (октет - число маски, содержит 8 бит) все равны 255, то в двоичном виде они записываются как 24 единицы, а значит, первые три октета определяют адрес сети.

2. Запишем число 128 в двоичном виде.

12810 = 100000002

3. Запишем последний октет IP-адреса компьютера в сети:

1710 = 000100012

4. Сопоставим последний октет маски и адреса компьютера в сети:

10000000

00010001

Жирным выделена часть, отвечающая за адрес сети, следовательно остальные биты могут меняться, чтобы образовать различные IP-адреса компьютеров в этой сети. Всего таких адресов:  7
2  − 2 = 126  .

Решение 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)

Ответ: 126

Ошибка.
Попробуйте повторить позже

Задача 2#70631

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

В ответе укажите только число.

Показать ответ и решение

Решение руками:

Вспомним, что маска подсети условно делится на сетевую часть и на хостовую. Хостовая часть, это та, где стоят нули. Для того чтобы определить количество хостов, достаточно перевести маску в двоичную систему счисления и посчитать количество нулей. Количество нулей — это количество бит в которые можно закодировать адреса хостов.

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

11111111.11111111.11111111.10000000

В ней 7 нулей, тогда всего хостов в сети может быть 27 − 2 = 126  . Мы вычли 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)

Ответ: 126

Ошибка.
Попробуйте повторить позже

Задача 3#71801

В терминологии сетей 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-адреса и адреса сети в двоичной системе счисления:

11810 = 011101102

112  = 01110000
   10          2

Заметим, что 5 первых слева бита адреса сети совпадают с IP-адресом, а затем идут нули. То есть после поразрядной конъюнкции IP-адреса и маски последние 3 бита обнулились, значит, в маске на этих местах стояли нули: 11111000 = 248
        2     10  . Количество нулей в последнем байте маски равняется 3.

Следовательно, наименьшее количество возможных адресов в этой сети равняется  3
2  = 8  .

Ответ: 8

Ошибка.
Попробуйте повторить позже

Задача 4#71802

В терминологии сетей 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-адреса и адреса сети в двоичной системе счисления:

110  = 01101110
   10          2

6410 = 010000002

Так как адрес сети получается поразрядной конъюнкией маски и IP-адреса, то маска равна 110000002  . Количество нулей в последнем байте маски равняется 6. Следовательно, наибольшее количество возможных адресов в этой сети равняется  6
2 = 64  .

Решение 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)

Ответ: 64

Ошибка.
Попробуйте повторить позже

Задача 5#71808

В терминологии сетей 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)

Решение руками:

  1. Так как первые три числа маски равны 255, то в двоичном виде они записываются как 24 единицы, а значит, первые три числа определяют адрес сети.
  2. Запишем число 240 в двоичном виде: 24010 = 111100002  .

    В этом числе стоят 4 нуля. Итого у нас есть 4 двоичных разряда для того, чтобы записать адрес компьютера.

  3. Тогда 24 = 16  , но, так как два адреса не используются, получаем 16 − 2 = 14  адресов.
Ответ: 14

Ошибка.
Попробуйте повторить позже

Задача 6#71809

В терминологии сетей 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)

Решение руками:

  1. Так как первые два числа маски равны 255, то в двоичном виде они записываются как 16 единиц, а значит, первые два числа определяют адрес сети.
  2. Запишем число 224 в двоичном виде: 22410 = 111000002  .

    В этом числе стоят 5 нулей, еще 8 нулей мы получаем из последнего числа маски. Итого у нас есть 13 двоичных разрядов для того, чтобы записать адрес компьютера.

  3. Тогда 213 = 8192  , но, так как два адреса не используются, получаем 8192− 2 = 8190  адресов.
Ответ: 8190

Ошибка.
Попробуйте повторить позже

Задача 7#72222

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адреса в двоичной системе счисления: 2110 = 000101012  , 158  = 10011110
   10          2

Аналогично запишем третий и четвертый слева байты адреса сети, также в двоичной системе счисления: 2110 = 000101012  , 14410 = 100100002  .

Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске, запишем два последних байт маски: 11111111.11110000  .

Так как в маске 4 нуля, то количество адресов в этой сети равно: 24 = 16  .

Решение Python:

from ipaddress import *

# Задаем сеть с указанной маской
network = ip_network(’142.111.21.144/255.255.255.240’)

# Общее количество адресов в сети
total_addresses = network.num_addresses

print(total_addresses)

Ответ: 16

Ошибка.
Попробуйте повторить позже

Задача 8#72223

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адреса в двоичной системе счисления:

20210 = 110010102

.

Аналогично запишем четвертый слева байты адреса сети, также в двоичной системе счисления:

19210 = 110000002

Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь неоднозначное значение:

11xx0000

Так как по условию задачи нам необходимо найти максимальное количество возможных адресов, то на место символа «x» ставим цифру 0. Получаем искомое количество адресов:

26 = 64
Ответ: 64

Ошибка.
Попробуйте повторить позже

Задача 9#72226

В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адресов в двоичной системе счисления:

7110 = 010001112,

9910 = 011000112

IP-адреса начинают различаться начиная с 27 бита слева. Значит, количество адресов в сети равно:

 6
2  = 64
Ответ: 64

Ошибка.
Попробуйте повторить позже

Задача 10#72227

В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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.

Это можно сделать 24 − 5 = 11  вариантами. Получаем, что в этой сети 11 IP-адресов, для которых количество нулей в двоичной записи IP-адреса больше 18.

Ответ: 11

Ошибка.
Попробуйте повторить позже

Задача 11#72231

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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 позиций можно:   5!   4 ⋅5
3!⋅2! =-2--= 10  способами.

Получаем, что в этой сети 5+ 1+ 10 = 16  IP-адресов, для которых сумма единиц в двоичной записи IP-адреса четна.

Ответ: 16

Ошибка.
Попробуйте повторить позже

Задача 12#72486

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адреса и адреса сети в двоичную систему счисления:

6810 = 010001002,642 = 010000002

Тогда, последний байт маски сети равен:

11xxx000,

где на месте x  может стоять как 0, так и 1. Так как нам нужно найти максимальное количество устройств, то поставим на место x  0. Получаем, что в маске 6 нулей и количество физических устройств равно:

26 − 2 = 62
Ответ: 62

Ошибка.
Попробуйте повторить позже

Задача 13#75268

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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 единицы.

Одну единицу мы можем поставить тремя способами, три единицы – одним способом.

Получаем, что в этой сети 3+ 1 = 4  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)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 14#75270

В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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.

Это можно сделать 5+ 1 = 6  вариантами. Получаем, что в этой сети 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)

Ответ: 6

Ошибка.
Попробуйте повторить позже

Задача 15#75271

В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адресов в двоичной системе счисления:

15910 = 100111112,

14110 = 100011012,

4710 = 1011112

IP-адреса начинают различаться начиная с 28 бита слева. Однако, в таком случае у нас получается, что первый узел будет иметь широковещательный адрес. Значит, нужно добавить больше нулей в маску.

Получаем последний байт маски: 11000000. Значит, количество адресов в сети равно:

26 = 64
Ответ: 64

Ошибка.
Попробуйте повторить позже

Задача 16#75272

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адреса в двоичной системе счисления: 14810 = 100101002  .

Аналогично запишем четвертый слева байты адреса сети, также в двоичной системе счисления: 12810 = 100000002  .

Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь неоднозначное значение: 1xx00000  .

Так как по условию задачи нам необходимо найти максимальное количество возможных адресов, то на место символа «x» ставим цифру 0. Получаем искомое количество адресов:  7
2 = 128  .

Ответ: 128

Ошибка.
Попробуйте повторить позже

Задача 17#75273

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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-адреса в двоичной системе счисления:

185  = 10111001
   10          2

Аналогично запишем четвертый слева байт адреса сети, также в двоичной системе счисления:

17610 = 101100002

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

Так как в маске 4 нуля, то количество адресов в этой сети равно:

 4
2  = 16
Ответ: 16

Ошибка.
Попробуйте повторить позже

Задача 18#75276

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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 на три места –  3
2 = 8  , но нам не подходит вариант 111. Поэтому, количество IP-адресов, в которых в двоичной записи IP-адреса не встречается 111, равно 8 − 1 = 7  .

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 19#75278

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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 позиции: -4!
3!1! = 4  . Общее количество IP-адресов: 4 + 4 = 8  .

Решение 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)

Ответ: 8

Ошибка.
Попробуйте повторить позже

Задача 20#75279

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть 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 единицы.

Одну единицу мы можем поставить тремя способами, три единицы – одним способом.

Получаем, что в этой сети 3+ 1 = 4  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)

Ответ: 4
Рулетка
Вы можете получить скидку в рулетке!