"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo verificar la inclusión de la dirección IP en una subred CIDR?

¿Cómo verificar la inclusión de la dirección IP en una subred CIDR?

Publicado el 2024-11-07
Navegar:583

How to Verify IP Address Inclusion in a CIDR Subnet?

Verificación de la inclusión de la dirección IP en una subred CIDR

Para determinar si una dirección IPv4 se encuentra dentro de una subred CIDR específica, un método sencillo implica siguientes pasos:

Conversión a enteros largos:

  • Utilice la función ip2long() para convertir tanto la dirección IP como el rango de subred en enteros largos.

Derivación de máscara de subred:

  • Si la máscara de subred no se proporciona explícitamente (/xx), suponga una máscara predeterminada de /32.
  • Calcule la máscara de subred aplicando un desplazamiento a la izquierda de 1 s a 32 menos la longitud de la máscara.

Comparación bit a bit:

  • Realizar una operación AND bit a bit entre el entero largo de IP y la máscara de subred.
  • Compruebe si el resultado es igual al entero largo de subred.

Implementación:

La siguiente función PHP encapsula esta lógica:

function cidr_match($ip, $range)
{
    list ($subnet, $bits) = explode('/', $range);
    if ($bits === null) {
        $bits = 32;
    }
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 
Declaración de liberación Este artículo se reimprime en: 1729251256 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3