什么是子網掩碼?簡述子網掩碼的編碼規則及分類
子網掩碼(subnet mask)又叫網絡掩碼、地址掩碼、子網絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分。[1]
子網掩碼是一個32位地址,用于屏蔽IP地址的一部分以區別網絡標識和主機標識,并說明該IP地址是在局域網上,還是在廣域網上。
分類
子網掩碼一共分為兩類。一類是缺省(自動生成)子網掩碼,一類是自定義子網掩碼。[6]
缺省子網掩碼
缺省子網掩碼即未劃分子網,對應的網絡號的位都置1,主機號都置0。
A類網絡缺省子網掩碼:255.0.0.0
B類網絡缺省子網掩碼:255.255.0.0
C類網絡缺省子網掩碼:255.255.255.0[6]
在缺省掩碼下的IP地址中,網絡地址和廣播地址的計算很簡單,雖然按照計算方法需要進制轉換和與運算,但是在實際使用當中,我們已經可以快速寫出結果。網絡地址的計算就是子網掩碼中0對應的地方變0, “255”對應的地方不變即可;而廣播地址則是子網掩碼中0對應 的地方變“255”,“255”對應的地方不變。[6]
自定義子網掩碼
自定義子網掩碼是將一個網絡劃分為幾個子網,需要每一段使用不同的網絡號或子網號,實際上我們可以認為是將主機號分為兩個部分:子網號、子網主機號。形式如下:
未做子網劃分的IP地址:網絡號+主機號
做子網劃分后的IP地址:網絡號+子網號+子網主機號
也就是說IP地址在劃分子網后,以前的主機號位置的一部分給了子網號,余下的是子網主機號。子網掩碼是32位二進制數,它的子網主機標識用部分為全“0”。利用子網掩碼可以判斷兩臺主機是否在同一子網中。若兩臺主機的IP地址分別與它們的子網掩碼相“與”后的結果相同,則說明這兩臺主機在同一子網中。
變長子網掩碼
變長子網掩碼VLSM就是每段IP地址使用不同長度的子網掩碼,可以對子網進行層次化編址,以便最有效的利用現有的地址空間。變長子網掩碼(Variable-Length Subnet Masks,VLSM)的出現是打破傳統的以類(class)為標準的地址劃分方法,是為了緩解IP地址緊缺而產生的。他的作用是節約IP地址空間;減少路由表大小。需要注意的是注意事項:使用VLSM時,所采用的路由協議必須能夠支持它,這些路由協議包括RIPv2,OSPF,EIGRP和BGP。
IPV6與子網掩碼
如果是都是使用的IPV6的話是沒有子網掩碼的概念。IPV6是端到端的連接通信,不需要子網了。但是,目前似乎更多都是在IPV4上使用隧道的方式使用IPV6。完全消滅IPV4還需要相當長的時間,子網掩碼目前還是要的。
IPv6中沒有子網掩碼的概念,也沒有網絡號與主機號的概念。在IPV6中前綴長度就可以當作子網掩碼來理解。接口ID可以當作主機號來理解。在Windows XP中,IPv6地址的前綴長度默認為64位。IPv6的地址空間過于廣大,可能一個子網的子網都要比整個IPv4的世界要大很多,所以子網的概念在IPv6世界里已經淡化了。但是,同一站點的主機要想直接通信(不經過路由器),還是要求前綴相同才行的。