子網掩碼使用詳解
一、子網掩碼
IP地址是以網路號和主機號來標示網路上的主機的,我們把網路號相同的主機稱之為本地網路,網路號不相同的主機稱之為遠端網路主機,本地網路中的主機可以直接相互通訊;遠端網路中的主機要相互通訊必須通過本地閘道器(Gateway)來傳遞轉發資料。
1、子網掩碼的概念及作用
①、子網掩碼(Subnet Mask)又叫網路掩碼、地址掩碼,必須結合IP地址一起對應使用。
②、只有通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關係,使網路正常工作。
③、子網掩碼和IP地址做“與”運算,分離出IP地址中的網路地址和主機地址,用於判斷該IP地址是在本地網路上,還是在遠端網路網上。
④、子網掩碼還用於將網路進一步劃分為若干子網,以避免主機過多而擁堵或過少而IP浪費。
2、子網掩碼的組成
①、同IP地址一樣,子網掩碼是由長度為32位二進位制陣列成的一個地址。
②、子網掩碼32位與IP地址32位相對應,IP地址如果某位是網路地址,則子網掩碼為1,否則為0。
③、舉個栗子:如:11111111.11111111.11111111.00000000
注:左邊連續的1的個數代表網路號的長度,(使用時必須是連續的,理論上也可以不連續),右邊連續的0的個數代表主機號的長度。
3、子網掩碼的表示方法
①、點分十進位制表示法
二進位制轉換十進位制,每8位用點號隔開
例如:子網掩碼二進位制11111111.11111111.11111111.00000000,表示為255.255.255.0
②、CIDR斜線記法
IP地址/n
例1:192.168.1.100/24,其子網掩碼錶示為255.255.255.0,二進位制表示為11111111.11111111.11111111.00000000
例2:172.16.198.12/20,其子網掩碼錶示為255.255.240.0,二進位制表示為11111111.11111111.11110000.00000000
不難發現,例1中共有24個1,例2中共有20個1,所以n是這麼來的。運營商ISP常用這樣的方法給客戶分配IP地址。
注:n為1到32的數字,表示子網掩碼中網路號的長度,通過n的個數確定子網的主機數=2^(32-n)-2(-2的原因:主機位全為0時表示本網路的網路地址,主機位全為1時表示本網路的廣播地址,這是兩個特殊地址)。
3、為什麼要使用子網掩碼?
前面說道,子網掩碼可以分離出IP地址中的網路地址和主機地址,那為什麼要分離呢?因為兩臺主機要通訊,首先要判斷是否處於同一網段,即網路地址是否相同。如果相同,那麼可以把資料包直接傳送到目標主機,否則就需要路由閘道器將資料包轉發送到目的地。
可以這麼簡單的理解:A主機要與B主機通訊,A和B各自的IP地址與A主機的子網掩碼進行And與運算,看得出的結果:
1、結果如果相同,則說明這兩臺主機是處於同一個網段,這樣A可以通過ARP廣播發現B的MAC地址,B也可以發現A的MAC地址來實現正常通訊。
2、如果結果不同,ARP廣播會在本地閘道器終結,這時候A會把發給B的資料包先發給本地閘道器,閘道器再根據B主機的IP地址來查詢路由表,再將資料包繼續傳遞轉發,最終送達到目的地B。
計算機的閘道器(Gateway)就是到其他網段的出口,也就是路由器介面IP地址。路由器介面使用的IP地址可以是本網段中任何一個地址,不過通常使用該網段的第一個可用的地址或最後一個可用的地址,這是為了儘可能避免和本網段中的主機地址衝突。
在如下拓撲圖示例中,A與B,C與D,都可以直接相互通訊(都是屬於各自同一網段,不用經過路由器),但是A與C,A與D,B與C,B與D它們之間不屬於同一網段,所以它們通訊是要經過本地閘道器,然後路由器根據對方IP地址,在路由表中查詢恰好有匹配到對方IP地址的直連路由,於是從另一邊閘道器介面轉發出去實現互連。
4、子網掩碼的分類
①、預設子網掩碼
也叫預設子網掩碼,即未劃分子網,對應的網路號的位都置 1 ,主機號都置 0 。
未做子網劃分的IP地址:網路號+主機號
A類網路預設子網掩碼: 255.0.0.0,用CIDR表示為/8
B類網路預設子網掩碼: 255.255.0.0,用CIDR表示為/16
C類網路預設子網掩碼: 255.255.255.0,用CIDR表示為/24
②、自定義子網掩碼
將一個網路劃分子網後,把原本的主機號位置的一部分給了子網號,餘下的才是給了子網的主機號。其形式如下:
做子網劃分後的IP地址:網路號+子網號+子網主機號
舉個栗子:
如:192.168.1.100/25,其子網掩碼錶示:255.255.255.128
意思就是將192.168.1.0這個網段的主機位的最高1位劃分為了子網。關於子網劃分將在下篇文章講到,這裡不在闡述。
5、子網掩碼和IP地址的關係
子網掩碼是用來判斷任意兩臺主機的IP地址是否屬於同一網路的依據,就是拿雙方主機的IP地址和自己主機的子網掩碼做與運算,如結果為同一網路,就可以直接通訊。
And按位與運算:
與運算是計算機中一種基本的邏輯運算方式,符號表示為&,也可以表示為 and。
參加運算的兩個資料,按二進位制位進行“與”運算。
運算規則:0&0=0;0&1=0;1&0=0;1&1=1;
即:兩位同時為“1”,結果才為“1”,否則為0
如何根據IP地址和子網掩碼,計算網路地址:
①、將IP地址與子網掩碼轉換成二進位制數。
②、將二進位制形式的 IP 地址與子網掩碼做“與”運算。
③、將得出的結果轉化為十進位制,便得到網路地址。
如下圖:
網路地址計算小技巧:IP地址和子網掩碼做與運算,把IP地址的主機位直接歸0,就快速得到網路地址。所以只要一看到IP地址和子網掩碼,就能馬上確認網路地址。
二、CIDR與VLSM
理解和掌握了子網掩碼這部分知識後,這裡要補充下CIDR和VLSM,這對於我們下篇講述的子網劃分,簡直了就是放大招啊!
1、有類和無類網路,超網和子網
,我們先了解這幾個概念,對於CIDR和VLSM以及子網劃分都是很有用的。
◆ 有類網路:也叫主類網路或標準網路,就是指把IP地址能歸結到的A類、B類、C類IP,使用的是標準的預設子網掩碼。
◆ 無類網路:相對於有類網路,無類網路IP地址的掩碼是變長的。在有類網路的基礎上,拿出一部分主機ID作為子網ID。
◆ 超網:把多個小網路組合成一個大網路,稱為超網(SuperNetting),也可以說子網掩碼長度小於相對應的有類網路的叫超網。
◆ 子網:有類網路劃分成更小後的網路,稱為子網(Subnet),也可以說子網掩碼長度大於相對應的有類網路的叫子網。
2、CIDR無類別域間路由
CIDR(Classless Inter-Domain Routing,無類別域間路由)本質是消除了傳統的A類、B類和C類地址以及劃分子網的概念,將多個地址塊聚合在一起生成一個更大的網路,從而包含更多的主機。
CIDR採用8-30位可變網路ID(最大可用的只能為30位,即保留2位給主機位),而不是A、B、C類網路ID所用的固定的8、16和24位。
CIDR表示方法:IP地址/n,n表示IP地址中的前n位代表網路部分(n個二進位制數1),其餘(32-n)位代表主機部分。這種方法稱為“斜線記法”,它又稱為CIDR記法。
舉個栗子:子網掩碼255.255.255.192,用CIDR表示是多少呢?
①、首先確認的是這是個C類網路地址(C類的預設子網掩碼為255.255.255.0)
②、前面三個位元組都是255,轉換成二進位制都為1,即11111111.11111111.11111111,即24位1。
③、後面一個位元組是192,轉換成二進位制為11000000,即1佔用了2位。
④、子網掩碼共佔用了26位1,所以用CIDR表示為/26。
⑤、如果網路地址為192.168.10.0,再加上CIDR,最後表示為192.168.10.0/26。
CIDR支援路由聚合,能夠將路由表中的許多路由條目合併為成更少的數目,因此可以限制路由器中路由表的增大,減少路由通告,減輕路由器的負擔。
3、VLSM可變長子網掩碼
VLSM(Variable Length Subnet Mask,可變長子網掩碼)規定了在一個有類(A、B、C類)網路內包含多個子網掩碼的能力,以及對一個子網的再進行子網劃分的能力。
每一個IP地址都包含了2部分:網路號和主機號。在有類網路中,32bit的IP地址被分為4段,每段8bit來表示。這使得作為網路號的字首必須是8位,16位或者24位。當網路號是24位的時候,主機號只有8位,也就是說,可分配的最小的地址塊是256個(2^8=256,而實際可分配的主機地址還要減去兩個,一個是網路地址,一個是廣播地址,最後為254個),這個數量對於大多數企業來說是不夠的。
而比這個大一點的IP地址塊是網路號為16位的時候,這個時候可分配的地址塊是65536(2^16=65536),這個數量對於大多數公司又太多了。這導致無論公司選擇哪種型別的網路,都可能對IP地址造成大量的浪費。
IP地址如果只使用有類(A、B、C類)來劃分,會造成大量的浪費或者不夠用。VLSM的誕生有效的解決了這個問題,可以在有類網路的基礎上,通過對IP地址的主機號進行再劃分,把一部分劃入網路號,就能劃分各種型別大小的網路了。網路號也不再僅侷限在8、16和24位這幾個數,而是靈活變化的大小了。
4、CIDR與VLSM的區別
- 在使用CIDR聚合地址時,將原來有類IP地址中的網路位劃出一部分作為主機位使用。
- 在使用VLSM劃分子網時,將原來有類IP地址中的主機位按照需要劃出一部分作為網路位使用。
- CIDR:子網掩碼往左邊移,掩碼netmask縮短了。
- VLSM:子網掩碼往右邊移,掩碼netmask增長了。
- CIDR是把幾個有類網絡合成一個大的網路(超網),用於路由地址聚合。
- VLSM是把一個有類網路分成幾個小型網路(子網),用於更高效劃分子網。
CIDR與VLSM總結:
在某種程度上來說,CIDR和VLSM它們之間可以看做是逆過程。
CIDR是把幾個小網路聚合成一個大網路來做表示,而VLSM則是把一個大網路繼續細分為幾個小網路進行IP地址分配。
CIDR能讓路由器的路由條目得到有效的減少,從而減少路由通告,降低路由器負擔,而VLSM則是充分利用IP進行地址分配來解決IP地址不被浪費的問題,節約IP地址空間,更為有效的使用。