如何判斷兩個IP地址是否在同一個網段?什麼是子網掩碼?
本文轉載自【微信公眾號:手機電腦雙駭客,ID:heikestudio】經微信公眾號授權轉載,如需轉載與原文作者聯絡
對於ip地址我們前面透過多次文章,大家都有一定的理解,不過透過的留言,有部分朋友還是對子網掩碼、ip地址的網段有些疑問,那麼現在我們一起來解下這方面的內容。
一、什麼是子網掩碼?
在瞭解ip地址的網段之前,我們先來了解子網掩碼,很多對網路瞭解不深的朋友都對子網掩碼有些迷惑, 不瞭解它是用來幹什麼的?
子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。
說的通俗的話,就是用來分割子網和區分那些ip是同一個網段的,那些不是同一網段的。
例如,兩個人都叫張三,但一個張三是張家村的,另一個張三是張村的,那麼如何區分這兩個張三分別是屬於那個村的呢?得讓村長來區分,就可以準確的把各自的張三領回村,那麼子網掩碼就相當於村長,它就是用來區分ip該ip地址是屬於那個網段的。
在實際專案中,我們通常會遇到這樣的ip地址。
ip地址:192。168。1。1 子網掩碼:255。255。255。0
ip地址:192。168。1。2 子網掩碼:255。255。255。0
我們可以直接的判斷,他們是同屬於一個網段的ip地址。
那麼對於下面這樣的呢?
ip地址:192。168。1。1 子網掩碼:255。255。255。0
ip地址:192。168。1。2 子網掩碼:255。255。0。0
這兩個ip地址雖然在不看掩碼的情況下,比較像,但他們並不是同一個網段內的。
這個可以從子網掩碼來判斷,
192。168。1。1 255。255。255。0是屬於192。168。1。0網段的。
而192。168。1。2 255。255。0。0是屬於192。168。0。0網段。
二、如何根據掩碼來確定ip地址網段
上面我們已經舉例瞭解了子網掩碼的作用,接下來我們再來了解如何確定子網掩碼和判斷ip地址的網段。
通常我們在劃分vlan的時候會使用以下例子:
例1:
建立vlan1:ip地址:192。168。1。1 子網掩碼:255。255。255。0
建立vlan2: ip地址:192。168。2。1 子網掩碼:255。255。255。0
那麼他們是不是在同一個網段呢?平時配置ip地址較多的朋友,可以直觀的判斷,他們並不是屬於同一個網段,那麼如何計算呢?要想判斷兩個ip地址是不是在同一個網段,只需將ip地址與子網掩碼做與運算,如果得出的結果一樣,則這兩個ip地址是同一個子網當中。
詳細計算
將ip地址192。168。1。1轉換為二進位制
11000000 10101000 00000001 00000001
將子網掩碼255。255。255。0轉換成二進位制
11111111。11111111。11111111。00000000
然後將兩者相“與(and)“運算:
11000000 10101000 00000001 00000001
11111111。11111111。11111111。00000000
然後得到:
11000000 10101000 00000001 00000000
轉換成網路號就是:192。168。1。0
將ip地址192。168。2。1轉換為二進位制
11000000 10101000 00000010 00000001
將子網掩碼255。255。255。0轉換成二進位制
11111111。11111111。11111111。00000000
然後將兩者相“與(and)”運算:
11000000 10101000 00000010 00000001
11111111。11111111。11111111。00000000
然後得到:
11000000 10101000 00000010 00000000
轉換成網路號就是:192。168。2。0
很明顯,二者的結果是不一樣的,一個是網段192。168。1。0,一個是網段192。168。2。0,所以不是一個網段。
例2
ip地址1:192。168。1。1 子網掩碼:255。255。252。0
ip地址2:192。168。2。1 子網掩碼:255。255。252。0
很明顯,我們這個和上面例1的ip地址是一樣的,只是子網掩碼不一樣,如果不看子網掩碼,首先可能就判斷他們不是同一個網段。
這裡面和上面例1中唯一變化就是子網掩碼從255。255。255。0換成了255。255。252。0了,那我們來看下,他們是否屬於同一個網段。
詳細計算
將ip地址192。168。1。1轉換為二進位制
11000000 10101000 00000001 00000001
將子網掩碼255。255。252。0轉換成二進位制
11111111。11111111。11111100。00000000
然後將兩者相“與(and)“運算:
11000000 10101000 00000001 00000001
11111111。11111111。11111100。00000000
然後得到:
11000000 10101000 00000000 00000000
轉換成網路號就是:192。168。0。0
將ip地址192。168。2。1轉換為二進位制
11000000 10101000 00000010 00000001
將子網掩碼255。255。252。0轉換成二進位制
11111111。11111111。11111100。00000000
然後將兩者相“與(and)”運算:
11000000 10101000 00000010 00000001
11111111。11111111。11111100。00000000
然後得到:
11000000 10101000 00000000 00000000
轉換成網路號就是:192。168。0。0
很明顯,二者的結果是一樣的,都是屬於192。168。0。0網段,所以他們是同屬於一個網段。
當然,如果對子網較熟了就不需要經過這些運算了,大部分的網段可以透過分析子網掩碼與ip地址就可以判斷出來是否屬於網一網段,但前提是你需要熟悉網段的原理與運算的方法。
三、如何根據ip地址子網掩碼
確定ip地址子網掩碼
大部分的情況下,我們網路中只要不超過254臺主機的的話,子網掩碼都可以設定成255。255。255。0。那麼超過了254臺主機的話怎麼辦呢?
可以劃分vlan,也可以設定成一個大網段,劃分vlan我們就不說了,上面有例子,設定成一個大網段就有一個難點,如何確定這個大網段裡面的子網掩碼呢?
例如
假設監控網路中有600個點位,我們現在也不想把它劃分vlan(實際專案中大部分是會劃分vlan的),假設只想用一個大網段把這600個點位分配ip地址,如何設定ip地址,如何確定子網掩碼?
分析:首先我們知道600個點位,可以使用3個254個ip地址段來分配。
可以使用
ip段一:192。168。0。1——192。168。0。254
ip段二:192。168。1。1——192。168。1。254
ip段三:192。168。2。1——192。168。2。254
每個網段有254個ip地址,完全夠600個點位用的。那麼問題來了,如果要使這三個ip段在同一個網段內,那麼這個大網段共同的子網掩碼是多少呢?
我們來分析下:
將ip地址192。168。0。1轉換為二進位制
11000000 10101000 00000000 00000001
將ip地址192。168。1。1轉換為二進位制
11000000 10101000 00000001 00000001
將ip地址192。168。2。1轉換為二進位制
11000000 10101000 00000010 00000001
轉換成了二進位制,可以看得出,三個ip段的二進位制前面22位的是不變的,那麼可以將他們表示成:
ip段一:192。168。0。1/22
ip段二:192。168。1。1/22
ip段三:192。168。2。1/22
這種192。168。1。x/22形式的ip地址相信大家平時都見過,就是已經告訴了子網掩碼了。
也就是說他們共同的子網掩碼二進位制前面22個都是1。
11111111 11111111 11111100 00000000
轉換成十進位制,那就是255。255。252。0,所以他們共同的子網掩碼就是255。255。252。0。
當然在實際專案中,與網路接觸較多的弱電人不需要透過一系列的換算,直接可以透過簡單的判斷估算出來這個大網段的子網掩碼,因此,弱電君是講原理,方便大家理解,所以所有的換算都是透過運算出來的。