什麼是 IP 範圍轉 CIDR 計算機?
這個工具會接收一組 IPv4 的起始與結束位址,並回傳一個足以涵蓋整段範圍、且範圍最小的單一 CIDR 區塊(也就是一個 /前綴)。CIDR(無類別域間路由,Classless Inter-Domain Routing)表示法會以「基底位址+斜線+前綴長度」的形式來描述一段位址區塊,例如 192.168.0.0/24。這套標記法是 IPv4 通用的規格,無論在哪個國家或哪種網路環境都適用。
使用方式
在 起始 IP 位址 欄位填入範圍的第一個位址,在 結束 IP 位址 欄位填入最後一個位址,接著送出即可。計算機會將兩個位址各自轉換為 32 位元整數,計算兩者之間的位址總數,再算出能完整包含這些位址、且為 2 的次方大小的最小區塊所對應的前綴長度。
計算公式解析
每一個 IPv4 位址都會對應到一個 32 位元整數。範圍內的位址數量為 \(\text{count} = \text{end} - \text{start} + 1\)。CIDR 區塊所容納的位址數量永遠是 2 的次方:一個 \(/n\) 區塊可容納 \(2^{32-n}\) 個位址。為了涵蓋 \(\text{count}\) 個位址,我們會向上取整到下一個 2 的次方,
$$\text{blockSize} = 2^{\left\lceil \log_2(\text{count}) \right\rceil}$$接著前綴即為 \(32 - \log_2(\text{blockSize})\)。完整公式為:
$$\begin{gathered} \text{CIDR} = 32 - \left\lceil \log_2 N \right\rceil \\[1.5em] \text{where}\quad \left\{ \begin{aligned} N &= \text{End} - \text{Start} + 1 \\ \text{Start} &= \text{int}\!\left(\text{Start IP}\right) \\ \text{End} &= \text{int}\!\left(\text{End IP}\right) \end{aligned} \right. \end{gathered}$$
範例演算
範圍從 192.168.0.0 到 192.168.0.255。換算成整數分別是 3,232,235,520 與 3,232,235,775,因此 \(\text{count} = 256\)。由於 \(256 = 2^8\),區塊大小為 256,前綴則是 \(32 - 8 = 24\),最終得到 /24。
常見問題
計算結果一定會對齊 CIDR 邊界嗎?這個前綴是「容量上」剛好能裝下該數量位址的最小區塊,但單一 CIDR 區塊還必須在位址上對齊。如果你的起始位址沒有落在該邊界上,這段範圍可能就得用多個較小的區塊才能完整表示。
如果我把起訖位址填反了怎麼辦?當結束位址比起始位址還小時,計算機會自動將兩者對調。
這個工具也支援 IPv6 嗎?不支援,本工具僅適用於 IPv4(32 位元)範圍。