04 Определение маски
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 191.173.145.240 адрес сети равен 191.173.144.0. Для скольких значений третьего слева байта маски допустим такой адрес сети?
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Мы знаем, что в маске сначала идут единицы, затем нули. Значит, возможно вставить всего четыре различных варианта вместо «ххx»: 000, 100, 110, 111.
Решение Python:
Нам нужно определить, для скольких вариантов третьего байта маски возможен адрес сети 191.173.144.0. Маска показывает, какие части IP-адреса остаются неизменными (единицы), а какие обнуляются (нули). Третий байт особенно важен, так как именно он формирует нужный диапазон в третьем октете.
Мы проверяем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.
Для каждой маски выводим адрес сети и маску. Затем ищем среди всех вариантов сеть 191.173.144.0 и считаем, сколько различных масок дают этот адрес сети. Это число и будет ответом.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 191.173.145.240 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’191.173.145.240/{mask}’, 0) # Выводим адрес сети и маску # Позже нужно будет проверить, сколько вариантов дают сеть 191.173.144.0 print(net, net.netmask) # После просмотра выводов считаем количество масок, для которых сеть равна 191.173.144.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 115.200.200.27 адрес сети равен 115.200.192.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как значение должно быть наименьшее, то вместо символов «x» ставим 0. Получаем значение третьего слева
байта маски: .
Решение Python:
Нам необходимо найти наименьшее возможное значение третьего байта маски, при котором адрес сети равен 115.200.192.0. Маска определяет, какие части IP-адреса остаются неизменными (единицы), а какие обнуляются (нули). Третий байт особенно важен, так как именно он формирует диапазон третьего октета адреса сети.
Мы перебираем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.
Для каждой маски выводим адрес сети и саму маску. Затем ищем среди всех вариантов сеть 115.200.192.0 и выбираем ту маску, у которой третий байт минимален. Это и будет ответ на задачу.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 115.200.200.27 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’115.200.200.27/{mask}’, 0) # Выводим адрес сети и маску # Позже нужно будет выбрать маску с минимальным значением третьего байта для сети 115.200.192.0 print(net, net.netmask) # После просмотра выводов выбираем наименьший третий байт среди масок, которые дают сеть 115.200.192.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 17.124.112.16 адрес сети равен 17.124.64.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение руками:
Переведём числа в двоичную систему счисления.
IP | 112 | 01110000 |
Net | 64 | 01000000 |
Так как адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске, то получаем, что маска равна .
Решение Python:
Необходимо определить третий байт маски подсети, при котором адрес сети для узла 17.124.112.16 равен 17.124.64.0. Маска подсети показывает, какие части IP-адреса остаются неизменными (единицы), а какие обнуляются (нули). Третий байт особенно важен, так как именно он формирует диапазон третьего октета адреса сети.
Мы перебираем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из библиотеки ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.
Для каждой маски выводим адрес сети и саму маску. Затем среди всех вариантов ищем сеть 17.124.64.0 и берём третий байт маски в качестве ответа.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 17.124.112.16 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’17.124.112.16/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 17.124.64.0 # И записываем третий байт маски в ответ print(net, net.netmask) # После просмотра выводов выбираем третий байт маски, который соответствует сети 17.124.64.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 210.15.68.15 адрес сети равен 210.15.64.0. Определите максимально возможное количество масок.
Решение руками:
Так как отличия IP-адреса и адреса сети начинается с третьего байта, то переведём числа в двоичную
систему счисления.
IP | 68 | 01000100 |
Net | 64 | 01000000 |
Так как адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске, то получаем, что третий байт маски может выглядеть как набор битов: , где на месте
может
стоять как 0, так и единица.
На место можно поставить комбинации:
. Всего возможных вариантов масок –
4.
Решение Python:
Нам необходимо определить, для скольких масок адрес сети узла 210.15.68.15 будет равен 210.15.64.0. Адрес сети формируется поразрядной конъюнкцией (логическое И) IP-адреса и маски подсети. Маска указывает, какие биты IP-адреса остаются неизменными (единицы), а какие обнуляются (нули).
Идея решения заключается в переборе всех возможных масок с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, даже если он не совпадает с адресом сети.
После создания объекта сети для каждой маски выводим адрес сети и саму маску. Затем среди всех вариантов ищем те, где адрес сети равен 210.15.64.0, и подсчитываем количество таких масок. Это и будет максимально возможное количество масок, при которых адрес сети остаётся 210.15.64.0.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 210.15.68.15 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’210.15.68.15/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем все сети 210.15.64.0 # и считаем количество масок, для которых сеть совпадает print(net, net.netmask) # После просмотра выводов подсчитываем количество масок, дающих сеть 210.15.64.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 20.105.130.175 адрес сети равен 20.105.128.0. Определите максимально возможное количество масок.
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления: .
Так как адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске, то третий слева байт маски маска имеет вид: , где на месте
может стоять как 1, так и
0.
Комбинации, которые можно поставить на место равны: 00000, 10000, 11000, 11100, 11110, 11111. Итого,
возможно 6 вариантов масок.
Решение Python:
Нам необходимо определить, для скольких масок адрес сети узла 20.105.130.175 будет равен 20.105.128.0. Адрес сети формируется поразрядной конъюнкцией (логическое И) IP-адреса и маски подсети. Маска показывает, какие биты IP-адреса остаются фиксированными (единицы), а какие обнуляются (нули).
Для нахождения максимального количества таких масок используем перебор всех возможных масок от 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
Далее выводим адрес сети и саму маску. Среди всех вариантов выбираем те, где адрес сети совпадает с 20.105.128.0, и подсчитываем количество таких масок. Это и будет максимально возможное количество масок, при которых адрес сети остаётся 20.105.128.0.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 20.105.130.175 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’20.105.130.175/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем все сети 20.105.128.0 # и считаем количество масок, для которых сеть совпадает print(net, net.netmask) # После просмотра выводов подсчитываем количество масок, дающих сеть 20.105.128.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 140.127.80.1 адрес сети равен 140.127.64.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления: .
Так как адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске, то маска имеет вид: , где
может быть как 0, так и 1. Так как в условии требуется наибольшее
возможное значение, то вместо
поставим значение 1. Получаем значение
Решение Python:
Нам нужно определить наибольшее возможное значение третьего байта маски, при котором адрес сети узла 140.127.80.1 будет равен 140.127.64.0. Адрес сети формируется поразрядной конъюнкцией (логическое И) IP-адреса и маски подсети. Маска показывает, какие биты IP-адреса остаются фиксированными (единицы), а какие обнуляются (нули).
Для нахождения нужной маски используем перебор всех возможных масок от 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
Далее выводим адрес сети и маску. Среди всех вариантов ищем ту, где адрес сети совпадает с 140.127.64.0. Среди подходящих масок выбираем ту, у которой значение третьего байта маски наибольшее. Это и будет ответ.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 140.127.80.1 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’140.127.80.1/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 140.127.64.0 # и определяем маску, у которой третий байт наибольший print(net, net.netmask) # После просмотра выводов находим максимальное значение третьего байта маски # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 192.168.5.17, а маска равна 255.255.255.0, то адрес сети равен 192.168.5.0.
Для узла с IP-адресом 18.113.222.5 адрес сети равен 18.113.220.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления: .
Так как адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске, то маска имеет вид: .
Решение Python:
Нам необходимо определить третий байт маски, при котором адрес сети для узла с IP-адресом 18.113.222.5 будет равен 18.113.220.0. Адрес сети вычисляется поразрядной конъюнкцией IP-адреса и маски, где единицы маски сохраняют соответствующие биты IP, а нули обнуляют.
Для нахождения нужной маски используем полный перебор всех возможных масок с 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
Далее выводим адрес сети и маску. Среди всех вариантов находим те, где адрес сети совпадает с 18.113.220.0. В ответ записываем значение третьего байта маски для подходящей сети.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 18.113.222.5 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’18.113.222.5/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 18.113.220.0 # и определяем третий байт маски print(net, net.netmask) # После просмотра выводов находим значение третьего байта маски # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 106.73.156.100 адрес сети равен 106.73.152.0. Определите значение третьего слева байта маски сети.
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления:
Найдём маску сети, используя информацию о том, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске:
IP | 10011100 |
Mask | 11111000 |
Net | 10011000 |
Переведем значение байта маски из двоичной системы в десятичную: .
Решение Python:
Нам нужно определить третий байт маски сети для узла с IP-адресом 106.73.156.100, чтобы адрес сети получился равным 106.73.152.0. Адрес сети вычисляется поразрядной конъюнкцией (логическое И) IP-адреса и маски: единицы маски сохраняют соответствующие биты IP, а нули обнуляют.
Для нахождения подходящей маски используем метод перебора всех возможных масок с 0 до 32 единиц. Для каждой маски создаём сетевой объект с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
Выводим адрес сети и маску. Среди всех вариантов находим те, где адрес сети совпадает с 106.73.152.0. В ответ записываем значение третьего байта маски для подходящей сети.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 106.73.156.100 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’106.73.156.100/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 106.73.152.0 # и определяем третий байт маски print(net, net.netmask) # После просмотра выводов находим значение третьего байта маски # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 186.153.196.175 адрес сети равен 186.153.192.0. Для скольких значений третьего слева байта маски допустим такой адрес сети?
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления:
Найдём маску сети, используя информацию о том, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске:
IP | 11000100 |
Mask | 11***000 |
Net | 11000000 |
В таблице «*» обозначены места, где может стоять как 0, так и 1. Возможные комбинации символов «***»: 111, 110, 100, 000. Всего 4 варианта.
Решение Python:
Нам требуется определить, для скольких значений третьего байта маски сети адрес сети для узла с IP-адресом 186.153.196.175 будет равен 186.153.192.0. Адрес сети получается поразрядной конъюнкцией (логическое И) IP-адреса и маски: единицы маски сохраняют соответствующие биты IP-адреса, а нули обнуляют.
Чтобы найти подходящие маски, используем полный перебор всех масок с количеством единиц от 0 до 32. Для каждой маски создаём объект сети с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
После этого выводим адрес сети и маску. Среди всех вариантов ищем те, где адрес сети совпадает с 186.153.192.0. Подсчитываем количество таких масок, чтобы определить, для скольких значений третьего байта маски это возможно.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 186.153.196.175 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’186.153.196.175/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 186.153.192.0 # и подсчитываем количество подходящих масок print(net, net.netmask) # После просмотра выводов определяем количество масок, дающих сеть 186.153.192.0 # Это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 175.250.134.39 адрес сети равен 175.250.128.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как значение должно быть наибольшее, то вместо символов «x» ставим 1. Получаем значение третьего слева
байта маски: .
Решение Python:
Нам нужно определить наибольшее возможное значение третьего байта маски сети, при котором адрес сети для узла с IP-адресом 175.250.134.39 равен 175.250.128.0. Адрес сети вычисляется поразрядной конъюнкцией (логическое И) IP-адреса и маски: единицы маски сохраняют соответствующие биты IP-адреса, а нули обнуляют.
Для нахождения нужной маски удобно перебрать все варианты количества единиц в маске от 0 до 32. Для каждой маски создаём объект сети с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
После этого выводим адрес сети и маску. Среди всех вариантов ищем те, где адрес сети совпадает с 175.250.128.0. Среди этих подходящих масок выбираем ту, у которой третий байт маски имеет наибольшее значение.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 175.250.134.39 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’175.250.134.39/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 175.250.128.0 # и выбираем ту маску, в которой третий байт максимальный print(net, net.netmask) # После просмотра выводов определяем маску с сетью 175.250.128.0, # у которой третий байт наибольший — это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети
относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же
правилам, что и IP-адрес – в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 212.65.145.167 адрес сети равен 212.65.144.0. Какое минимальное количество единиц может быть в маске сети?
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как по условию задачи нам необходимо найти минимальное количество единиц, то на место символа «x» ставим
цифру 0. Получаем искомое количество единиц: .
Решение Python:
Нам нужно определить минимальное количество единиц в маске сети, при которой адрес сети для узла с IP-адресом 212.65.145.167 равен 212.65.144.0. Адрес сети вычисляется поразрядной конъюнкцией (логическое И) IP-адреса и маски: единицы маски сохраняют соответствующие биты IP-адреса, а нули обнуляют.
Для нахождения минимального количества единиц удобно перебрать все варианты количества единиц в маске от 0 до 32. Для каждой маски создаём объект сети с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
После этого выводим адрес сети и маску. Среди всех вариантов ищем те, где адрес сети совпадает с 212.65.144.0. Среди этих подходящих масок выбираем ту, в которой количество единиц (значение после /) минимальное.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 212.65.145.167 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’212.65.145.167/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 212.65.144.0 # и выбираем ту маску, где количество единиц минимальное print(net, net.netmask) # После просмотра выводов определяем маску с сетью 212.65.144.0, # у которой количество единиц минимальное — это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 215.119.119.160 адрес сети равен 215.119.119.128 Определите максимальную сумму цифр в двоичной записи маски сети.
В ответе укажите только число.
Решение руками:
Переведем IP-адрес узла и адрес сети в двоичную систему счисления и распишем чему равна маска сети:
IP | 11010111.01110111.01110111.10100000 |
Mask | 11111111.11111111.11111111.1x000000 |
Net | 11010111.01110111.01110111.10000000 |
Как мы видим, в маске стоит символ «x», который означает, что на этом месте может стоять как 1, так и 0. Так как
нам нужна максимальная сумма цифр, то количество единиц должно быть максимально. То есть, маска сети равна
. Сумма цифр в ней –
.
Решение Python:
Нам нужно определить максимальную сумму цифр в двоичной записи маски сети для узла с IP-адресом 215.119.119.160, при котором адрес сети равен 215.119.119.128. Поскольку маска сети состоит только из единиц и нулей, сумма всех цифр в двоичной записи маски равна количеству единиц в ней.
Для нахождения этой величины удобно перебрать все возможные маски от 0 до 32 единиц. Для каждой маски создаём объект сети с помощью функции ip_network() из модуля ipaddress. Параметр strict=0 позволяет использовать любой IP-адрес, а не только адрес сети.
Затем выводим адрес сети и маску. Среди всех вариантов выбираем те, где адрес сети совпадает с 215.119.119.128. Максимальная сумма цифр будет соответствовать маске с наибольшим количеством единиц (значение после /), которая удовлетворяет этому условию.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 215.119.119.160 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’215.119.119.160/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 215.119.119.128 # и выбираем ту маску с наибольшим количеством единиц print(net, net.netmask) # После просмотра выводов определяем маску с сетью 215.119.119.128, # у которой количество единиц максимальное — это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 16.153.206.18 адрес сети равен 16.153.200.0. Определите значение третьего слева байта маски сети.
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления:
Найдём маску сети, используя информацию о том, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске:
IP | 11001110 |
Mask | 11111000 |
Net | 11001000 |
Переведем значение байта маски из двоичной системы в десятичную: .
Решение Python:
Нам нужно определить значение третьего слева байта маски сети для узла с IP-адресом 16.153.206.18, при котором адрес сети равен 16.153.200.0. Адрес сети вычисляется применением поразрядной конъюнкции (логического И) между IP-адресом и маской.
Для удобства работы с IP-адресами и масками в Python используется модуль ipaddress. Мы можем перебрать все возможные маски от 0 до 32 единиц. Для каждой маски создаём объект сети с помощью функции ip_network(). Параметр strict=0 позволяет не ограничивать IP-адрес строго адресом сети.
Далее выводим все варианты адресов сети и масок. Среди этих вариантов ищем сеть 16.153.200.0 и определяем значение третьего байта маски, соответствующей этой сети. Это и будет ответ на задачу.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 16.153.206.18 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’16.153.206.18/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 16.153.200.0 # и определяем значение третьего байта маски print(net, net.netmask) # После просмотра выводов находим сеть 16.153.200.0 # и читаем значение третьего байта маски сети — это и будет ответ
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 13.208.226.17 адрес сети равен 13.208.224.0. Для скольких значений третьего слева байта маски допустим такой адрес сети?
Решение руками:
Переведем третий слева байт IP-адреса и адреса сети в двоичную систему счисления:
Найдём маску сети, используя информацию о том, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске:
IP | 11100010 |
Mask | 111***00 |
Net | 11100000 |
В таблице «*» обозначены места, где может стоять как 0, так и 1. Возможные комбинации символов «***»: 111, 110, 100, 000. Всего 4 варианта.
Решение Python:
Нам требуется определить, для скольких значений третьего слева байта маски сети адрес сети узла 13.208.226.17 будет равен 13.208.224.0. Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) IP-адреса и маски.
Для удобства используем модуль ipaddress в Python. Мы перебираем все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём сетевой объект с помощью ip_network(). Параметр strict=0 позволяет не ограничивать IP-адрес строго адресом сети, что удобно при переборе.
Далее выводим все варианты адресов сети и соответствующих масок. Среди этих вариантов ищем сеть 13.208.224.0. Количество различных масок, при которых третьи байт сети равен 224, и будет ответом на задачу.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 13.208.226.17 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’13.208.226.17/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 13.208.224.0 # и подсчитываем количество различных масок, для которых третий байт равен 224 print(net, net.netmask) # После просмотра выводов считаем количество масок, для которых третье число сети = 224 # Это и будет ответ на задачу
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 128.225.157.50 адрес сети равен 128.225.128.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как значение должно быть наибольшее, то вместо символов «x» ставим 1. Получаем значение третьего слева
байта маски: .
Решение Python:
Нам нужно определить наибольшее возможное значение третьего слева байта маски сети, при котором адрес сети для IP 128.225.157.50 будет равен 128.225.128.0. Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) между IP-адресом и маской.
Для решения удобно использовать модуль ipaddress в Python. Идея заключается в переборе всех возможных масок от 0 до 32 единиц. Для каждой маски создаём объект сети с помощью ip_network(). Параметр strict=0 позволяет не ограничивать IP-адрес строго адресом сети, что удобно для перебора.
После этого выводим все варианты адресов сети и соответствующих масок. Среди этих вариантов ищем сеть 128.225.128.0. Из этих масок выбираем ту, у которой третий слева байт маски имеет наибольшее значение. Это значение и будет ответом на задачу.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 128.225.157.50 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’128.225.157.50/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 128.225.128.0 # и выбираем наибольшее значение третьего байта маски print(net, net.netmask) # После просмотра выводов выбираем маску с наибольшим третьим байтом # Это и будет ответ на задачу
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Два узла, находящиеся в разных подсетях, имеют IP-адреса 228.86.222.161 и 228.86.222.234. В масках обеих подсетей одинаковое количество единиц.
Укажите наименьшее возможное количество единиц в масках этих подсетей.
Решение руками:
Первые три байта обоих IP-адресов совпадают, поэтому маски имеют вид:
Запишем четвертый слева байты IP-адресов в двоичной системе счисления:
.
Различия начинаются со второго бита, поэтому маска будет иметь вид:
и минимальное число единиц равно .
Решение Python:
Нам требуется найти наименьшее возможное количество единиц в масках подсетей для двух узлов с IP-адресами 228.86.222.161 и 228.86.222.234, чтобы они находились в разных подсетях, при условии, что количество единиц в обеих масках одинаковое.
Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) между IP-адресом и маской. Если два IP-адреса попадают в одну сеть при некоторой маске, значит, их адреса сети совпадают. Чтобы узлы были в разных подсетях, необходимо найти минимальное количество единиц в маске, при котором сети для этих адресов различны.
Для решения удобно использовать модуль ipaddress в Python. Мы перебираем все маски от 0 до 32 единиц. Для каждой маски создаём объекты сетей с помощью ip_network(). Параметр strict=0 позволяет не ограничивать IP-адрес строго адресом сети, что удобно для перебора.
На каждом шаге проверяем, совпадают ли созданные сети. Если сети различны, это минимальная маска, удовлетворяющая условию, и её количество единиц выводим как ответ.
from ipaddress import * # Импортируем модуль для работы с IP-адресами и сетями # Задаем IP-адреса двух узлов ip1 = ip_address(’228.86.222.161’) ip2 = ip_address(’228.86.222.234’) # Перебираем все возможные маски с количеством единиц от 0 до 32 for mask in range(33): # Создаем сетевые объекты для каждого IP-адреса с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net1 = ip_network(f’{ip1}/{mask}’, 0) net2 = ip_network(f’{ip2}/{mask}’, 0) # Проверяем, находятся ли IP-адреса в разных подсетях # Если сети не равны, значит маска минимальна для разделения узлов if net1 != net2: print(f’{mask}’) # Выводим минимальное количество единиц break
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу
сети, а какая – к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 1.100.224.252 адрес сети равен 1.100.224.0. Для скольких различных значений маски это возможно?
Решение руками:
Найдём маску сети, используя информацию о том, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске:
IP | 00000001.01100100.11100000.11111100 |
Mask | 11111111.11111111.111xxxxx.00000000 |
Net | 00000001.01100100.11100000.00000000 |
Возможные варианты того, что можно поставить на место символов «xxxxx»: 00000, 10000, 11000, 11100, 11110, 11111. Всего их 6 штук.
Решение Python:
Необходимо определить, для скольких различных масок сети IP-адрес 1.100.224.252 даст адрес сети 1.100.224.0. Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) между IP-адресом узла и маской сети. Если при применении маски к данному IP-адресу получается нужный адрес сети, маска считается допустимой.
Для решения удобно использовать модуль ipaddress в Python. Мы будем перебирать все возможные маски от 0 до 32 единиц. Для каждой маски создаём объект сети с помощью ip_network(). Параметр strict=0 позволяет использовать IP-адрес узла, а не только адрес сети.
На каждом шаге проверяем, совпадает ли адрес сети с требуемым. Если совпадает, учитываем эту маску как подходящую. В конце подсчёта получаем количество всех возможных масок, которые дают нужный адрес сети.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все возможные маски с количеством единиц от 0 до 32 for mask in range(33): # Создаем сетевой объект для IP-адреса с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’1.100.224.252/{mask}’, 0) # Выводим сеть и маску для проверки # Позже ищем среди них сети, равные 1.100.224.0 print(net, net.netmask)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.
Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.
Для узла с IP-адресом 205.114.189.57 адрес сети равен 205.114.160.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение руками:
Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:
Заметим, что в 1 и 3 слева битах маски должна стоять единица, чтобы в первом и третьем битах адреса сети была
единица, а в 4 слева бите – ноль, так как в ip-адресе там стоит единица, а в адресе сети ноль. И так как в маске сначала
идут единицы, а потом одни нули, третий байт будет равен .
Решение Python:
Необходимо определить третий слева байт маски сети для IP-адреса 205.114.189.57, если адрес сети равен 205.114.160.0. Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) между IP-адресом узла и маской сети. Мы ищем такую маску, которая при применении к данному IP-адресу даст указанный адрес сети.
Для удобства используем модуль ipaddress в Python. Мы будем перебирать все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём объект сети с помощью ip_network(). Параметр strict=0 позволяет использовать IP-адрес узла, а не только адрес сети.
На каждом шаге выводим адрес сети и маску. После этого ищем среди них нужную сеть 205.114.160.0. Третий байт маски берём из соответствующей маски.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все возможные маски с количеством единиц от 0 до 32 for mask in range(33): # Создаем сетевой объект для IP-адреса с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’205.114.189.57/{mask}’, 0) # Выводим сеть и маску для проверки # Позже ищем среди них сеть, равную 205.114.160.0 print(net, net.netmask)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.
Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.
Для узла с IP-адресом 145.67.184.122 адрес сети равен 145.67.160.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение руками:
Рассмотрим IP-адрес узла и адрес сети, представим их в двоичном виде:
Заметим, что 19-ый слева бит маски должен быть равен 1, а 20 справа бит маски – нулю. То есть маска имеет вид:
.
Получаем третий слева байт:
Решение Python:
Необходимо определить третий слева байт маски сети для IP-адреса 145.67.184.122, если адрес сети равен 145.67.160.0. Адрес сети вычисляется с помощью поразрядной конъюнкции (логическое И) между IP-адресом узла и маской сети. Задача заключается в том, чтобы найти такую маску, которая при применении к данному IP-адресу даст указанный адрес сети.
Для удобства используем модуль ipaddress в Python. Мы будем перебирать все возможные маски с количеством единиц от 0 до 32. Для каждой маски создаём объект сети с помощью ip_network(). Параметр strict=0 позволяет использовать IP-адрес узла, а не только адрес сети.
На каждом шаге выводим адрес сети и маску. После этого ищем среди них нужную сеть 145.67.160.0. Третий байт маски берём из соответствующей маски.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все возможные маски с количеством единиц от 0 до 32 for mask in range(33): # Создаем сетевой объект для IP-адреса с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’145.67.184.122/{mask}’, 0) # Выводим сеть и маску для проверки # Позже ищем среди них сеть, равную 145.67.160.0 print(net, net.netmask)
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.
Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0.
Для узла с IP-адресом 35.92.220.29 адрес сети равен 35.92.128.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение Python:
Чтобы решить задачу, нужно перебрать все возможные маски сети от 0 до 32 и для каждой проверить, какой адрес сети получается для IP-адреса 35.92.220.29. Когда мы найдём такую маску, при которой сеть равна 35.92.128.0, останется посмотреть на соответствующую маску сети и выписать её третий слева байт в десятичной форме. Именно это число и будет ответом.
from ipaddress import ip_network # Перебираем маски for mask in range(33): # Создаем объект network net = ip_network(f"35.92.220.29/{mask}", 0) # Печатаем сеть и маску сети print(net, net.netmask) # Ищем в списке сеть 35.92.128.0 и записываем третий слева байт маски
Решение руками:
Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:
Заметим, что в 1 слева бите маски должна стоять единица, чтобы в первом бите адреса сети была единица, а в 2
слева бите – ноль, так как в ip-адресе там стоит единица, а в адресе сети ноль. И так как в маске сначала идут
единицы, а потом одни нули, третий байт будет равен .