根据netmask快速判断是否在一个网域
natmask就是子網掩碼,與ip進行與的運算,得到一個網域。
ip 由4段構成,例 172.25.45.10 每段由8位二進制組成?
即 11111111.11111111.11111111.11111111這個代表的是255.255.255.255
同理 子網掩碼也是由8位二進制組成。它又分為網絡位和主機位。
172.25.45.10/24 表示有24個1 組成網絡位 ?剩余 8位組成主機位。
一般情況最常見到的子網掩碼是 8 即8個1 即 255.0.0.0 16個1 255.255.0.0 24個1 255.255.255.0
32個1 是廣播地址 255.255.255.255?
這個的計算就是二進制想十進制的轉化。
明白了這個一般情況,來談談不一樣的。舉個例子由于慣性思維當我們看到?
172.25.42.10/21 和 172.25.47.100/21 這兩個ip是感覺就是不在一個網域,因為第三段的不想同 42和47 不一樣。但事實它們在一個網段。
我們以第三段為例。 它們各自的網域應該這樣計算。
21-16=5就是所有的1的數減去前兩段的16個1的數就是第三段的1的個數。第三段的掩碼相當于為5?
42轉化為8位二進制為 00101010 與 第三網段的子網掩碼5個1 即 11111000 對應位置與的運算
00101010 對應十進制數是42
11111000 子網掩碼?
00101000 對應位與的運算得到的 網域
同理
00101111 對應十進制數是47
11111000 子網掩碼 00101000?對應位與的運算得到的 網域
一個網域的判斷是看它的網絡位 所以在不在一個網域在這個例子中和第四段沒有關系??
可以看到172.25.42.10/21 和 172.25.47.100/21 是在一個網域的。
****************************************************
那如何快速的根據netmask來判斷ip是否在一個網域?
172.25.42.10/21 和 172.25.47.100/21?
第三段的網絡位 為 21-16=5 那主機位 位 8-5=3
根據位權值得計算方法可得?
1 ?1 ?1 ?1 ?1 ?1 ?1 ?1
128 64 32 16 ? 8 ?4 ?2 ?1
3個主機位即是 4+2+1=7 5個網絡位就是 128+64+32+16+8=248?
由于子網掩碼是 11111000 與ip進行與的運算 要想運算后在同一個網域 也就是說 ip 的前5個1 也就是網絡位要一樣 ,那么網絡位一樣的前提下, 主機位之間 的變化就是 小于等于7.
①? 所以 當看到一個ip和它的子網掩碼時,先計算出它的關鍵段的?主機位的變化,
例 9和17 10和18 11和19 它們分別在第一段和第二段 但他們的主機位是一致的?
9 ? 11111111 10000000 00000000 0000000
17 ?11111111 11111111 10000000 0000000
它們的關鍵段主機位是 127 ?關鍵段就是可以判斷是否在一個網域的關鍵段 子網掩碼 0到8 就是第一段 8到16 就是第二段 16到24 就是第三段 24到32就是第四段
②?計算出關鍵段的主機位 例 172.25.42.10/21 和 172.25.47.100/21 它們的關鍵段是第三段 主機位是 7 ?那么 首先判斷 關鍵段的ip 是否小于 主機位 ,在例子中 42和47 相差位5小于 7 所以有可能在一個網段。 如果大于 7 則肯定 不在一個網域。
③ 如果小于 7 則可能在一個網域。
0-7
8-15
16-23
24-31
32-39
.
.
.
248-255
可以發現規律
主機位是0到7 是8個一循環
所以 在 小于等于7 的前提下 ?可以 用關鍵段的 ip/8 看他們的商是否相同 相同則在一個網域 反之不在一個網域。
例 42/8=5 47/8=5 求商即可 ?都是5 所以在一起 ?那 42和48 就不在一個網域。
這樣可以用算術的方法來快速的判斷。?
轉載于:https://blog.51cto.com/19941018/1917333
總結
以上是生活随笔為你收集整理的根据netmask快速判断是否在一个网域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李大爷的决心书,
- 下一篇: vim学习日志(7):替换、删除文件中的