zeromodule
@zeromodule
PHP

Как определить вхождение одной подсети в другую? (алгоритм на PHP)?

Здравствуйте, имеется 2 подсети с масками, скажем,

$subnet1 = '10.5.1.0/20';
$subnet2 = '10.5.1.0/24';


Как проверить, что одна подсеть входит в другую?
Нашёл такое решение - получить все адреса каждой из подсети, взять первые и последние, перевести в целые числа (ip2long) и тупо проверить вхождение одного диапазона в другой.

Но что-то подсказывает, что есть решение красивее - к примеру, каким-то образом сделать им XOR, только вот не пойму, как правильно.

Подскажете?
  • Вопрос задан
  • 3772 просмотра
Решения вопроса 1
Взять сеть с меньшей маской (/24),
перевести ее IP (первый) в long,
проверить вхождение этого IP в сеть с более широкой маской (/20).

P.S. Сеть 10.5.1.0/20 невозможна, т.к. у нее младшие 12 бит должны быть нулями.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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