轉自:https://blog.csdn.net/wuseyukui/article/details/24306645網絡
子網掩碼能夠分離出IP地址中的網絡地址和主機地址,那爲何要分離呢?由於兩臺計算機要通信,首先要判斷是否處於同一個廣播域內,即網絡地址是否相同。若是網絡地址相同,代表接受方在本網絡上,那麼能夠把數據包直接發送到目標主機,不然就須要路由網關將數據包轉發送到目的地。ui
1)缺省子網掩碼:.net
(未劃分子網)3d
子網掩碼32位與IP地址32位對應,若是某位是網絡地址,則子網掩碼爲1,不然爲0。例如A類IP地址,第一節爲網絡地址,其他三節爲主機地址,故掩碼爲「11111111.00000000.00000000.00000000」blog
A類網絡缺省子網掩碼:255.0.0.0
B類網絡缺省子網掩碼:255.255.0.0
C類網絡缺省子網掩碼:255.255.255.0ip
2)自定義子網掩碼:資源
(用於劃分子網)路由
將一個網絡劃分爲若干子網,但願每一個子網擁有不一樣的網絡地址或子網地址。由於IP是有限的,實際上咱們是將主機地址分爲兩個部分:子網網絡地址、子網主機地址。形式以下:bfc
未作子網劃分的ip地址:網絡地址+主機地址
作子網劃分後的ip地址:網絡地址+(子網網絡地址+子網主機地址)二進制
子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬於同一子網絡的根據。具體說就是兩臺計算機各自的IP地址與子網掩碼進行「與」運算後,若是得出的結果是相同的,則說明這兩臺計算機是處於同一個子網絡上的,能夠進行直接的通信。
例如:設IP地址爲192.168.10.2,子網掩碼爲255.255.255.240,那麼子網掩碼是怎樣來區分網絡地址和主機地址的呢。
主機地址爲:0.0.0.2(將掩碼取反,而後與運算)
例如:在A類IP地址中,每一個A類網絡可能有16,777,214臺主機,它們處於同一廣播域。在同一廣播域中有這麼多主機是不可能的,網絡會由於廣播通訊而飽和。另外一方面,IP地址資源愈來愈少。爲實現更小的廣播域,就須要進一步分紅更小的網絡。劃分子網後,經過使用掩碼,把子網隱藏起來,使得從外部看網絡沒有變化,這就是子網掩碼。
子網劃分是經過借用IP地址中若干位主機地址來充當子網的網絡地址,從而將原網絡劃分爲若干子網。
劃分子網時,隨着子網地址借用主機位數的增多,子網的數目隨之增長,但每一個子網中的可用主機數逐漸減小。
如C類地址,原有8位主機位,2^8-2即254個主機地址,默認子網掩碼255.255.255.0。(全0或全1不可用)
借用1位主機位,產生$2^1$=2個子網,每一個子網有2^7個主機地址;
借用2位主機位,產生$2^2$=4個子網,每一個子網有2^6個主機地址;
……
根據子網ID借用的主機位數,咱們能夠計算出劃分的子網數、掩碼、每一個子網主機數,列表以下:
一、利用子網數來計算
在求子網掩碼以前必須先搞清楚要劃分的子網數目,以及每一個子網內的所需主機數目。
1)將子網數目轉化爲二進制來表示
2)取得該二進制的位數,爲 N
3)取得該 IP地址的類子網掩碼,將其主機地址部分的的前N位置 1 即得出該IP地址劃分子網的子網掩碼。
如欲將C類IP地址192.168.10.0劃分紅4個子網:
1)4=100
2)該二進制爲三位數,N = 3
3)將A類地址的子網掩碼255.255.255.0的主機地址前3位置 1,獲得子網掩碼255.255.255.224。(具體見下圖)
二、利用主機數來計算
1)將主機數目轉化爲二進制來表示
2)若是主機數小於或等於254(注意去掉保留的兩個IP地址),則取得該主機的二進制位數。
3)將該類IP地址的主機地址位數所有置1,而後從後向前的將N位所有置爲 0,即爲子網掩碼值。
如欲將B類IP地址192.168.10.0劃分紅若干子網,每一個子網內有主機25臺:
1) 25=11001
2)該二進制爲十位數,N = 5
3)將該B類地址的子網掩碼 255.255.255.0的主機地址所有置 1,獲得255.255.255.255,而後再從後向前將後5位置0,即爲:11111111.11111111.11111111.11100000,即255.255.252.224。
步驟總結:
1.子網數和主機數均可以計算子網掩碼,2.取得子網/主機的二進制位數,3.網絡地址置0主機地址置1,4.換成十進制