子網掩碼的主要功能是告知網絡設備,一個特定的IP地址的哪一部分是包含網絡地址與子網地址,哪一部分是主機地址。網絡的路由設備只要識別出目的地址的網絡號與子網號即可作出路由尋址決策,IP地址的主機部分不參與路由器的路由尋址操作,只用于在網段中唯一標識一個網絡設備的接口。
本來,如果網絡系統中只使用A、B、C這三種主類地址,而不對這三種主類地址作子網劃分或者進行主類地址的匯總,則網絡設備根據IP地址的第一個字節的數值范圍即可判斷它屬于A、B、C中的哪一個主類網,進而可確定該IP地址的網絡部分和主機部分,不需要子網掩碼的輔助。
但為了使系統在對A、B、C這三種主類網進行了子網的劃分,或者采用無類別的域間選路技術(Classless Inter-Domain Routing,CIDR)對網段進行匯總的情況下,也能對IP地址的網絡及子網部分與主機部分作正確的區分,就必須依賴于子網掩碼的幫助。
子網掩碼使用與IP相同的編址格式,子網掩碼為1的部分對應于IP地址的網絡與子網部分,子網掩碼為0的部分對應于IP地址的主機部分。將子網掩碼和IP地址作"與"操作后,IP地址的主機部分將被丟棄,剩余的是網絡地址和子網地址。例如,一個IP分組的目的IP地址為:10.2.2.1,若子網掩碼為:255.255.255.0,與之作"與"運算得:10.2.2.0,則網絡設備認為該IP地址的網絡號與子網號為:10.2.2.0。子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬于同一子網絡的根據。
最為簡單的理解就是兩臺計算機各自的IP地址與子網掩碼進行AND運算后,如果得出的結果是相同的,則說明這兩臺計算機是處于同一個子網絡上的,可以進行直接的通訊。就這么簡單。
請看以下示例:
運算演示之一:aa
I P 地址 192.168.0.1
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制后為:
192.168.0.0
運算演示之二:
I P 地址 192.168.0.254
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.11111110
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制后為:
192.168.0.0
運算演示之三:
I P 地址 192.168.0.4
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.00000100
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制后為:
192.168.0.0
通過以上對三組計算機IP地址與子網掩碼的AND運算后,我們可以看到它運算結果是一樣的。均為192.168.0.0
所以計算機就會把這三臺計算機視為是同一子網絡,然后進行通訊的。我現在單位使用的代理服務器,內部網絡就是這樣規劃的。
也許你又要問,這樣的子網掩碼究竟有多少了IP地址可以用呢?你可以這樣算。
根據上面我們可以看出,局域網內部的ip地址是我們自己規定的(當然和其他的ip地址是一樣的),這個是由子網掩碼決定的通過對255.255.255.0的分析。可得出:
前三位IP碼由分配下來的數字就只能固定為192.168.0所以就只剩下了最后的一位了,那么顯而易見了,ip地址只能有(2的8次方-1),即256-1=255一般末位為0或者是255的都有其特殊的作用。
但是這樣劃分但浪費地址了,所以后來又引出一種叫VLSM(可變長掩碼)的新算法。
如果共有50臺機器,那一定是用C類地址。但是如果用C類的話每一個網段可以用到253臺主機而你現在只有50臺,這樣的話不是要浪費200臺了嗎?但是如果用了VLSM就不同了請看。
如果是靜態掩碼的話C類地址因該是255.255.255.0
50<2的7次方,化為十進制就是64。所以VLSM就是255.255.255.64
例一:IP:192.168.0.1
SubstMask:255.255.255.64
轉化為二進制11000000.10101000.00000000.00000001
11111111.11111111.00000000.1000000
AND與運算
11000000.10101000.00000000.00000000
轉化為十進制192.168.0.0
例二:192.168.0.50
SubstMask:255.255.255.64
轉化為二進制11000000.10101000.00000000.00110010
11111111.11111111.11111111.01000000
AND與運算
11000000.10101000.00000000.00000000
轉化為十進制192.168.0.0
以上二個地址在同一網段
再看:
例三:IP:192.168.0.65
SubstMask:255.255.255.64
轉化為二進制11000000.10101000.00000000.01000001
11000000.10101000.00000000.01000000
AND與運算
110000000.10101000.00000000.010000000
轉化為十進制192.168.0.64
劃開了!!就這么簡單!


