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

В тер­ми­но­ло­гии сетей TCP/⁠IP мас­кой под­се­ти на­зы­ва­ет­ся 32-⁠раз­ряд­ное дво­ич­ное число, опре­де­ля­ю­щее, какие имен­но раз­ря­ды IP-⁠ад­ре­са ком­пью­те­ра яв­ля­ют­ся об­щи­ми для всей под­се­ти,  — в этих раз­ря­дах маски стоит 1. Обыч­но маски за­пи­сы­ва­ют­ся в виде чет­вер­ки де­ся­тич­ных чисел  — по тем же пра­ви­лам, что и IP-⁠ад­ре­са. Для не­ко­то­рой под­се­ти ис­поль­зу­ет­ся маска 255.255.248.0. Сколь­ко раз­лич­ных ад­ре­сов ком­пью­те­ров до­пус­ка­ет эта маска?

При­ме­ча­ние. На прак­ти­ке для ад­ре­са­ции ком­пью­те­ров не ис­поль­зу­ют­ся два ад­ре­са: адрес сети и ши­ро­ко­ве­ща­тель­ный адрес.

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

Ре­ше­ние.

1.  По­сколь­ку пер­вые два ок­те­та (октет  — число маски, со­дер­жит 8 бит) оба равны 255, в дво­ич­ном виде они за­пи­сы­ва­ют­ся как 16 еди­ниц, а зна­чит, пер­вые два ок­те­та опре­де­ля­ют адрес сети.

2.  За­пи­шем число 248 в дво­ич­ном виде: 248  =  111110002. В конце этого числа стоят 3 нуля, еще 8 нулей мы по­лу­ча­ем из по­след­не­го ок­те­та маски. Итого есть 11 дво­ич­ных раз­ря­дов для того, чтобы за­пи­сать адрес ком­пью­те­ра.

3.  Далее, 211  =  2048, так как два ад­ре­са не ис­поль­зу­ют­ся, по­лу­ча­ем 2048 − 2  =  2046.

 

Ответ: 2046.

 

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

from ipaddress import ip_network

from random import randint

ip = f'{randint(0,255)}.{randint(0,255)}.{randint(0,255)}.{randint(0,255)}'

mask = '255.255.248.0'

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

print(net.num_addresses-2)