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

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

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

Для узла с IP-⁠ад­ре­сом 98.162.201.94 адрес сети равен 98.162.192.0. Для сколь­ких раз­лич­ных зна­че­ний маски это воз­мож­но?

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

Ре­ше­ние.

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

20110  =  1100 10012,

19210  =  1100 00002.

За­ме­тим, что 3 пер­вых слева бита ад­ре­са сети сов­па­да­ют с IP-⁠ад­ре­сом, а затем идут нули. Пе­ре­чис­лим все воз­мож­ные зна­че­ния тре­тье­го байта маски, учи­ты­вая, что в маске сна­ча­ла (в стар­ших раз­ря­дах) стоят еди­ни­цы, а затем с не­ко­то­ро­го места  — нули:

1100 00002,

1110 00002,

1111 00002.

1111 10002  — не под­хо­дит, по­сколь­ку в ре­зуль­та­те конъ­юнк­ции тре­тье­го байта IP-⁠ад­ре­са и маски долж­но по­лу­чить­ся 1100 00002.

Таким об­ра­зом, для трёх раз­лич­ных зна­че­ний маски адрес сети для узла с IP-⁠ад­ре­сом 98.162.201.94 равен 98.162.192.0.

 

Ответ: 3.

 

При­ведём ре­ше­ние Ивана Но­ви­ко­ва на языке Python.

from ipaddress import *

cnt = 0

for mask in range(33):

net = ip_network(f'98.162.201.94/{mask}', 0)

if str(net.network_address) == '98.162.192.0':

cnt +=1

print(cnt)


Аналоги к заданию № 15107: 15134 15797 15824 ... Все