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

04 Определение маски

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

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

Задача 1#5916Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

|--|--|-----|
|a-|b-|a&b--|
|1-|1-|--1--|
|1 |0 |  0  |
|0-|1-|--0--|
|--|--|-----|
-0--0----0---

Для IP-адреса:

4110 = 32 + 8 + 1 = 25 + 23 + 20 = 001010012   ;

Для адреса сети:

             5
3210 = 32 = 2 =  001000002   ;

В результате поразрядной конъюнкции имеем:

&  00101001
   ********
---00100000--

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в числе, которое нам нужно найти. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе — в результате конъюнкции все равно будет 0. Значит, на первых трех местах слева маски стоят единицы, а на четвертом месте слева месте может стоять 0 или 1. Так как нужно выбрать максимальное значение, запишем там 1. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111100002   .

Маска не может начинаться с 0, поэтому окончательный ответ:
111100002  = 27 + 26 + 25 + 24 = 128 + 64 + 32 + 16 = 24010   .

Решение Python:

Для определения наименьшего значения третьего байта маски необходимо понять, какая маска соответствует заданному адресу сети. Адрес сети формируется поразрядной конъюнкцией (логическим И) между IP-адресом узла и маской сети. В Python удобно использовать модуль ipaddress, который позволяет создавать объект сети с заданным IP и количеством единиц в маске. Идея перебора заключается в том, чтобы проверить все возможные количества единиц в маске от 1 до 32 и найти те, которые дают адрес сети 97.122.41.0. Среди таких вариантов выбираем маску с наименьшим количеством единиц в начале, тогда третий байт маски будет минимальным.

from ipaddress import ip_network

for mask in range(1, 33):
    net = ip_network(f’97.122.41.0/{mask}’, 0)
    print(net, net.netmask)
# Ищем в списке сеть 97.122.32.0 и выбираем ту, в которой количество единиц больше (число после знака /), в таком случае и значение маски будет больше

Ответ: 240

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

Задача 2#5917Максимум баллов за задание: 1

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

 

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

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

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|-----|
|a-|b-|a&b--|
|1 |1 |  1  |
|1-|0-|--0--|
|--|--|-----|
|0-|1-|--0--|
-0--0----0---

Для IP-адреса:

206  =  128 + 64 + 8 + 4 + 2 = 27 + 26 + 23 + 22 + 21 = 11001110
   10                                                           2   ;

Для адреса сети:

                    7    6
19210 = 128 + 64 = 2  + 2 =  110000002   ;

В результате поразрядной конъюнкции имеем:

&  11001110
   ********
-------------
   11000000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0. Значит, на третьем и четвертом местах слева может стоять как 0, так и 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 110000002   .

Маска не может начинаться с 0, поэтому окончательный ответ: 110000002  = 27 + 26 = 19210   .

Решение Python:

Для определения наименьшего значения третьего байта маски необходимо понять, какая маска соответствует заданному адресу сети. Адрес сети формируется поразрядной конъюнкцией (логическим И) между IP-адресом узла и маской сети. В Python удобно использовать модуль ipaddress, который позволяет создавать объект сети с заданным IP и количеством единиц в маске. Идея перебора заключается в том, чтобы проверить все возможные количества единиц в маске от 1 до 32 и найти те, которые дают адрес сети 35.167.192.0. Среди таких вариантов выбираем маску с наименьшим количеством единиц в начале, тогда третий байт маски будет минимальным.

from ipaddress import ip_network

for mask in range(1, 33):
    net = ip_network(f’35.167.206.16/{mask}’, 0)
    print(net, net.netmask)
# Ищем в списке сеть 35.167.192.0 и выбираем ту, в которой количество единиц меньше (число после знака /), тогда и байт маски будет меньше

Ответ: 192

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

Задача 3#5947Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение четвертого слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|-----|
|a-|b-|a&b--|
|1 |1 |  1  |
|1-|0-|--0--|
|--|--|-----|
|0-|1-|--0--|
-0--0----0---

Для IP-адреса:

237  =  128 + 64 + 32 + 8 + 4 + 1 = 27 + 26 + 25 + 23 + 22 + 20 = 11101101
   10                                                                     2   ;

Для адреса сети:

                                 7    6   5    3    2
23610 = 128 + 64 + 32 + 8 + 4 = 2 +  2 + 2  + 2  + 2  = 111011002   ;

В результате поразрядной конъюнкции имеем:

&  11101101
   ********
-------------
   11101100

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0. Значит, на cедьмом месте слева месте может стоять как 0, так и 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111111002   .

Маска не может начинаться с 0, поэтому окончательный ответ: 111111002  = 27 + 26 + 25 + 24 + 23 = 128 + 64 + 32 + 16 + 8 + 4 = 25210   .

Решение Python:

Для определения наименьшего значения четвертого байта маски необходимо понять, какая маска соответствует заданному адресу сети. Адрес сети формируется поразрядной конъюнкцией (логическим И) между IP-адресом узла и маской сети. В Python удобно использовать модуль ipaddress, который позволяет создавать объект сети с заданным IP и количеством единиц в маске. Идея перебора заключается в том, чтобы проверить все возможные значения количества единиц в маске от 1 до 32 и найти те, которые дают адрес сети 203.90.129.236. Среди таких вариантов выбираем маску с наименьшим количеством единиц, тогда четвертый байт маски будет минимальным. В конце вычисляется четвертый байт выбранной маски, что и является ответом.

from ipaddress import ip_network

for mask in range(1, 33):
    net = ip_network(f’203.90.129.237/{mask}’, 0)
    print(net, net.netmask)
# Ищем в списке сеть 203.90.129.236 и выбираем ту, в которой количество единиц меньше (число после знака /), тогда и байт маски будет меньше
# В ответ записываем четвертый байт маски

Ответ: 252

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

Задача 4#6040Максимум баллов за задание: 1

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

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

По IP-адресу узла 125.170.90.148 и адресу сети 125.170.88.0 определите чему равно наименьшее количество единиц в двоичной записи третьего байта маски.

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и маске сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

|--|--|-----|
|a-|b-|a&b--|
|1-|1-|--1--|
|1 |0 |  0  |
|0-|1-|--0--|
|--|--|-----|
-0--0----0---

Для IP-адреса:

9010 = 64 + 16 + 8 + 2 = 26 + 24 + 23 + 21 = 010110102   ;

Для адреса сети:

                      6    4   3
8810 = 64 + 16 + 8 = 2 + 2  + 2  = 010110002   ;

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

&  01011010
   ********
-------------
   01011000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в числе, которое нам нужно найти. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе — в результате конъюнкции все равно будет 0. Значит, на первых пяти местах слева маски стоят единицы, а на шестом месте слева может стоять 0 или 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111110002   .

Наименьшее возможное количество единиц в маске равно 5.

Решение Python:

Для определения наименьшего количества единиц в третьем байте маски необходимо понять, какая маска соответствует заданному адресу сети. Адрес сети формируется поразрядной конъюнкцией (логическим И) между IP-адресом узла и маской сети. В Python удобно использовать модуль ipaddress, который позволяет создавать объект сети с заданным IP и количеством единиц в маске. Идея перебора заключается в том, чтобы проверить все возможные значения количества единиц в маске от 1 до 32 и определить для каждого IP-адрес сети. Затем для третьего байта маски преобразуем его в двоичное число и считаем количество единиц. Среди найденных вариантов выбираем тот, где адрес сети совпадает с 125.170.88.0 и количество единиц в третьем байте минимальное.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все возможные значения количества единиц в маске от 1 до 32
for mask in range(1, 33):
    net = ip_network(f’125.170.90.148/{mask}’, strict=False)  # Создаем сеть с текущим количеством единиц в маске
    # Извлекаем третий байт маски, преобразуем в двоичное число и дополняем нулями до 8 бит
    third_byte_mask = bin(int(net.netmask))[2:].zfill(32)[16:24]
    print(net, third_byte_mask)  # Выводим адрес сети и третий байт маски

# Далее ищем сеть 125.170.88.0 и выбираем вариант с минимальным количеством единиц в третьем байте маски
# Количество единиц в этом байте и будет ответом

Ответ: 5

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

Задача 5#6041Максимум баллов за задание: 1

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

 

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

По IP-адресу узла 216.234.148.136 и адресу сети 216.234.144.0 определите чему равно наименьшее количество единиц в двоичной записи третьего байта маски.

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и маске сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

|--|--|-----|
|a-|b-|a&b--|
|1-|1-|--1--|
|1 |0 |  0  |
|0-|1-|--0--|
|--|--|-----|
-0--0----0---

Для IP-адреса:

14810 = 128 + 16 + 4 = 26 + 24 + 22 = 100101002   ;

Для адреса сети:

                    6    4
14410 = 128 + 16 = 2  + 2 =  100100002   ;

В результате поразрядной конъюнкции имеем:

&  10010100
   ********
---10010000--

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в числе, которое нам нужно найти. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе — в результате конъюнкции все равно будет 0. Значит, на первых четрех местах слева маски стоят единицы, а на пятом месте слева месте может стоять 0 или 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111100002   .

Наименьшее возможное количество единиц в маске равно 4.

Решение Python:

По условию дан IP-адрес узла 216.234.148.136  и адрес сети 216.234.144.0  . Необходимо определить минимальное количество единиц в двоичной записи третьего байта маски, при котором при поразрядной конъюнкции IP-адреса с маской получается именно данный адрес сети.

Для этого удобно перебрать все возможные длины маски от 1  до 32  . Для каждой маски создаём объект сети с помощью функции ip_network(), указывая IP-адрес и текущую длину маски. Параметр strict=False позволяет работать даже в случае, если IP-адрес не совпадает с адресом сети.

Затем получаем двоичное представление маски, выделяем её третий байт (с 16-го по 23-й биты) и подсчитываем количество единиц. Среди всех вариантов выбираем тот, где адрес сети совпадает с данным 216.234.144.0  , и определяем минимальное количество единиц в третьем байте маски.

Таким образом, после перебора всех масок мы получаем ответ.

from ipaddress import ip_network

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаем сеть на основе IP-адреса и текущей длины маски
    # strict=False позволяет игнорировать несоответствие хоста и маски
    net = ip_network(f’216.234.148.136/{mask}’, strict=False)

    # Переводим маску в двоичный вид и выделяем третий байт (16–23 биты)
    third_byte_mask = bin(int(net.netmask))[2:].zfill(32)[16:24]

    # Выводим адрес сети и двоичное значение третьего байта маски
    print(net, third_byte_mask)

# Далее по выводу определяем нужную сеть 216.234.144.0
# и среди таких вариантов выбираем маску с минимальным количеством единиц в третьем байте

Ответ: 4

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

Задача 6#6587Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение третьего слева байта адреса сети, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

|--|--|-----|
|a-|b-|a&b--|
|1-|1-|--1--|
|1 |0 |  0  |
|0-|1-|--0--|
|--|--|-----|
-0--0----0---

Для IP-адреса:

19010 = 128 + 32 + 16 + 8 + 4 + 2 = 27 + 25 + 24 + 23 + 22 + 21 = 101111102   ;

Для маски:

                         7    6    5
22410 = 128 + 64 + 32 = 2  + 2 +  2 =  111000002   ;

В результате поразрядной конъюнкции имеем:

 & 10111110
   11100000
---********---

Если же 0 есть на позиции в одном из чисел, значит результат конъюнкции цифр, стоящих на этих позициях будет равен 0. Значит, на первом и третьем местах слева месте не должен стоять 0. Так как конъюнкция только двух цифр равных 1 равна 1, поэтому искомое число имеет вид 101000002   , которое имеет 2 единицы.

В каждом байте адреса содержится 8 цифр, поэтому окончательный ответ: 8 − 2 = 6  .

Решение Python:

Нужно найти количество нулей в третьем слева байте адреса сети. Адрес сети получается в результате применения поразрядной конъюнкции IP-адреса и маски. У нас задан IP-адрес 113.184.190.40  и маска 255.255.224.0  . Чтобы решить задачу, создаём объект сети с помощью функции ip_network(), где указываем IP-адрес узла и маску. Параметр strict=False (или 0) позволяет работать даже в случае, если IP-адрес не совпадает с адресом сети.

После этого через network_address получаем сетевой адрес. Преобразуем его в двоичный вид и дополняем до 32 бит. Затем берём третий байт (с 16-го по 23-й биты включительно) и подсчитываем количество нулей в нём. Это и будет искомый ответ.

from ipaddress import ip_network

# Создаём объект сети, указывая IP-адрес и маску.
# Параметр strict=False (0) позволяет использовать произвольный IP-адрес внутри сети.
net = ip_network(f’113.184.190.40/255.255.224.0’, 0)

# Преобразуем сетевой адрес в двоичный вид длиной 32 бита.
net1 = bin(int(net.network_address))[2:].zfill(32)

# Извлекаем третий байт (16–23 биты) и подсчитываем количество нулей в нём.
print(net1[16:24].count(’0’))

Ответ: 6

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

Задача 7#6588Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение четвертого слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|-----|
|a-|b-|a&b--|
|1 |1 |  1  |
|1-|0-|--0--|
|--|--|-----|
|0-|1-|--0--|
-0--0----0---

Для IP-адреса:

104  =  64 + 32 + 8 = 26 + 25 + 23 = 01101000
   10                                        2   ;

Для адреса сети:

                  6    5
9610 = 64 + 32 = 2 +  2 =  011000002   ;

В результате поразрядной конъюнкции имеем:

&  01101000
  ********
-------------
  01100000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0. Значит, на четвертом месте слева месте может стоять как 0, так и 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111000002   .

Маска не может начинаться с 0, поэтому окончательный ответ: 111000002  = 27 + 26 + 25 = 128 + 64 + 32 = 22410   .

Решение Python:

Нужно определить минимальное значение четвёртого байта маски, при котором IP-адрес узла 179.189.172.104  имеет адрес сети 179.189.172.96  . Адрес сети вычисляется по правилу:

адр ес сети = IP-адрес & м аска,

Операция & - поразрядная конъюнкция.

Так как в условии требуется найти именно наименьшее значение четвёртого байта маски, удобно организовать перебор всех возможных длин маски от 1  до 32  и для каждой длины вычислять адрес сети. Если полученный адрес совпадает с 179.189.172.96  , то проверяем маску и выбираем ту, у которой последний байт (четвёртый слева) имеет наименьшее значение.

В Python для таких операций используем модуль ipaddress. Создаём объект сети с помощью ip_network(), указываем IP-адрес узла и длину маски. Параметр strict=0 позволяет работать даже в случае, если IP-адрес не совпадает с сетевым адресом. После этого выводим сам сетевой адрес и соответствующую маску. В полученном списке находим строку с адресом сети 179.189.172.96  и фиксируем её маску. Наименьшее значение её четвёртого байта и будет ответом.

from ipaddress import ip_network

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаём объект сети, указывая IP-адрес узла и длину маски.
    # strict=0 позволяет не проверять соответствие адреса и маски.
    net = ip_network(f’179.189.172.104/{mask}’, 0)

    # Выводим полученный адрес сети и маску для анализа.
    print(net, net.netmask)

# В списке ищем сеть 179.189.172.96 и выбираем её маску.
# Минимальное значение четвёртого байта этой маски и есть ответ.

Ответ: 224

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

Задача 8#6589Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение четвертого слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

|--|--|-----|
|a-|b-|a&b--|
|1-|1-|--1--|
|1 |0 |  0  |
|0-|1-|--0--|
|--|--|-----|
-0--0----0---

Для IP-адреса:

16410 = 128 + 32 + 4 = 27 + 25 + 22 + 2 = 101001002   ;

Для адреса сети:

                    7    5
16010 = 128 + 32 = 2  + 2 =  101000002   ;

В результате поразрядной конъюнкции имеем:

&  10100100
   ********
---10100000--

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0. Значит, на четвертом и пятом местах слева месте может стоять как 0, так и 1. Так как нужно выбрать максимальное значение, запишем там 1. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111110002   .

Маска не может начинаться с 0, поэтому окончательный ответ: 111110002  = 27 + 26 + 25 + 24 + 23 = 24810   .

Решение Python:

Нам дан IP-адрес узла 165.225.161.164  и известно, что адрес сети равен 165.225.161.160  . Чтобы это условие выполнялось, необходимо правильно подобрать маску сети. Напомним, что адрес сети вычисляется по правилу:

адр ес сети = IP-адрес & м аска,

где операция «&» обозначает поразрядную конъюнкцию.

Так как нужно найти **наибольшее значение четвёртого байта маски**, используем метод перебора: перебираем все длины маски от 1  до 32  , для каждой вычисляем адрес сети и проверяем, совпадает ли он с требуемым 165.225.161.160  . Если совпадает, то фиксируем соответствующую маску и обращаем внимание на её четвёртый байт. Среди всех подходящих вариантов выбираем максимальное значение этого байта.

В Python удобно использовать модуль ipaddress, который позволяет автоматически вычислять сетевой адрес по IP и маске. Для перебора создаём объект ip_network(), указываем IP и длину маски. Параметр strict=0 разрешает проверку даже если IP не является сетевым. После этого выводим найденный адрес сети и соответствующую маску. В списке выбираем тот вариант, где сеть равна 165.225.161.160  , и среди таких масок определяем максимальный четвёртый байт. Это и будет ответ.

from ipaddress import ip_network

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаём объект сети на основе IP-адреса и текущей маски
    # Параметр strict=0 позволяет использовать адрес хоста
    net = ip_network(f’165.225.161.164/{mask}’, 0)

    # Выводим адрес сети и маску для анализа
    print(net, net.netmask)

# В полученном списке ищем сеть 165.225.161.160
# Среди найденных вариантов выбираем маску с наибольшим значением четвёртого байта

Ответ: 248

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

Задача 9#68762Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|----|
|a-|b-|a&b-|
|1 |1 | 1  |
|--|--|----|
|1-|0-|-0--|
|0-|1-|-0--|
|0 |0 | 0  |
------------

Для IP-адреса:

12210 = 011110102  ;

Для адреса сети:

120  = 01111000
   10          2  ;

В результате поразрядной конъюнкции имеем:

 & 01111010
---********--
   01111000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0.

Значит, на шестом месте слева месте может стоять как 0, так и 1. Так как нужно выбрать минимальное значение, запишем там 0. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111110002  .

Маска не может начинаться с 0, поэтому окончательный ответ: 11111000  = 248
       2      10  .

Решение Python:

Нам дан IP-адрес узла 117.35.122.92  и известно, что адрес сети равен 117.35.120.0  . Чтобы выполнялось это условие, нужно подобрать такую маску сети, при которой

адрес сети = IP -адрес & маска,

где символ «&» означает поразрядную конъюнкцию.

Так как неизвестно, какая именно маска подходит, будем использовать метод перебора: перебираем все длины маски от 1  до 32  , для каждой вычисляем адрес сети и проверяем, совпадает ли он с требуемым 117.35.120.0  .

Для работы удобно использовать модуль ipaddress. Он позволяет создать объект сети с помощью ip_network(), где указываем IP-адрес и длину маски. Параметр strict=0 разрешает выполнять проверку даже если IP не является сетевым адресом. После этого можно получить сетевой адрес (network_address) и маску (netmask).

Дальше из всех найденных масок, которые дают сеть 117.35.120.0  , выбираем ту, у которой **третьий слева байт минимален**. Это и будет ответ задачи.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и масками

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаём объект сети на основе IP-адреса и текущей маски
    # Параметр strict=0 позволяет использовать адрес хоста, а не только сетевой адрес
    net = ip_network(f’117.35.122.92/{mask}’, 0)

    # Выводим адрес сети и маску для проверки
    print(net, net.netmask)

# В списке ищем сеть 117.35.120.0
# Среди всех найденных вариантов выбираем маску с наименьшим значением третьего байта

Ответ: 248

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

Задача 10#68763Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|----|
|a-|b-|a&b-|
|1 |1 | 1  |
|--|--|----|
|1-|0-|-0--|
|0-|1-|-0--|
|0 |0 | 0  |
------------

Для IP-адреса:

8310 = 010100112  ;

Для адреса сети:

64  = 01000000
  10          2  ;

В результате поразрядной конъюнкции имеем:

 & 01010011
---********--
   01000000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0.

Значит, на третьем месте слева месте может стоять как 0, так и 1. Так как нужно выбрать максимальное значение, запишем там 1. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111000002  .

Маска не может начинаться с 0, поэтому окончательный ответ: 11100000  = 224
       2      10  .

Решение Python:

Нам дан IP-адрес узла 91.144.83.48  и известно, что адрес сети равен 91.144.64.0  . По определению, адрес сети получается применением поразрядной конъюнкции (логического И) между IP-адресом и маской. Неизвестно, какая именно маска подходит, поэтому будем перебирать все возможные длины маски от 1  до 32  .

Для каждой маски создаём объект сети с помощью функции ip_network(). Задаём IP-адрес и длину маски, при этом параметр strict=0 позволяет использовать адрес хоста, а не только сетевой адрес. После этого у полученного объекта можно вывести сам сетевой адрес и маску, чтобы проверить, совпадает ли результат с требуемым 91.144.64.0  .

Таким образом, просматривая все варианты, мы находим маски, дающие сеть 91.144.64.0  . Из них выбираем ту, у которой третий слева байт маски принимает наибольшее значение. Это и будет искомый ответ задачи.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и масками

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаём объект сети с данным IP-адресом и текущей маской
    # Параметр strict=0 позволяет использовать IP, даже если он не сетевой
    net = ip_network(f’91.144.83.48/{mask}’, 0)

    # Выводим для проверки адрес сети и соответствующую маску
    print(net, net.netmask)

# Среди полученных результатов находим сеть 91.144.64.0
# И выбираем ту маску, у которой третий слева байт наибольший

Ответ: 224

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

Задача 11#68764Максимум баллов за задание: 1

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

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

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

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

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

Чтобы восстановить значение третьего слева байта маски, переведем числа, располагающиеся в соответствующей позиции в IP-адресе и адресе сети, в двоичную систему счисления. Затем воспользуемся таблицей истинности для этой операции:

 

|--|--|----|
|a-|b-|a&b-|
|1 |1 | 1  |
|--|--|----|
|1-|0-|-0--|
|0-|1-|-0--|
|0 |0 | 0  |
------------

Для IP-адреса:

2710 = 000110112  ;

Для адреса сети:

24  = 00011000
  10          2  ;

В результате поразрядной конъюнкции имеем:

 & 00011011
---********--
   00011000

Если на месте ∗ стоит 1, то в этой позиции цифра в результате совпадет с цифрой в искомом слагаемом. Если же на месте ∗ стоит 0, то результат конъюнкции будет равен 0. Если на какой-то позиции в IP-адресе стоит 0, то, вообще говоря, нельзя однозначно определить, что стоит в этом месте в искомом числе - в результате конъюнкции все равно будет 0.

Значит, на шестом месте слева месте может стоять как 0, так и 1. Так как нужно выбрать максимальное значение, запишем там 1. В маске в двоичном коде сначала стоят все единицы, а потом все нули, поэтому искомое число имеет вид 111111002  .

Маска не может начинаться с 0, поэтому окончательный ответ: 11111100  = 252
       2      10  .

Решение Python:

Чтобы определить маску подсети, при которой IP-адрес 178.32.27.129  даёт сетевой адрес 178.32.24.0  , нужно вспомнить, что адрес сети получается в результате поразрядной конъюнкции между IP-адресом и маской. Так как точная маска неизвестна, будем перебирать все возможные длины маски от 1  до 32  .

Для каждой маски создаём объект сети с помощью функции ip_network(), передавая в неё данный IP-адрес и длину маски. Параметр strict=0 разрешает использовать произвольный IP-адрес хоста, а не только сетевой. После этого у объекта можно вывести сетевой адрес и маску. Просматривая результаты, находим ту маску, которая даёт сеть 178.32.24.0  .

Далее среди всех найденных вариантов выбираем ту маску, у которой третий слева байт (то есть третий октет) имеет наибольшее возможное значение. Именно этот байт и требуется записать в ответ.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и масками

# Перебираем все возможные длины маски от 1 до 32
for mask in range(1, 33):
    # Создаём объект сети для IP-адреса 178.32.27.129 с текущей маской
    # Параметр strict=0 позволяет работать с адресом хоста
    net = ip_network(f’178.32.27.129/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы проверить совпадение с 178.32.24.0
    print(net, net.netmask)

# В результате ищем строку с сетью 178.32.24.0
# Из подходящих вариантов выбираем маску, где третий байт максимален

Ответ: 252

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

Задача 12#69504Максимум баллов за задание: 1

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

Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Например, если IP-адрес узла равен 121.32.255.121, а маска равна 255.255.255.0, то адрес сети равен 121.32.255.0.

Для узла с IP-адресом 204.185.106.48 адрес сети равен 204.185.96.0. Найдите наименьшее возможное количество единиц в двоичной записи маски подсети.

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

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

Перепишем IP-адрес узла и адрес сети в двоичной системе счисления:

IP 11001100.10111001.01101010.00110000
Net 11001100.10111001.01100000.00000000

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

Mask 11111111.11111111.111*0000.00000000
IP 11001100.10111001.01101010.00110000
Net 11001100.10111001.01100000.00000000

Так как по условию задачи нам необходимо найти наименьшее количество единиц, то на пустое место поставим ноль.

Получим маску подсети – 11111111.11111111.11100000.00000000. Количество единиц в ней равно 19.

Решение Python:

Чтобы найти наименьшее возможное количество единиц в двоичной записи маски подсети, необходимо перебрать все возможные варианты длины маски от 0  до 32  . Напомним, что адрес сети получается в результате поразрядной конъюнкции (логического И) между IP-адресом и маской.

В Python это удобно реализовать с помощью функции ip_network() из модуля ipaddress. Она позволяет задать IP-адрес узла и длину маски. Параметр strict=0 используется для того, чтобы можно было передавать не сетевой адрес, а обычный адрес узла.

Далее для каждой маски вычисляем адрес сети и сравниваем его с заданным в условии (204.185.96.0  ). Среди всех подходящих вариантов выбираем тот, у которого количество единиц в маске минимально. Это значение и будет ответом.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и масками

# Перебираем все возможные длины маски от 0 до 32
for mask in range(33):
    # Создаём объект сети для IP-адреса 204.185.106.48 с текущей маской
    # Параметр strict=0 позволяет использовать произвольный адрес узла, а не только сетевой
    net = ip_network(f’204.185.106.48/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы проверить совпадение с 204.185.96.0
    print(net, net.netmask)

# В результате находим строку с сетью 204.185.96.0
# Из всех таких масок выбираем ту, у которой количество единиц в двоичной записи минимально

Ответ: 19

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

Задача 13#71800Максимум баллов за задание: 1

В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.

Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.

Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.

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

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

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

Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:

184  = 10111000
   10          2

17610 = 101100002

Заметим, что в 1, 3 и 4 слева битах маски должна стоять единица, чтобы в первом, третьем и четвертом битах адреса сети была единица, а в 5 слева бите – ноль, так как в ip-адресе там стоит единица, а в адресе сети ноль. И так как в маске сначала идут единицы, а потом одни нули, третий байт будет равен 111100002 = 24010  .

Решение Python:

Чтобы найти третий байт маски, нужно понять, какая часть IP-адреса относится к сети. Адрес сети получается, если каждую цифру IP-адреса сравнивать с маской и оставлять только те цифры, где в маске стоит 1 (логическое И).

Идея решения очень простая: мы перебираем все возможные маски от 0 до 32 единиц. Для каждой маски создаём «сетевой объект» с помощью ip_network() из Python. Параметр strict=0 нужен, чтобы можно было использовать обычный IP-адрес узла, а не только адрес сети.

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

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все возможные маски длиной от 0 до 32 бит
for mask in range(33):
    # Создаём сеть для IP 199.88.184.57 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, не только сетевой
    net = ip_network(f’199.88.184.57/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы увидеть, какая маска даёт нужный адрес сети
    print(net, net.netmask)

# После просмотра выводов находим сеть 199.88.176.0
# Третий байт маски в этой строке — это и будет ответ

Ответ: 240

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

Задача 14#71806Максимум баллов за задание: 1

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

Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.

Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.

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

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

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

Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:

184  = 10111000
   10          2

16010 = 101000002

Заметим, что в 3 слева бите маски должна стоять единица, чтобы в третьем бите адреса сети была единица, а в 4 слева бите – ноль, так как в ip-адресе там стоит единица, а в адресе сети ноль. И так как в маске сначала идут единицы, а потом одни нули, третий байт будет равен 111000002 = 22410  .

Решение Python:

Чтобы найти третий байт маски, нужно понять, какая часть IP-адреса относится к сети, а какая к самому компьютеру. Адрес сети получается, если каждую цифру IP-адреса сравнивать с маской и оставлять только те, где в маске стоит 1 (логическое И).

Мы перебираем все возможные длины маски от 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью ip_network() из Python. Параметр strict=0 позволяет использовать любой IP-адрес узла, а не только сетевой адрес.

Дальше для каждой маски выводим адрес сети и саму маску. Когда находим адрес сети 222.135.160.0, смотрим на третий байт маски — это и будет ответ.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все возможные маски длиной от 0 до 32 бит
for mask in range(33):
    # Создаём сеть для IP 222.135.184.200 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’222.135.184.200/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы увидеть, какая маска даёт нужный адрес сети
    print(net, net.netmask)

# После просмотра выводов находим сеть 222.135.160.0
# Третий байт маски в этой строке — это и будет ответ

Ответ: 224

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

Задача 15#71807Максимум баллов за задание: 1

В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.

Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.

Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.

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

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

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

Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:

199  = 11000111
   10          2

12810 = 100000002

Заметим, что в 1 слева бите маски должна стоять единица, чтобы в первом бите адреса сети была единица, а в 2 слева бите – ноль, так как в ip-адресе там стоит единица, а в адресе сети ноль. И так как в маске сначала идут единицы, а потом одни нули, третий байт будет равен 100000002 = 12810  .

Решение Python:

Чтобы узнать третий байт маски, нужно понять, какая часть IP-адреса принадлежит сети, а какая — компьютеру. Адрес сети получается, если каждую цифру IP-адреса сравнивать с маской и оставлять только те, где в маске стоит 1 (логическое И).

Мы проверяем все возможные длины маски от 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью ip_network() из Python. Параметр strict=0 позволяет использовать любой IP-адрес, а не только сетевой.

Дальше для каждой маски выводим адрес сети и саму маску. Когда находим адрес сети 114.217.128.0, смотрим на третий байт маски — это и будет ответ.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все возможные маски длиной от 0 до 32 бит
for mask in range(33):
    # Создаём сеть для IP 114.217.199.111 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’114.217.199.111/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы увидеть, какая маска даёт нужный адрес сети
    print(net, net.netmask)

# После просмотра выводов находим сеть 114.217.128.0
# Третий байт маски в этой строке — это и будет ответ

Ответ: 128

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

Задача 16#72216Максимум баллов за задание: 1

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

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

Для узла с IP-адресом 147.36.148.86 адрес сети равен 147.36.128.0. Для скольких значений третьего слева байта маски допустим такой адрес сети?

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

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

Запишем третий слева байт IP-адреса в двоичной системе счисления: 10010100  .

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

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

Мы знаем, что в маске сначала идут единицы, затем нули. Значит, возможно вставить всего три различных варианта вместо «хх»: 00, 10, 11.

Решение Python:

Нам нужно узнать, сколько разных масок дают одинаковый адрес сети 147.36.128.0 при изменении третьего байта. Адрес сети формируется, когда каждый байт IP-адреса сравнивается с маской: там, где маска имеет 1, цифра остаётся, где 0 — обнуляется.

Мы перебираем все возможные варианты маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только сетевой.

Дальше для каждой маски выводим адрес сети и саму маску. После просмотра выводов считаем, сколько разных масок дают сеть 147.36.128.0.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все возможные маски с количеством единиц от 0 до 32
for mask in range(33):
    # Создаём сетевой объект для IP 147.36.148.86 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’147.36.148.86/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы увидеть, какие маски дают нужный адрес сети
    print(net, net.netmask)

# После просмотра выводов считаем, сколько различных масок дают сеть 147.36.128.0
# Это и будет ответ

Ответ: 3

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

Задача 17#72217Максимум баллов за задание: 1

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

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

Для узла с IP-адресом 130.110.203.197 адрес сети равен 130.110.203.196. Какое минимальное количество единиц может быть в маске сети?

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

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

Запишем четвертый слева байт IP-адреса в двоичной системе счисления: 19710 = 110001012  .

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

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

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

Решение Python:

Нам нужно найти минимальное количество единиц в маске, которое даёт нужный адрес сети 130.110.203.196. Адрес сети получается, когда IP-адрес сравнивается с маской: там, где маска равна 1, цифра остаётся, а там, где 0 — обнуляется.

Мы будем проверять все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.

Для каждой маски выводим адрес сети и саму маску. После этого смотрим, при какой маске адрес сети совпадает с 130.110.203.196. Среди всех таких масок выбираем ту, где количество единиц минимальное.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все маски с количеством единиц от 0 до 32
for mask in range(33):
    # Создаём сетевой объект для IP 130.110.203.197 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’130.110.203.197/{mask}’, 0)

    # Выводим адрес сети и маску, чтобы увидеть, при какой маске получается нужный адрес сети
    print(net, net.netmask)

# После просмотра выводов выбираем минимальное количество единиц в маске, при котором сеть равна 130.110.203.196
# Это и будет ответ

Ответ: 30

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

Задача 18#72218Максимум баллов за задание: 1

В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее 232  ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.

Маска определяет, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырех байт, причем каждый байт записывается в виде десятичного числа.

Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.

Для узла с IP-адресом 25.74.172.28 адрес сети равен 25.74.160.0. Найдите наименьшее возможное количество нулей в двоичной записи маски подсети.

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

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

Запишем третий слева байт IP-адреса в двоичной системе счисления: 17210 = 101011002  .

Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: 160   = 10100000
  10          2  .

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

Так как по условию задачи нам необходимо найти минимальное количество нулей, то на место символа «x» ставим цифру 1. Получаем искомое количество нулей: 4+ 8 = 12  .

Решение Python:

Нам нужно найти наименьшее количество нулей в маске, которое даёт адрес сети 25.74.160.0. Маска показывает, какие части IP-адреса остаются без изменений (единицы), а какие обнуляются (нули). Количество нулей — это просто 32 минус количество единиц в маске.

Мы будем проверять все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.

Для каждой маски выводим адрес сети и количество нулей в маске, чтобы видеть, при какой маске получается нужный адрес сети. После этого выбираем минимальное количество нулей среди всех подходящих масок.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все маски с количеством единиц от 0 до 32
for mask in range(33):
    # Создаём сетевой объект для IP 25.74.172.28 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’25.74.172.28/{mask}’, 0)

    # Выводим адрес сети и количество нулей в маске
    # bin(int(net.netmask))[2:].zfill(32) превращает маску в 32-битную двоичную строку
    # .count(’0’) считает количество нулей
    print(net, bin(int(net.netmask))[2:].zfill(32).count(’0’))

# После просмотра выводов выбираем минимальное количество нулей в маске, при котором сеть равна 25.74.160.0
# Это и будет ответ

Ответ: 12

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

Задача 19#72224Максимум баллов за задание: 1

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

Для узла с IP-адресом 210.210.230.65 адрес сети равен 210.210.224.0.

Найдите наименьшее возможное количество нулей в двоичной записи маски подсети.

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

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

Запишем третий и четвертый слева байты IP-адреса в двоичной системе счисления: 23010 = 111001102  , 65  = 01000001
  10          2

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

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

Так как по условию задачи нам необходимо найти наименьшее количество нулей, то на место символа «x» ставим цифру 1. Получаем искомое количество нулей: 3+ 8 = 11  .

Решение Python:

Нам нужно найти наименьшее количество нулей в маске, которое даёт адрес сети 210.210.224.0. Маска показывает, какие части IP-адреса остаются неизменными (единицы), а какие обнуляются (нули). Количество нулей можно посчитать как 32 минус количество единиц в маске.

Мы проверяем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.

Для каждой маски выводим адрес сети и количество нулей в маске, чтобы увидеть, при какой маске получается нужный адрес сети. После просмотра выводов выбираем минимальное количество нулей среди всех подходящих масок.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все маски с количеством единиц от 0 до 32
for mask in range(33):
    # Создаём сетевой объект для IP 210.210.230.65 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’210.210.230.65/{mask}’, 0)

    # Выводим адрес сети и количество нулей в маске
    # bin(int(net.netmask))[2:].zfill(32) превращает маску в 32-битную двоичную строку
    # .count(’0’) считает количество нулей
    print(net, bin(int(net.netmask))[2:].zfill(32).count(’0’))

# После просмотра выводов выбираем минимальное количество нулей в маске, при котором сеть равна 210.210.224.0
# Это и будет ответ

Ответ: 11

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

Задача 20#72225Максимум баллов за задание: 1

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

Для узла с IP-адресом 135.121.69.38 адрес сети равен 135.121.64.0.

Найдите наибольшее возможное значение третьего слева байта маски.

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

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

Решение Python:

Нам нужно найти наибольшее возможное значение третьего байта маски, которое даёт адрес сети 135.121.64.0. Маска показывает, какие части IP-адреса остаются неизменными (единицы), а какие обнуляются (нули). Третий байт маски особенно важен, так как именно он влияет на формирование нужной сети в третьем октете.

Мы проверяем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.

Для каждой маски выводим адрес сети и маску. Затем ищем среди всех подходящих вариантов сеть 135.121.64.0 и смотрим, какое максимальное значение третьего байта маски встречается. Это значение и будет ответом.

from ipaddress import ip_network  # Импортируем модуль для работы с IP-адресами и сетями

# Перебираем все маски с количеством единиц от 0 до 32
for mask in range(33):
    # Создаём сетевой объект для IP 135.121.69.38 с текущей маской
    # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети
    net = ip_network(f’135.121.69.38/{mask}’, 0)

    # Выводим адрес сети и маску
    # Позже нужно будет проверить третий байт маски для сети 135.121.64.0
    print(net, net.netmask)

# После просмотра выводов выбираем наибольшее значение третьего байта маски для сети 135.121.64.0
# Это и будет ответ

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

Запишем третий слева байт IP-адреса в двоичной системе счисления: 6910 = 010001012  .

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

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

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

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