Heim > Backend-Entwicklung > PHP-Tutorial > Wie lässt sich effizient feststellen, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?

Wie lässt sich effizient feststellen, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?

Susan Sarandon
Freigeben: 2024-10-18 19:27:29
Original
607 Leute haben es durchsucht

How to Determine if an IP Address Belongs to a CIDR Subnet Efficiently?

Bestimmen der Einbeziehung von IP-Adressen in das CIDR-Subnetz

In vielen Netzwerkanwendungen besteht die Notwendigkeit zu überprüfen, ob eine IP-Adresse zu einem bestimmten CIDR-Subnetz gehört. Diese Frage untersucht eine schnelle und effiziente Methode für solche Vergleiche.

Um dies zu erreichen, wird eine Funktion, cidr_match(), verwendet. Es akzeptiert zwei Parameter: die IP-Adresse im Dotted-Quad-Format und die CIDR-Notationsmaske.

Implementierung

Der erste Schritt umfasst die Konvertierung sowohl der IP-Adresse als auch des Subnetzes in lange Ganzzahlen mithilfe von ip2long( ). Das CIDR-Subnetz wird dann analysiert, um die Subnetzmaske basierend auf der Anzahl der angegebenen Bits zu bestimmen.

Als nächstes wird eine bitweise UND-Verknüpfung zwischen der IP-Adresse und der Subnetzmaske durchgeführt. Wenn das Ergebnis mit dem Subnetz übereinstimmt, bedeutet dies, dass die IP-Adresse in das angegebene Subnetz fällt.

Hier ist der Codeausschnitt für die Funktion cidr_match():

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 &amp;= $mask; # nb: in case the supplied subnet wasn't correctly aligned
    return ($ip &amp; $mask) == $subnet;
}
Nach dem Login kopieren

Mit dieser Funktion Sie können effizient feststellen, ob eine IP-Adresse zu einem bestimmten CIDR-Subnetz gehört. Die Einfachheit und Effizienz dieses Ansatzes machen ihn für eine Vielzahl netzwerkbezogener Anwendungen geeignet.

Das obige ist der detaillierte Inhalt vonWie lässt sich effizient feststellen, 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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage