많은 네트워크 애플리케이션에서는 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 &= $mask; # nb: in case the supplied subnet wasn't correctly aligned return ($ip & $mask) == $subnet; }
이 함수를 사용하면, IP 주소가 특정 CIDR 서브넷에 속하는지 여부를 효율적으로 확인할 수 있습니다. 이 접근 방식의 단순성과 효율성 덕분에 광범위한 네트워크 관련 애플리케이션에 적합합니다.
위 내용은 IP 주소가 CIDR 서브넷에 속하는지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!