Maison > développement back-end > tutoriel php > Comment déterminer efficacement si une adresse IP appartient à un sous-réseau CIDR ?

Comment déterminer efficacement si une adresse IP appartient à un sous-réseau CIDR ?

Susan Sarandon
Libérer: 2024-10-18 19:27:29
original
590 Les gens l'ont consulté

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

Détermination de l'inclusion d'un sous-réseau CIDR des adresses IP

Dans de nombreuses applications réseau, il est nécessaire de vérifier si une adresse IP appartient à un sous-réseau CIDR donné. Cette question explore une méthode rapide et efficace pour de telles comparaisons.

Pour y parvenir, une fonction, cidr_match(), est utilisée. Il accepte deux paramètres : l'adresse IP au format quadruple pointé et le masque de notation CIDR.

Mise en œuvre

La première étape consiste à convertir à la fois l'adresse IP et le sous-réseau en entiers longs à l'aide de ip2long( ). Le sous-réseau CIDR est ensuite analysé pour déterminer le masque de sous-réseau en fonction du nombre de bits spécifié.

Ensuite, une opération ET au niveau du bit est effectuée entre l'adresse IP et le masque de sous-réseau. Si le résultat correspond au sous-réseau, cela indique que l'adresse IP appartient au sous-réseau spécifié.

Voici l'extrait de code de la fonction 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;
}
Copier après la connexion

En utilisant cette fonction, vous pouvez déterminer efficacement si une adresse IP appartient à un sous-réseau CIDR particulier. La simplicité et l'efficacité de cette approche la rendent adaptée à un large éventail d'applications liées aux réseaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal