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