# 網段說明 :::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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up