>  기사  >  백엔드 개발  >  IP 주소가 CIDR 서브넷에 속하는지 효율적으로 확인하는 방법은 무엇입니까?

IP 주소가 CIDR 서브넷에 속하는지 효율적으로 확인하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-18 19:27:29476검색

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

IP 주소의 CIDR 서브넷 포함 여부 확인

많은 네트워크 애플리케이션에서는 IP 주소가 특정 CIDR 서브넷에 속하는지 여부를 확인해야 합니다. 이 질문은 이러한 비교를 위한 빠르고 효율적인 방법을 탐구합니다.

이를 달성하기 위해 cidr_match() 함수가 사용됩니다. 두 개의 매개변수, 즉 점으로 구분된 쿼드 형식의 IP 주소와 CIDR 표기 마스크를 허용합니다.

구현

첫 번째 단계에서는 ip2long( ). 그런 다음 CIDR 서브넷을 구문 분석하여 지정된 비트 수를 기반으로 서브넷 마스크를 결정합니다.

다음으로 IP 주소와 서브넷 마스크 간에 비트별 AND 연산이 수행됩니다. 결과가 서브넷과 일치하면 IP 주소가 지정된 서브넷 내에 있음을 나타냅니다.

다음은 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;
}

이 함수를 사용하면, IP 주소가 특정 CIDR 서브넷에 속하는지 여부를 효율적으로 확인할 수 있습니다. 이 접근 방식의 단순성과 효율성 덕분에 광범위한 네트워크 관련 애플리케이션에 적합합니다.

위 내용은 IP 주소가 CIDR 서브넷에 속하는지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.