@belyaevcyrill

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

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

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

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

Заранее спасибо!
  • Вопрос задан
  • 1400 просмотров
Решения вопроса 3
iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется
Комментировать
fzfx
@fzfx
18,5 дм
маска подсети тут указана в сокращённой нотации - /30. пишете на бумажке тридцать единичек и 32-30=2 ноля, переводите группами по восемь цифр из двоичной в десятичную систему и получаете запись в более привычном виде.
шлюз не определить никак.
количество машин - возводите двойку в степень 32-30=2, вычитаете один адрес как адрес сети и один адрес как широковещательный и получаете количество адресов в сети (2 в вашем случае).
Ответ написан
Комментировать
BuriK666
@BuriK666
Компьютерный псих
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D...

jodies.de/ipcalc?host=10.7.4.0&mask1=30&mask2=

Шлюзом может быть любой IP, но как правило это первый адрес: HostMin 10.7.4.1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Шлюз вы из этой записи не узнаете, его указывают отдельно при настройке компа.
1. Всего в IP адресе 4 байта (каждая из 4 цифр адреса - 1 байт), это 32 бита.
2. Последняя цифра в вашей записи - 30 (это длина маски подсети), говорит о том, что из 32 бит адреса 30 старших бит являются маской подсети. На вашем примере:
маска подсети: 10.7.4.000000 - последнюю цифру я представил в двоичной системе (первые нет смысла, т.к. они целиком входят в маску).
Маска подсети одинакова для всех узлов подсети. Для того чтобы узлы из одной сети могли обращаться к узлам другой сети нужны шлюзы. Шлюзы или непосредственно имеют адреса в обеих подсетях или используют другие промежуточные шлюзы для доступа к сетям. Так работает интернет на IP уровне.
3. Для адресации хостов в сети у вас остается 32-30=2 бита. В двух битах можно представить 4 значения: 00, 01, 10, 11. При этом меньшее и большее значение используется стеком TCP/IP для разного рода групповых адресаций и широковещательных рассылок.
Исходя из вышесказанного на адресацию хостов по вашему примеру остается только 2 значения. Т.е. в вашей подсети может быть 2 хоста.
Ответ написан
Комментировать
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...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы