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

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

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

Из­вест­но, что в со­ста­ве сети, ко­то­рой при­над­ле­жит IP-⁠адрес 149.238.225.115, есть узел, в IP-⁠ад­ре­се ко­то­ро­го пер­вый байт сов­па­да­ет с четвёртым, а вто­рой  — с тре­тьим.

Ука­жи­те наи­мень­шее воз­мож­ное ко­ли­че­ство при­над­ле­жа­щих этой сети IP-⁠ад­ре­сов, в дво­ич­ной за­пи­си ко­то­рых ровно 15 еди­ниц.

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

Ре­ше­ние.

За­пи­шем вто­рой узел, в IP-⁠⁠ад­ре­се ко­то­ро­го пер­вый байт сов­па­да­ет с четвёртым, а вто­рой  — с тре­тьим: 149.238.238.149.

Вы­пи­шем дво­ич­ное пред­став­ле­ние IP-⁠ад­ре­сов:

149.238.225.115: 10010101.11101110.11100001.01110011,

149.238.238.149: 10010101.11101110.11101110.10010101.

За­ме­тим, что IP-⁠ад­ре­са раз­ли­ча­ют­ся в тре­тьем байте слева. От­ли­чие в 5 бите слева. Со­от­вет­ствен­но, маска будет вы­гля­деть так:

255.255.240.0: 11111111.11111111.11110000.00000000.

В части IP-⁠ад­ре­сов, со­от­вет­ству­ю­щих 1 в маске со­дер­жит­ся 13 еди­ниц. По усло­вию за­да­чи, в дво­ич­ной за­пи­си IP-⁠ад­ре­сов долж­но быть ровно 15 еди­ниц. Сле­до­ва­тель­но, на остав­ши­е­ся 12 бит ад­ре­са (биты, со­от­вет­ству­ю­щие 0 в маске) долж­но при­хо­дить­ся 2 еди­ни­цы. Ко­ли­че­ство спо­со­бов рас­ста­вить 2 еди­ни­цы по 12 ме­стам равно:

 дробь: чис­ли­тель: 12 умно­жить на 11, зна­ме­на­тель: 2 конец дроби = 66.

Наи­мень­шее воз­мож­ное ко­ли­че­ство при­над­ле­жа­щих этой сети IP-⁠⁠ад­ре­сов, в дво­ич­ной за­пи­си ко­то­рых ровно 15 еди­ниц, равно 66.

 

Ответ: 66.

 

При­ме­ча­ние.

В маске после нуля идут толь­ко одни нули.

 

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

from ipaddress import ip_network, ip_address

ipu = '149.238.225.115'

ipu_modified = '149.238.238.149'

for mask in range(32, 0, -1):

network = ip_network(f'{ipu}/{mask}', 0)

count = 0

if ip_address(ipu_modified) in network:

for ip in network:

if bin(int(ip)).count('1') == 15:

count += 1

if count > 0:

print(count)

break


Аналоги к заданию № 68246: 68275 Все