@tamogavk
@deni4ka

Как проверить пренадлежит ли ip-адрес определённой подсети?

Приветствую, не нашел в сети внятное объяснение тому, как определить пренадлежит ли ипи адрес определенной подсети, как найти адрес сети, броадкаст или соспоставить логическим "И" ипи и маску я знаю! Вот пример: какой подсети пренадлежит ипи 10.120.100.255/18 варианты адресов
1) 10.120.0.100
2) 10.0.0.0
3) 10.120.64.0
4) 10.120.96.0
P.S. Мне не нужно решение, мне нужен правильный алгоритм вычисления.
  • Вопрос задан
  • 11802 просмотра
Решения вопроса 2
10.120.100.255/18

Сначала представить адрес и маску в двоичном виде
00001010.01111000.01100100.11111111/11111111.11111111.11000000.00000000

Затем применить побитове "И" к маске и адресу.
00001010.01111000.01000000.00000000

Затем перевести обратно в десятичную систему.
10.120.64.0
Ответ написан
@res2001
Developer, ex-admin
18 - это длина маски сети в битах, т.е. количество единиц в битовом представлении маски.
Если представить IP 10.120.100.255 адрес в двоичной системе, получим:
0000 1010.0111 1000.0110 0100.1111 1111
Отсчитываем слева 18 бит - их оставляем как есть, остальное добиваем нулями:
0000 1010.0111 1000.0100 0000.0000 0000
Переводим в десятичную систему побайтово:
10.120.64.0 - это адрес сети.
Все IP адреса, у которых после этой процедуры получится такой адрес сети, принадлежат этой сети.
На самом деле, анализируя цифру 18 ясно, что последний значащий бит в маске находится в третьем байте адреса, поэтому достаточно было провести подобную операцию только над третьим байтом, оставляя в нем (18 минус 16) значащих левых бит маски, а остальные 6 бит забив нулями. При этом 1 и 2 байт будут как есть, а 4 байт - ноль.
Другой способ - через логическое И (этой операцией легко обнулить незначащие для адреса сети биты):
255.255.192.0 & 10.120.100.255 = 10.120.64.0
Число 255.255.192.0 - это левые 18 бит заполненные единицами остальные 14 бит добиты нулями.
В общем все довольно легко, если иметь под рукой двоичный калькулятор. Небольшая практика и дело в шляпе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lega
Сверяете левую часть бит да и все.
А физический, один и тот же ип может быть на разных континентах, разных подсетях (популярный пример 127.0.0.1)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы