# 網段說明 :::info 🚩 這裡提供一些簡介 ::: ## 說明 :::warning 🚀 IP位址: **192.168.1.1/24** (子網路遮罩: 255.255.255.0) ::: > 根據 /24 的前置碼 (prefix),可以得知子網路遮罩為 255.255.255.0。 假設你的主機 IP 位址為 192.168.1.1 下面列出了可以 ping 到的 IP 位址及其前置碼 1. 10.10.10.1/24: 這個 IP 位址位於另一個不同的網路,其前置碼也是 /24,也就是相同的子網路遮罩 255.255.255.0。因此,你可以 ping 到這個 IP。 2. 192.168.100.1/24: 這個 IP 位址位於相同的網路,其前置碼也是 /24,子網路遮罩同樣是 255.255.255.0。你可以 ping 到這個 IP。 ## 注意事項 - 因為這些 IP 位址的**前置碼**和**子網路遮罩與你的主機相同**,所以你**可以**順利地在相同的網路上進行 ping。 - 如果其他 IP 位址的**前置碼**和**子網路遮罩不同於你的主機**,則你可能**無法**在相同的網路上 ping 到它們。 ## Private IP |Class|Range|Mask|數量| |--|--|--|--| |Class A | `10.0.0.0` - `10.255.255.255` | `255.0.0.0` | 16777216 |Class B | `172.16.0.0` - `172.31.255.255` | `255.255.0.0` | 65536 |Class C | `192.168.0.0` - `192.168.255.255` | `255.255.255.0` | 256 --- # 網段計算 :::info 🚩 這裡提供一些相關計算之說明。 ::: ## 以 `199.1.1.100/28` 為例 ### 🧰 **IPAddress** `199.1.1.100` - IP 地址是 `199.1.1.100` 將它轉換成二進位表示為 `11000111 00000001 00000001 01100100`。 ### 🧰 **IPAddress.Mask** :::warning 🎯 **快速算法** 記下分段規則 | **CIDR Value** | **Subnet Mask** | 備註 | | ---------| ------------------ | --------- | | 24 | 255.255.255.`0` | | | 25 | 255.255.255.`128` | 128 | | 26 | 255.255.255.`192` | 128+64 | | 27 | 255.255.255.`224` | 128+64+32 | | 28 | 255.255.255.`240` | 128+64+32+16 | | 29 | 255.255.255.`248` | 128+64+32+16+8 | | 30 | 255.255.255.`252` | 128+64+32+16+8+4 | > P.S 如果是 `24-n` 則往回推,概念相同 > 範例以`24`為例是因為我們通常使用屬`Class C`的`192.168.x.x` > 如果今天是`23`則遮罩為 255.255.`254`.`0` (-2) 已知prefix為`28` 故子網路遮罩為 `255.255.255.240` ::: 自最高位元往後,總共有`28`個`1` - 子網路遮罩為 `255.255.255.240` 將其轉換成二進位表示為 `11111111 11111111 11111111 11110000`。 ### 🧰 **Subnetwork Number** :::warning 🎯 **快速算法** 256 - 240 = 16 求子 **網路編號(簡稱n)** 必須遵守以下三個規則 1. n**必需小於等於**所提供的IP區段,**n ≤ 100** (199.1.1.100) 2. n**必需為`16`的倍數** (256-240=16) 3. n**必需為整數** 而`96`最接近`100` 所以本主機子網路編號為`199.1.1.96`。(n為整數) ::: 將 **IP地址** 和 **子網路遮罩** 進行 "**AND**" 運算,得到**子網路編號**。 ```json 11000111 00000001 00000001 01100100 (IP 地址) & 11111111 11111111 11111111 11110000 (子網路遮罩) --------------------------------------------------------- = 11000111 00000001 00000001 01100000 ``` 子網路編號為 `199.1.1.96`。 ### 🧰 **IPAddress.Broadcast** :::warning 🎯 **快速算法** 廣播位址為下一個子網路編號再-1,通常是本網段範圍的最後一個IP 96 + 16 – 1 = 111 故廣播位址為 `199.1.1.111` ::: 將 **IP地址** 和 **反轉後的子網路遮罩** 進行 "**OR**" 運算,得到**廣播位址**。 ```java 11000111 00000001 00000001 01100100 (IP 地址) | 00000000 00000000 00000000 00001111 (反轉後的子網路遮罩) --------------------------------------------------------- 11000111 00000001 00000001 01101111 ``` 將二進位的廣播位址轉換為十進位表示: `199.1.1.111` ### 🧰 **IPAddress.Range** - 網路地址加 `1` 通常是第一個可用 IP 地址。 - 廣播位址減 `1` 通常是最後一個可用 IP 地址。 - 在這個例子中,子網路編號為 `199.1.1.96` 所以可用範圍為 `199.1.1.97` ~ `199.1.1.110` 。 ### 🚂 **Result** ```cpp Address: 199.1.1.100/28 Mask: 255.255.255.240 Broadcast: 199.1.1.111 AvailableRange: 199.1.1.97 ~ 199.1.1.110 ``` --- ## 以 `10.10.10.10/26` 為例 ### 📻 **IPAddress** `10.10.10.10` - IP 地址是 `10.10.10.10` 將它轉換成二進位表示為 `00001010 00001010 00001010 00001010`。 ### 📻 **IPAddress.Mask** :::warning 🎯 **快速算法** 記下分段規則 * 24: 255.255.255.`0` * 25: 255.255.255.`128` (128) * 26: 255.255.255.`192` (128+64) * 27: 255.255.255.`224` (128+64+32) * 28: 255.255.255.`240` (128+64+32+16) * 29: 255.255.255.`248` (128+64+32+16+8) * 30: 255.255.255.`252` (128+64+32+16+8+4) * 31: 255.255.255.`254` (128+64+32+16+8+4+2) 已知prefix為`26` 故子網路遮罩為 `255.255.255.192` ::: 自最高位元往後,總共有`26`個`1` - 子網路遮罩為 `255.255.255.192` 將其轉換成二進位表示為 `11111111 11111111 11111111 11000000`。 ### 📻 **Subnetwork Number** :::warning 🎯 **快速算法** 256 – 192 = 64 求子 **網路編號(簡稱n)** 必須遵守以下三個規則 1. n**必需小於等於**所提供的IP區段,**n ≤ 10** (10.10.10.10) 2. n**必需為`64`的倍數** (256 – 192 = 64) 3. n**必需為整數,也可以是0** 而`0`最接近`10` 所以本主機子網路編號為`10.10.10.0`。(n為整數) ::: 將 **IP地址** 和 **子網路遮罩** 進行 "**AND**" 運算,得到**子網路編號**。 ```json 00001010 00001010 00001010 00001010 (IP 地址) & 11111111 11111111 11111111 11000000 (子網路遮罩) --------------------------------------------------------- = 00001010 00001010 00001010 00000000 ``` 子網路編號為 `10.10.10.0`。 ### 📻 **IPAddress.Broadcast** :::warning 🎯 **快速算法** 廣播位址為下一個子網路編號再-1,通常是本網段範圍的最後一個IP 0 + 64 – 1 = 63 故廣播位址為 `10.10.10.63` ::: 將 **IP地址** 和 **反轉後的子網路遮罩** 進行 "**OR**" 運算,得到**廣播位址**。 ```java 00001010 00001010 00001010 00001010 (IP 地址) | 00000000 00000000 00000000 00111111 (反轉後的子網路遮罩) --------------------------------------------------------- 00001010 00001010 00001010 00111111 ``` 將二進位的廣播位址轉換為十進位表示: `10.10.10.63` ### 📻 **IPAddress.Range** - 網路地址加 `1` 通常是第一個可用 IP 地址。 - 廣播位址減 `1` 通常是最後一個可用 IP 地址。 - 在這個例子中,子網路編號為 `10.10.10.0` 所以可用範圍為 `10.10.10.1` ~ `10.10.10.62` 。 ### 🚝 **Result** ```cpp Address: 10.10.10.10/26 Mask: 255.255.255.192 Broadcast: 10.10.10.63 AvailableRange: 10.10.10.1 ~ 10.10.10.62 ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.