IPv4 子網計算器

為任意 IPv4 CIDR 或「IP + 掩碼」計算網路地址、廣播地址、首個與末個可用主機、子網掩碼及主機總數。

不用心算也能規劃子網。 輸入帶 CIDR 字首的 IPv4 地址(如 192.168.1.10/24)或點分掩碼,即可得到網路地址、廣播地址、首個與末個可用主機、子網掩碼及可容納的主機數。本地計算。

網路地址
廣播地址
首個可用主機
末個可用主機
子網掩碼
可用主機數

讀懂一個子網

字首長度到底固定了什麼

一個子網由基礎地址加字首長度構成。字首說明 32 位中有多少位被固定為網路標識,剩下的位可以自由列舉主機。/24 固定前 24 位,剩 8 位主機位,因此有 256 個地址。字首每增加 1 位,地址塊就減半:/25 是 128 個,/26 是 64 個,依此類推。

子網掩碼是同一件事的地址寫法,固定位取 1——255.255.255.0 就是 24 個 1 後接 8 個 0。反掩碼(wildcard)是它的按位取反,標記主機部分;Cisco 裝置的 ACL 用反掩碼而非子網掩碼書寫,跨廠商操作時很容易搞混。

網路地址、廣播地址與中間的主機

把所有主機位置 0 得到網路地址,即地址塊中最小的地址;全置 1 得到廣播地址,即最大的地址。兩者都不能配置給介面,這就是"減二"的由來:/24 有 256 個地址,但可用主機只有 254 個。

實際部署中通常還會再少一個,因為路由器或預設閘道器要佔用一個,習慣上取第一個或最後一個可用地址。這只是慣例而非規定,但在規劃子網容量時值得預留。

/31 與 /32 這兩個例外

減二規則在小字首處失效。/32 只有一個地址、沒有任何主機位,用於環回口、主機路由和證書 SAN。/31 只有兩個地址,RFC 3021 允許兩個都用於點對點鏈路——因為一條恰好只有兩個端點的鏈路根本不需要廣播地址。在 RFC 3021 之前,每條鏈路都要浪費一個 /30,四個地址裡白白扔掉兩個。

CIDR 記法還是點分掩碼

兩者描述的是同一件事,本計算器都接受。192.168.1.0/24192.168.1.0 255.255.255.0 結果完全一致。需要注意合法掩碼必須是連續的 1 後接連續的 0,像 255.0.255.0 這樣的並不是有效掩碼;如果某個計算器不聲不響地接受了它,給出的結果一定是錯的。

開源說明:使用原生 JavaScript 實現,不依賴第三方庫。

常見問題

為什麼可用地址要減去兩個?
第一個地址代表網路本身,最後一個是廣播地址,兩者都不能分配給主機。因此 /24 提供 256 − 2 = 254 個可用地址。
可以用點分掩碼代替字首長度嗎?
可以。192.168.1.0/24 與 192.168.1.0 255.255.255.0 的結果完全相同。完全不帶掩碼的地址會按 /32 處理。
/31 會怎麼計算?
RFC 3021 允許在點對點鏈路上使用 /31,此時兩個地址都可用且不存在廣播地址。計算器會報告 2 個可用主機而不是 0 個。
為什麼我的掩碼被拒絕了?
合法掩碼必須是一段連續的 1 後面全是 0。像 255.255.0.255 這樣中間斷開的寫法不對應任何字首長度,因此無效。
網路地址和第一個主機地址有什麼區別?
網路地址是整個地址塊的起點,第一個主機地址是緊隨其後的下一個地址。對 192.168.1.0/24 而言分別是 192.168.1.0 和 192.168.1.1。
它適合用來做 VLSM 規劃嗎?
適合。先按各自需要的字首長度算出每個地址塊,再檢查得到的區間之間沒有重疊,然後再實際分配。