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