1. 程式人生 > >子網掩碼和萬用字元掩碼的區別

子網掩碼和萬用字元掩碼的區別

子網掩碼

子網掩碼,官方的定義是

一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。

說白了子網掩碼的工作原理就是,它擁有和主機IP地址一樣的位數,每一位與對應的ip地址位進行“與”操作,得出的結果就是主機所在的子網,打個比方,192.168.1.1 255.255.255.0這是一個標準的C類網路,子網掩碼/24,所以它的網路位也就是所在的子網就是192.168.1.0,計算過程如下:

首先將192.168.1.0 和 255.255.255.0 轉換成二進位制,然後一位一位的上下進行與操作,很顯然我們得出的結果為

1100 0000. 1010 1000.0000 0001.0000 0001:192.168.1.1

1111 1111.1111 1111.1111 1111.0000 0000 :255.255.255.0

1100 0000.1010 1000.0000 0001.0000 0000:192.168.1.0

子網掩碼有一個最基本的要求,1和0必須連續,也就是說不能出現1111 1111.1111 0011.0000 0000.0000 0000這種情況。

而根據上面的計算,我們可以看出,子網掩碼後面的0的個數就是IP地址主機位的個數,拋去閘道器使用(1個到3個根據不同的冗餘配置),組播(全1),網段(全0)後剩下的就是實際子網中能容納的主機數(再說細緻就是劃分子網的知識了,在這裡不多贅述)。

綜上所述,子網掩碼的作用就是讓我們知道IP地址所屬的網段。我們來實際看一下子網掩碼出現的位置:

  1. 裝置埠ip地址配置:ip add 192.168.1.1 255.255.255.0

  2. 路由彙總中,如將下面四個地址彙總:192.168.20.0 255.255.252.0

    192.168.20.1/24

    192.168.21.1/24

    192.168.22.1/24

    192.168.23.1/24

  3. 在字首列表中,如:ip prefix-list 1 permit 192.168.1.0/24,意為我只關心192.168.1.0/24網段的路由。

  4. 其他一些需要限制具體網段的時候

萬用字元掩碼

萬用字元掩碼,很多人認為萬用字元掩碼只是子網掩碼的相反,如:192.168.1.1 子網掩碼255.255.255.0,它的萬用字元掩碼就是0.0.0.255,其實不是。官方對萬用字元掩碼給的定義是:

路由器使用的萬用字元掩碼與源或目標地址一起來分辨匹配的地址範圍,它與子網掩碼不同。它不像子網掩碼告訴路由器IP地址的哪一位屬於網路號一樣,萬用字元掩碼告訴路由器為了判斷出匹配,它需要檢查IP地址中的多少位。

換句話說,子網掩碼更像是我們瞭解的正則表示式,它是將IP地址看成一個二進位制字串,而我們只關心其中幾位,它的計算方式與子網掩碼也有不同,萬用字元掩碼是0的位置使我們必須要確定相同的,而萬用字元掩碼是1的位置使我們不關心的,如在路由協議中我們想將192.168.1.0網段的所有主機都宣告進入路由協議中,我們使用的語句是:

network 192.168.1.0 0.0.0.255

這裡的計算方法是:

1100 0000. 1010 1000.0000 0001.0000 0000:192.168.1.0

0000 0000.0000 0000.0000 0000.1111 1111:0.0.0.255

所以我們關心的只是前幾位,只要IP地址是為192.168.1.x格式的就宣告進路由協議。說到這裡萬用字元掩碼和子網掩碼可能最本質的一點不同就是萬用字元掩碼不需要1和0必須連續,就比如192.168.0.0 萬用字元掩碼是0.0.2.255

我們轉換成二進位制:

1100 0000. 1010 1000.0000 0000.0000 0000:192.168.0.0

0000 0000.0000 0000.0000 0010.1111 1111:0.0.2.255

注意這裡萬用字元掩碼是不連續的,所以這個萬用字元掩碼代表的意思是匹配192.168.1.0/24和192.168.2.0/24兩個網段的所有主機。

我們來看一下萬用字元掩碼出現的場合:

  1. 將IP地址宣告進路由協議:network 192.168.1.0 0.0.0.255

  2. ACL訪問控制列表:ip access-list 1 permit 192.168.0.0 0.0.2.255

這裡和字首列表中的ip prefix-list 1 permit 192.168.1.0/24做一下比較,ACL訪問控制列表的意思是我抓取一切IP地址滿足192.168.0.x和192.168.1.x格式的無論它的掩碼是/24,/25,/30我都感興趣,但字首列表中192.168.1.0/24得意思是我只關心192.168.1.0/24網段的路由,所有不屬於這個網段的比如IP地址也是192.168.1.x格式但掩碼是/25的IP地址我也不感興趣。

相信經過這麼一番解釋,大家能對子網掩碼和萬用字元掩碼有了寫基本的區分。總結一下,就是說,子網掩碼是用來區分網路位和主機位,而萬用字元掩碼是IP地址的正則表示式。