如何有效率判斷IP位址是否屬於CIDR子網路?

Susan Sarandon
發布: 2024-10-18 19:27:29
原創
473 人瀏覽過

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

確定 IP 位址的 CIDR 子網路包含

在許多網路應用中,需要驗證 IP 位址是否屬於給定的 CIDR 子網路。本問題探討了一種快速有效的方法來進行此類比較。

為了實現此目的,使用了函數 cidr_match()。它接受兩個參數:點分四組格式的 IP 位址和 CIDR 表示法遮罩。

實作

第一步涉及使用 ip2long( 將 IP 位址和子網路轉換為長整數)。然後解析 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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!