Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann überprüft werden, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?

Wie kann überprüft werden, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?

Linda Hamilton
Linda HamiltonOriginal
2024-10-18 19:32:03499Durchsuche

How to Verify if an IP Address Belongs to a CIDR Subnet?

Überprüfen der IP-Einbindung in ein CIDR-Subnetz

Im Bereich der Netzwerkkonfiguration ist die Feststellung, ob eine IP-Adresse in ein bestimmtes CIDR-Subnetz fällt, eine häufige Aufgabe. Dieser Artikel stellt eine unkomplizierte Methode vor, um dies mithilfe rudimentärer integrierter Funktionen zu erreichen.

Methode

Der Algorithmus basiert auf der Konvertierung sowohl der IP-Adresse als auch des CIDR-Subnetzbereichs in lange Ganzzahlen mithilfe von ip2long( ) Funktion. Anschließend wird die Subnetzmaske entsprechend der /xx-Notation im CIDR-Bereich berechnet.

Der letzte Schritt besteht darin, eine bitweise „Und“-Operation zwischen IP und Subnetzmaske durchzuführen. Wenn das Ergebnis mit dem Subnetz übereinstimmt, kann bestätigt werden, dass sich die angegebene IP-Adresse im angegebenen Subnetz befindet.

Implementierung

Der folgende Code stellt eine Implementierung des oben genannten Algorithmus bereit:

<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; // Adjust subnet alignment if necessary
    return ($ip & $mask) == $subnet;
}</code>

Diese Funktion kann wie folgt verwendet werden:

<code class="php">$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4');

foreach ($ips as $IP) {
    if (cidr_match($IP, '10.2.0.0/16') == true) {
        print "You're in the 10.2 subnet\n";
    }
}</code>

Dieser Code gibt aus:

You're in the 10.2 subnet
You're in the 10.2 subnet

Das obige ist der detaillierte Inhalt vonWie kann überprüft werden, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn