Задать вопрос
@belyaevcyrill

Как преобразовать IP-адрес?

Я не очень разбираюсь в сетевых технологиях и в IP-адресации. Но часто встречаю следующее...

Например, как определить по записи 10.7.4.0/30 маску подсети, шлюз и количество машин, которые "вмещаются" в этот диапазон?

Можете показать по пунктам (по шагам) как по такой записи (IP-адрес/число) узнавать свойства сети? Шлюзы, кол-во машин и т.д.

Заранее спасибо!
  • Вопрос задан
  • 1438 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Александр К ответам на вопрос (5)
NeiroNx
@NeiroNx
Программист
addr = "10.7.4.0/30"
addr1 = addr.split('/')
hostcount = pow(2,32 - int(addr1[1]))
intmask = pow(2,32) - hostcount
dmask = [str((intmask >> (i*8)) & 0xFF) for i in range(0,4)]
dmask.reverse()
mask = ".".join(dmask)

максимальная маска это 32 бита - в бинароной записи 32 единички
дана маска 30 бит это - в бинарной записи 30 единиц и 2 нуля
максимум хостов для маски 0 это 2^32
максимум хостов для маски 30 это 2^(32-30) = 2^2 - 2 = 2
2 из них это сама подсеть и широковещательный адрес в этой подсети.
2^32 - 2^2 числовая запись маски
чтобы получить байтовую запись маски надо разбить число на 4 байта
сдвигаем по 8 бит чтобы извлечь каждый байт
Получаем маску 255.255.255.252
и количество хостов 2
https://help.keenetic.net/hc/ru/articles/213965829...
Ответ написан