網絡基本功(七):細說IP地址與子網php
轉載請在文首保留原文出處:EMC中文支持論壇https://community.emc.com/go/chinese api
起初,IP地址只有兩層結構:網絡與主機。子網地址向其中添加了一層新的結構:不一樣於僅有主機,網絡有分爲子網與主機。每個子網的功能近乎於完整的網絡。子網的添加構成了三層網絡結構:包含子網的網絡,各自由若干主機構成。IP地址由此被分爲三個部分:網絡ID,子網ID與主機ID。IP地址長度仍固定爲32位,其中,A類網絡8位子網掩碼,B類網絡16位子網掩碼,C類網絡24位子網掩碼。微信
對於每一類網絡,網絡數以及每一網絡中包含的主機數,決定了它們各自佔用多少比特位。這一準則一樣適用於如何劃分子網與主機。子網數量爲2的子網ID次方,每一子網內的主機數爲2的主機ID次方。假設一個B類網絡154.71.0.0,網絡ID佔16位(154.71),主機ID佔16位。沒有子網的狀況下一共可容納65,534臺主機。按照實際需求將16位劃分爲子網與主機:1位子網16位主機,或2與14,3與13。。。以下圖所示,劃分爲5位子網與11位主機,子網數越多,主機數越少。網絡
搭建IP子網時,如何劃分子網與主機數是最重要的問題之一。子網所佔位取決於整個網絡中的物理子網數,每一子網中的主機數不能超過子網劃分所容許的最大數量。ide
IP子網掩碼,表示法以及子網計算:函數
在沒有子網的網絡環境下,路由器經過IP地址的前八位來決定是哪一類型的網絡,從而它們知道哪些是網絡ID哪些是主機ID。劃分子網時,路由器也須要知道主機ID是如何劃分紅子網ID與主機ID的,可是劃分方法能夠是任意組合,也沒有辦法從IP地址看出來。所以,必須有額外的信息告知解析IP地址的設備,這一信息稱爲子網掩碼,以32比特數的形式呈現。url
掩碼位的1和0結合布爾函數與和或的功能對於地址中的比特位進行選擇或清除。子網掩碼中的32位對應於IP地址相同位置上的數字。掩碼位爲1時,則地址中該位做爲網絡ID或子網ID,而掩碼位爲0時,則地址中該位表示主機ID。spa
子網掩碼爲1:將IP地址中的0或1與1進行與操做,即:當子網掩碼位爲1,IP地址保持不變。.net
子網掩碼爲0:任何數和0作與操做都是0,即:當子網掩碼位爲0,IP地址清零。3d
所以,將子網掩碼應用於IP地址,網絡ID和子網ID保持不變,移除主機ID。執行此功能的路由器由此得到子網地址,由於它知道網絡類型,所以可以區分網絡位與子網地址位。
舉例來講,假設將B類網絡154.71.0.0劃分5位爲子網ID,11位爲主機ID。所以,子網掩碼有16個1表明網絡部分(B類網絡),接下來5個1做爲子網部分,11個0用做主機ID。二進制數表示爲11111111 1111111111111000 00000000,十進制數表示爲255.255.248.0。
舉例:
假設有一臺主機IP地址154.71.150.42,路由器須要找出該主機位於哪一子網,則它的掩碼操做以下圖所示:
結果,154.71.150.42所屬的子網爲154.71.144.0。另外一臺路由器可以從中區分出網絡ID與子網ID,由於地址的前兩個比特位是10,是一個B類網絡。因此網絡ID佔16位,子網ID必定是17至21。這裏,子網是10010,或子網18。
提一個問題:既然子網掩碼只是將網絡地址劃分出網絡部分與子網部分,那爲何還要使用另外的32位比特數255.255.248.0,而不直接將IP地址第21位指定爲分界線呢?這是有歷史緣由的:由於須要考慮不連續的掩碼狀況。同時,它也可以讓路由器進行快速的掩碼操做來找出子網地址。
除了將16位劃分爲5位子網ID與11位主機ID,標準也容許前2位用做子網ID,4位用做主機ID,以後3位用做子網ID,7位用做主機ID。所以子網掩碼爲11000011 10000000。固然,這會形成混淆,是不推薦的,實際中也沒有人會這麼作。
鑑於非連續掩碼實際不會應用,以及現今的計算機速度大幅提高,新的表達法爲154.71.150.42/21。
IP子網掩碼設定:
假設B類網絡154.71.0.0,沒有子網的話一共有65,534臺主機。劃分子網時,按照如下方法:
· 1位用做子網ID,15位用做主機ID:那麼子網數爲2^1,第一個子網是0,第二個子網是1。每個子網的主機數是2^15-2,或32,766。
· 2位用做子網ID,14位用做主機ID:那麼子網數爲2^2,四個子網0,1,2,3。每個子網的主機數是2^14-2,或16,382。
子網與主機ID位的劃分取決於子網數與子網中最大主機數。假設一個B類網絡中有10個子網,須要4位表示子網(2^4=16,2^3=8),12位用做主機ID,每一子網最多4,094臺主機。
若是你有20個子網,每一子網3,000臺主機,那麼就會碰到問題。須要5位表示20個子網,而3,000臺主機須要12位。這時須要從新組織物理網絡,若是沒法作到,就須要第二個B類網絡。
自定義子網掩碼的方法是:從指定網絡類型的默認子網掩碼中,從最左邊的0位開始,按照須要的子網數將0改成1。假設C類網絡200.13.94.0,最後8位可供劃分子網與主機,則有6種不一樣的劃分方法。假如使用3位做爲子網ID,5位做爲主機ID,那麼:
默認C類網絡子網掩碼:11111111 11111111 11111111 00000000
將最左邊的3位0改成1:11111111 11111111 11111111 11100000
即子網掩碼爲:255.255.255.224。
一般狀況下,全部子網大小必須相同。所以,最大一個子網的主機數決定了須要多少位比特用做主機ID。所以前例中,前19個子網每一個子網最多100臺主機,而第20個子網須要3000個主機,就會碰到問題。這種狀況下,須要將最後一個過大的子網拆成若干個小的子網。