Задания
Версия для печати и копирования в MS Word
Тип 13 № 7669
i

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

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

Спрятать решение

Ре­ше­ние.

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

11210  =  0111 00002;   6410  =  0100 00002.

Мас­кой сети яв­ля­ет­ся такое дво­ич­ное число, ко­то­рое при по­раз­ряд­ной конъ­юнк­ции с IP-⁠ад­ре­сом узла даст адрес сети, при этом пер­вая часть числа со­сто­ит из еди­ниц, а всё осталь­ное  — нули. Таким чис­лом яв­ля­ет­ся 1100 00002  =  19210.

 

Ответ: 192.

 

При­ведём ре­ше­ние Вла­ди­ми­ра Ар­та­мо­но­ва на языке Python.

from ipaddress import ip_network, IPv4Address

 

def normalize(n): # Функ­ция для по­лу­че­ния из дво­ич­но­го числа маску

return str(IPv4Address(int(n.ljust(32, "0"), 2)))

 

for mask in range(32): # Пе­ре­би­ра­ем маски, если под­хо­дит, то вы­во­дим тре­тий слева байт

net = ip_network(f"224.128.112.142/{mask}", strict=False)

 

if str(net.network_address) == "224.128.64.0":

mask = normalize("1" * mask)

print(mask.split(".")[2])

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

mask = [int('1'*i+'0'*(8-i),2) for i in range(9)]

print(*[m for m in mask if 112&m==64])


Аналоги к заданию № 7669: 7696 7923 7988 Все