ホームページ  >  記事  >  バックエンド開発  >  CIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?

CIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-18 19:35:03599ブラウズ

How to Verify IP Address Inclusion in a CIDR Subnet?

CIDR サブネットへの IP アドレスの包含の確認

IPv4 アドレスが指定された CIDR サブネット内にあるかどうかを確認するには、次のような簡単な方法があります。次の手順:

長整数への変換:

  • ip2long() 関数を使用して、IP アドレスとサブネット範囲の両方を長整数に変換します。

サブネット マスクの導出:

  • サブネット マスクが明示的に指定されていない場合 (/xx)、デフォルト マスク /32 を想定します。
  • 32 からマスク長を引いた値に 1 秒の左シフトを適用して、サブネット マスクを計算します。

ビットごとの比較:

  • 実行IP 長整数とサブネット マスクの間のビット単位の AND 演算。
  • 結果がサブネットの長整数と等しいかどうかを確認します。

実装:

次の PHP 関数はこのロジックをカプセル化します:

<code class="php">function cidr_match($ip, $range)
{
    list ($subnet, $bits) = explode('/', $range);
    if ($bits === null) {
        $bits = 32;
    }
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 << (32 - $bits);
    $subnet &= $mask;
    return ($ip & $mask) == $subnet;
}</code>

以上がCIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。