我建造 工具。dev,除了 WordPress 外掛程式和 Laravel API 之外,我還花了相當多的時間在雲端控制台上雕刻 VPC 和編寫防火牆規則。子網路是理論簡單、算術繁瑣的技能之一,而繁瑣的部分正是錯誤隱藏的地方。我已經發布了一個允許 a 的安全群組 /16 當我指的是 /24,打開一個比預期更寬的網絡,因為我在腦中做了面具數學計算,但有點錯誤。這 IP 子網路計算器 存在,因此永遠不會再手工發生。本指南解釋了它的計算方法、為什麼數字會以它們的方式出現,以及絆倒人們和他們信任的樸素計算器的邊緣情況。
TL;DR: IPv4 子網路計算器採用位址和 CIDR 前綴,例如
192.168.1.10/24,並導出網路位址、廣播位址、第一個和最後一個可用主機、子網路遮罩、通配符遮罩以及總位址和可用位址計數。它的工作原理是將位址視為 32 位元整數,並透過位元操作套用遮罩。它正確地處理了重要的兩個邊緣情況,處理 a/31作為 RFC 3021 和 a 的兩個主機點對點連結/32作為單一主機,它接受一個虛線遮罩來代替前綴。它完全在您的瀏覽器中運行,因此您輸入的位址不會上傳。
什麼是子網路以及前綴是什麼意思?
IPv4 位址為 32 位,寫成四個十進位八位元組,例如 192.168.1.10。 子網路是共享相同前導位的位址的連續區塊。 CIDR 前綴(斜線後面的數字)表示 32 位元中有多少位元被固定為網路部分。其餘位元可以自由變更和識別各個主機。所以 /24 修復前 24 位,留下 8 位給主機, /16 修復 16 並留下 16,並且 /30 修復了 30 個,只剩下 2 個。
一個區塊中的位址數量是兩個,根據主機位元的冪。 A /24 有 8 個主機位,因此第 8 個有 2 個,即 256 個位址。 A /16 有 16 個主機位,因此有 65,536 個位址。 A /30 有 2 個主機位,因此有 4 個位址。這是數學的整個基礎,一旦你內化"位址等於 2 的三十二次方減去前綴 "大多數子網路不再神秘。
CIDR,代表無類別域間路由,於 2017 年引入 RFC 4632 取代舊的classful系統,其中位址' s 類別由第一個八位元組固定。類別尋址浪費了大量的空間,因為即使您需要中間的某些內容,您也必須採用整個 A、B 或 C 類區塊。 CIDR 可讓您選擇任何前綴長度和大小,以滿足您的需求。類別標籤 A、B 和 C 仍然出現在工具中,包括我的工具,但它們現在是資訊性的;前綴決定網路邊界。
為什麼每個子網路中的兩個位址不可用?
在普通子網路中,第一個和最後一個位址被保留,不能分配給主機。第一個位址(所有主機位元都設為零)是網路位址,它命名子網路本身。最後一個位址(所有主機位元都設為 1)是廣播位址,發送到它的封包會同時到達子網路上的每個主機。因為這兩個是直言不諱的,所以可用的主機計數是位址總數減去兩個。
這就是為什麼a /24 總共有 256 個地址,但只有 254 個可用地址,為什麼 a /304 個位址恰好為您提供 2 個可用主機。這 /30 是兩個路由器之間連結的經典選擇,因為點對點連結只需要兩個位址,僅此而已。計算器明確地拼寫網路和廣播位址,以及第一個和最後一個可用主機,因此您永遠不必計算出哪些位址是禁區的。
計算器如何計算數字?
在引擎蓋下,它是對 32 位元整數進行位元算術,這既是最快也是最不容易出錯的方法。透過將每個八位元組移動到位,將位址打包到一個無符號整數中。前綴的遮罩是一輪 1 後面跟著 0 的運行,由移位產生 0xFFFFFFFF 離開 32 minus the prefix. 從那裡開始,每個值都是一個運算:
- 網路位址是與遮罩按位元 AND 排列的位址,遮罩將主機位元歸零。
- 廣播位址是帶有遮罩反面的網路 OR,它設定所有主機位元。
- 通配符遮罩只是子網路遮罩的位元逆掩碼。
- 第一個可用主機是網路位址加一,最後一個是廣播減一。
這樣做可以避免人們手動轉換為二進位字串時出現的錯誤。它也使反向轉換變得微不足道:像轉動點陣掩模一樣 255.255.255.0 回到前綴,您可以計算前導一位,當您輸入遮罩而不是斜線表示法時,計算器就會執行此操作。所有內容始終保持無符號 32 位元整數,這在 JavaScript 中很重要,因為您必須強制使用無符號解釋以避免負數滲透到高位。
大多數工具出錯的邊緣情況是什麼?
兩個前綴打破了簡單的 "減去二"規則,以及數量驚人的計算器錯誤地處理它們。
第一個是 /31. 根據原規則a /31 將有兩個位址,都保留,留下零個可用主機,這是無用的。 RFC 3021 透過允許 a 來解決這個問題 /31 在點對點連結上,不需要廣播位址,因此它的兩個位址都可以使用。此計算器報告 a /31 作為兩個可用的主機,網路和廣播位址與兩個主機位址加倍,這就是現代路由器在串列和點對點介面上所做的。
第二個是 /32. A /32 是一個單一位址,一條主機路由。它恰好代表一台機器,這就是環回位址、主機特定防火牆規則和各個路由的表達方式。計算器將其報告為一台可用主機,其網路位址等於位址本身,並且沒有單獨的範圍。盲目減去兩個的工具會報告這兩個主機的負數或零,這是無稽之談,我確保這個沒有。
如何使用子網路計算器
步驟 1:輸入地址和前綴
輸入帶有 CIDR 前綴的 IPv4 位址,例如 10.0.0.0/8 或者 192.168.1.10/24. 前綴可以是 0 到 32 之間的任何值。如果您貼上沒有前綴的位址,則該工具假定 a /24,最常見的預設值,您可以從那裡進行調整。
步驟 2:或使用點狀子網路遮罩
如果您有遮罩而不是前綴,請輸入由空格分隔的位址和遮罩,例如 192.168.1.10 255.255.255.0. 計算器計算遮罩中的前導一位,將其轉換為匹配的前綴,並拒絕任何不連續的遮罩,因為這樣的遮罩不是有效的 CIDR 遮罩。
第三步:閱讀結果
您將獲得網路位址、廣播位址、可用主機範圍、子網路遮罩、通配符遮罩、總位址和可用位址計數、類別範圍以及 RFC 1918 下的位址是否私有。還有一個二進位視圖位址和遮罩,這是準確查看網路邊界位置的最快方法。
第四步:複製您需要的內容
每個值都有一個複製按鈕,因此您可以將 CIDR 表示法提升到路由表中,將主機範圍提升到文件中,或將通配符提升到 Cisco 存取清單中,而無需重新輸入並冒轉置八位元組的風險。
子網路遮罩和前綴參考
這是我不斷回到的表格,計算器即時生成它,因此數字永遠不會陳舊。
| CIDR | 子網路遮罩 | 總地址 | 可用的主機 |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
這個模式值得記住:前綴中的每一步都會使區塊減半。 A /25 是半個 /24,a /26 是四分之一,依此類推。當您分割網路時,減半就是心理模型,計算器會確認確切的邊界,因此您不必只信任心理模型。
如何將一個網路分割成更小的子網路?
最常見的實際任務不是計算單一子網,而是將較大的區塊劃分為幾個較小的區塊,這就是計算器贏得保留的地方。說你被遞給你了 10.0.0.0/16 對於雲端 VPC,需要將其劃分為公共層、私有層和資料庫層的子網路。前綴的每一步都會使子網路的數量加倍,並將其大小減半,因此從 /16 到 /18 為您提供四個相等的區塊,每個區塊有 16,384 個位址: 10.0.0.0/18, 10.0.64.0/18, 10.0.128.0/18, 和 10.0.192.0/18. 您可以透過將其貼到計算器中並確認網路和廣播位址排列無間隙、無重疊來檢查每個邊界。
這裡的陷阱是子網路必須落在它們的自然邊界上。 A /26 區塊不能只從任何位址開始;它必須從最後一個八位元組中的 64 的倍數開始,因為 64 是 a 的區塊大小 /26. 如果你試著從 開始 .30(計算器報告的網路位址與您輸入的位址不符,這是發現錯誤的最快方法)。當我規劃 VPC 時,我會依序貼上每個預期的子網路並讀回網路位址;如果該工具顯示的網路位址與我想要定義的網路位址不同,那麼在我應用它之前我就知道我的邊界是錯誤的。同樣的規則適用於路由器和#39;靜態路由和防火牆規則,其中越界區塊默默地覆蓋您不想要的位址。
還有一個現實世界的微妙之處值得命名:雲端提供者在每個子網路內保留一些位址,超出網路和廣播對。例如,AWS 每個子網路保留五個位址,而不是兩個,採用前四個和最後一個。計算器報告嚴格的 RFC 主機範圍,因此在 AWS 上,您可以從它顯示的可用計數中再減去三個。這是一個分層在標準之上的提供者約定,不是數學中的缺陷,但正是這種事情會讓您忘記兩個主機短缺。
哪些範圍是私有的?為什麼這很重要?
RFC 1918 保留三個街區供私人使用: 10.0.0.0/8, 172.16.0.0/12, 和 192.168.0.0/16. 這些在公共互聯網上不可路由,而且它們是幾乎每個家庭和辦公室網路在進行網路位址轉換的路由器後面使用的範圍。計算器標記您輸入的地址是否屬於其中之一,當您計劃尋址方案並想要確認您正在私人空間內工作而不是意外使用屬於其他人的地址時,這是一種快速的理智檢查公共互聯網上。當您看到 "public" 時,這也是一個有用的推動;標記您期望是內部地址,因為這通常意味著第一個八位元組中的拼字錯誤。
子網路計算器與其他所有計算器相符的地方
網路工作很少孤立地發生。當您配置應用程式背後的基礎架構時,您也會調試 HTTP 回應、解析使用者代理程式並產生內部服務的憑證。這 HTTP 狀態代碼參考 是應用層的伴侶, 用戶代理解析器 用於找出是什麼擊中了您的伺服器,以及 基本驗證產生器 對於保護內部端點的憑證。如果您在讀取二進位遮罩時在數字基數之間進行轉換,則 數基轉換器 直接處理十進位到二進位的步驟。在安全方面, 信用卡驗證器 是在您剛剛設計的網路上運行的結帳前端過濾器。
為了更廣闊的前景, 開發人員生產力工具 綜述涵蓋了傾向於整天在選項卡中打開的實用程序,以及 編碼工具指南 將子網路計算器置於完整的開發人員工具包的上下文中。與 toolz。dev 上的所有內容一樣,它完全在您的瀏覽器中運行,因此您計劃的地址永遠不會離開您的電腦。
常見問題
CIDR 前綴是什麼意思?
CIDR 前綴是斜線後面的數字,它計算有多少位址前導位元來識別網路。 A /24 修復網路的前 24 位,並為主機留下 8 位,即總位址 256 個,可用位址 254 個。較小的前綴覆蓋更多位址,較大的前綴覆蓋更少位址。
子網路中有多少個可用主機?
對於前綴 /30 或者更小,可用主機數量是總位址減去二,因為第一個位址是網絡,最後一個位址是廣播。 A /24 有 254 個可用主機,a /26 有62,a /30 有 2。 有兩個例外 /31,它有 2 個可用主機,並且 /32,有 1。
網路位址和廣播位址有什麼差別?
網路位址是區塊中的第一個位址,標識子網路本身,所有主機位元都設為零。廣播位址是最後一個位址,所有主機位元都設定為 1,發送到它的封包會立即到達子網路上的每個主機。兩者都不能分配給普通子網路中的單一主機。
如何將子網路遮罩轉換為 CIDR 前綴?
計算掩模中前導的一位。 255.255.255.0 是 24 個一位,所以是 /24; 255.255.240.0 是20位,所以 /20. 當您輸入虛線遮罩而不是前綴時,計算器會自動進行此轉換,並且它會拒絕任何不連續的遮罩。
通配符掩碼有什麼用途?
通配符遮罩是子網路遮罩的位元反函數,因此 /24 給 0.0.0.255. 它用於 Cisco 存取控制清單和 OSPF 網路語句,其中零位元表示與該位元完全匹配,一位表示忽略它。很容易與子網路遮罩混淆,這就是為什麼計算器並排顯示兩者的原因。
為什麼/31 顯示兩個可用主機?
RFC 3021 允許 a /31 在點對點連結上,不需要網路和廣播位址,因此其兩個位址都成為可用的主機位址。沒有該規則 a /31 可用主機為零,這是無用的。 A /32 是相關的邊緣情況,代表單一主機,例如環回或主機路由。
哪些 IPv4 系列是私有的?
RFC 1918 儲備 10.0.0.0/8, 172.16.0.0/12, 和 192.168.0.0/16 對於專用網路。這些網路無法在公共互聯網上路由,並且是大多數家庭和辦公室網路在執行 NAT 的路由器後面使用的範圍。計算器標記您輸入的位址是否屬於其中之一。
此計算器適用於 IPv6 嗎?
不,該工具僅計算 IPv4 子網路。 IPv6 使用 128 位元位址和十六進位表示法,因此其子網路運作方式不同,需要專用計算器。對於 IPv4 規劃、防火牆規則和雲端 VPC 大小(大多數日常子網路數學發生的地方),這涵蓋了常見情況。



