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
678 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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal