子網劃分
Internet組織機構定義了五種IP地址,用於主機的有A、B、C三類地址。其中A類網絡有126個,每個A類網絡可能有16,777,214台主機,它們處於同一廣播域。而在同一廣播域中有這麼多結點是不可能的,網絡會因為廣播通信而飽和,結果造成16,777,214個地址大部分沒有分配出去,形成了浪費。而另一方面,隨著互連網應用的不斷擴大,IP地址資源越來越少。為了實現更小的廣播域並更好地利用主機地址中的每一位,可以把基於類的IP網絡進一步分成更小的網絡,每個子網由路由器界定並分配一個新的子網網絡地址,子網地址是借用基於類的網絡地址的主機部分創建的。劃分子網後,通過使用掩碼,把子網隱藏起來,使得從外部看網絡沒有變化,這就是子網掩碼。
1. 子網掩碼
RFC 950定義了子網掩碼的使用,子網掩碼是一個32位的2進制數,其對應網絡地址的所有位都置為1,對應於主機地址的所有位都置為0。由此可知,A類網絡的缺省的子網掩碼是255.0.0.0,B類網絡的缺省的子網掩碼是255.255.0.0,C類網絡的缺省的子網掩碼是255.255.255.0。將子網掩碼和IP地址按位進行邏輯“與”運算,得到IP地址的網絡地址,剩下的部分就是主機地址,從而區分出任意IP地址中的網絡地址和主機地址。子網掩碼常用點分十進制表示,我們還可以用網絡前綴法表示子網掩碼,即“/<網絡地址位數>”。如138.96.0.0/16表示B類網絡138.96.0.0的子網掩碼為255.255.0.0。
子網掩碼告知路由器,地址的哪一部分是網絡地址,哪一部分是主機地址,使路由器正確判斷任意IP地址是否是本網段的,從而正確地進行路由。例如,有兩台主機,主機一的IP地址為222.21.160.6,子網掩碼為255.255.255.192,主機二的IP地址為222.21.160.73,子網掩碼為255.255.255.192。現在主機一要給主機二發送數據,先要判斷兩個主機是否在同一網段。
主機一
222.21.160.6即:11011110.00010101.10100000.00000110
255.255.255.192即:11111111.11111111.11111111.11000000
按位邏輯與運算結果為: 11011110.00010101.10100000.00000000
主機二
222.21.160.73 即:11011110.00010101.10100000.01001001
255.255.255.192即:11111111.11111111.11111111.11000000
按位邏輯與運算結果為:11011110.00010101.10100000.01000000
兩個結果不同,也就是說,兩台主機不在同一網絡,數據需先發送給默認網關,然後再發送給主機二所在網絡。那麼,假如主機二的子網掩碼誤設為255.255.255.128,會發生什麼情況呢?
讓我們將主機二的IP地址與錯誤的子網掩碼相“與”:
222.21.160.73 即:11011110.00010101.10100000.01001001
255.255.255.128即:11111111.11111111.11111111.10000000
結果為 11011110.00010101.10100000.00000000
這個結果與主機的網絡地址相同,主機與主機二將被認為處於同一網絡中,數據不再發送給默認網關,而是直接在本網內傳送。由於兩台主機實際並不在同一網絡中,數據包將在本子網內循環,直到超時並拋棄。數據不能正確到達目的機,導致網絡傳輸錯誤。
反過來,如果兩台主機的子網掩碼原來都是255.255.255.128,誤將主機二的設為255.255.255.192,主機一向主機二發送數據時,由於IP地址與錯誤的子網掩碼相與,誤認兩台主機處於不同網絡,則會將本來屬於同一子網內的機器之間的通信當作是跨網傳輸,數據包都交給缺省網關處理,這樣勢必增加缺省網關的負擔,造成網絡效率下降。所以,子網掩碼不能任意設置,子網掩碼的設置關系到子網的劃分。
2. 子網劃分與掩碼的設置
子網劃分是通過借用IP地址的若干位主機位來充當子網地址從而將原網絡劃分為若干子網而實現的。劃分子網時,隨著子網地址借用主機位數的增多,子網的數目隨之增加,而每個子網中的可用主機數逐漸減少。以C類網絡為例,原有8位主機位,2的8次方即256個主機地址,默認子網掩碼255.255.255.0。借用1位主機位,產生2個子網,每個子網有126個主機地址;借用2位主機位,產生4個子網,每個子網有62個主機地址……每個網中,第一個IP地址(即主機部分全部為0的IP)和最後一個IP(即主機部分全部為1的IP)不能分配給主機使用,所以每個子網的可用IP地址數為總IP地址數量減2;根據子網ID借用的主機位數,我們可以計算出劃分的子網數、掩碼、每個子網主機數,列表如下: