手動計運算元網掩碼的 IP 範圍

难德糊涂發表於2024-06-07

已知條件

  • IP: 192.168.251.31
  • 掩碼: 255.255.252.0

計算思路

  1. 掩碼是 255.255.252.0,透過二進位制轉換為11111111.11111111.11111100.00000000,連續1表示網路位,連續0表示主機位,所以第三段第六位往後是主機位,往前(包括第六位)都是網路位

  2. IP 192.168.251.31/22 透過二進位制轉換為: xxxxxxxx.xxxxxxxx.11111011.xxxxxxxx(這個例子只需要關注第三段)

  3. 將 IP 中所有主機位修改,分別改為 0 和 1

  • 後邊都置 0, 就是 IP 段起始, xxxxxxxx.xxxxxxxx.111110|00.00000000
  • 後邊都置 1, 就是 IP 段結尾, xxxxxxxx.xxxxxxxx.111110|11.11111111
  1. 分別將起始和結束IP和子網掩碼進行與運算,得到:11111000.00000000 = 248.011111011 = 251.255

  2. 得到 IP 段範圍為:192.168.248.0 ~ 192.168.251.255

image


有個疑問,會不會出現 255.255.253.0 這種掩碼

  • 首先答案,掩碼沒有規定必須由連續的1組成,但是現實中肯定是沒有這麼用的。
    因為非連續的對人們規劃和使用非常的不友好,無法區分掩碼位數,也無法確定網路位和主機位的劃分
    那麼理論上能不能有,分析一下

  • 假設存在,那麼這個掩碼轉為二進位制的寫法為 11111111.11111111.11111101.00000000
    通常情況我們以連續1作為網路位,連續0作為主機位,示例掩碼就無法直接區分了
    也無法用常規的/22這種表示

  • 掩碼掩碼,我理解是把網路位遮住,只識別主機位,那麼
    前24位中,第23位為主機位,其他位網路位
    這樣該掩碼對應的可用網段就分成了兩部分,即 192.168.253.0~192.168.253.255192.168.255.0~192.168.255.255
    不利於規劃,還造成了 ip 浪費

  • 我們假設它可以成立,那麼有沒有問題,以192.168.255.0.0~192.168.255.255這個網段為例
    假設兩個掩碼中(255.255.255.0255.255.253.0)有相同IP(192.168.255.10),此時有一個IP(192.168.255.20)請求與它通訊,由於dest_ip和本段掩碼做與運算的結果,和本網路號相同,那麼會傳送廣播,兩個 ip 會發生爭搶導致資料包異常
    網路不能正常使用,肯定是由問題的,那麼,結論“不能這麼用”,大功告成!


參考連結

  • 掩碼未規定必須連續為1
  • 同IP不同掩碼
  • 掩碼和通訊的關係

相關文章