子网掩码详解分析
一、?子網(wǎng)掩碼的概念及作用??
子網(wǎng)掩碼?(subnet mask)?又叫網(wǎng)絡(luò)掩碼、地址掩碼、子網(wǎng)絡(luò)遮罩,是一個(gè)應(yīng)用于?TCP/IP?網(wǎng)絡(luò)的?32?位二進(jìn)制值。它可以屏蔽掉?IP?地址中的一部分,從而分離出?IP?地址中的網(wǎng)絡(luò)部分與主機(jī)部分,基于子網(wǎng)掩碼,管理員可以將網(wǎng)絡(luò)進(jìn)一步劃分為若干子網(wǎng)。它必須結(jié)合?IP?地址一起使用。
二、?為什么需要使用子網(wǎng)掩碼??
雖然我們說(shuō)子網(wǎng)掩碼可以分離出?IP?地址中的網(wǎng)絡(luò)部分與主機(jī)部分,可大家還是會(huì)有疑問(wèn),比如為什么要區(qū)分網(wǎng)絡(luò)地址與主機(jī)地址?區(qū)分以后又怎樣呢?那么好,讓我們?cè)僭敿?xì)的講一下吧!??
在使用?TCP/IP?協(xié)議的兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信時(shí),我們通過(guò)將本機(jī)的子網(wǎng)掩碼與接受方主機(jī)的?IP?地址進(jìn)行?'?與?'運(yùn)算,即可得到目標(biāo)主機(jī)所在的網(wǎng)絡(luò)號(hào),又由于每臺(tái)主機(jī)在配置?TCP/IP?協(xié)議時(shí)都設(shè)置了一個(gè)本機(jī)?IP?地址與子網(wǎng)掩碼,所以可以知道本機(jī)所在的網(wǎng)絡(luò)號(hào)。
通過(guò)比較這兩個(gè)網(wǎng)絡(luò)號(hào),就可以知道接受方主機(jī)是否在本網(wǎng)絡(luò)上。如果網(wǎng)絡(luò)號(hào)相同,表明接受方在本網(wǎng)絡(luò)上,那么可以通過(guò)相關(guān)的協(xié)議把數(shù)據(jù)包直接發(fā)送到目標(biāo)主機(jī);如果網(wǎng)絡(luò)號(hào)不同,表明目標(biāo)主機(jī)在遠(yuǎn)程網(wǎng)絡(luò)上,那么數(shù)據(jù)包將會(huì)發(fā)送給本網(wǎng)絡(luò)上的路由器,由路由器將數(shù)據(jù)包發(fā)送到其他網(wǎng)絡(luò),直至到達(dá)目的地。在這個(gè)過(guò)程中你可以看到,子網(wǎng)掩碼是不可或缺的!
三、?如何用子網(wǎng)掩碼得到網(wǎng)絡(luò)?/?主機(jī)地址??
既然子網(wǎng)掩碼這么重要,那么它是如何分離出?IP?地址中的網(wǎng)絡(luò)地址和主機(jī)地址的呢?
過(guò)程如下:
1.?將?IP?地址與子網(wǎng)掩碼轉(zhuǎn)換成二進(jìn)制;
2.?將二進(jìn)制形式的?IP?地址與子網(wǎng)掩碼做?'?與?'?運(yùn)算,將答案化為十進(jìn)制便得到網(wǎng)絡(luò)地址;
3.?將二進(jìn)制形式的子網(wǎng)掩碼取?'?反?'?;
4.?將取?'?反?'?后的子網(wǎng)掩碼與?IP?地址做?'?與?'?運(yùn)算,將答案化為十進(jìn)制便得到主機(jī)地址。
下面我們用一個(gè)例子給大家演示:
假設(shè)有一個(gè)?I P?地址:?192.168.0.1
子網(wǎng)掩碼為:?255.255.255.0
化為二進(jìn)制為:?I P?地址?11000000.10101000.00000000.00000001
子網(wǎng)掩碼?11111111.11111111.11111111.00000000
將兩者做?'?與?'?運(yùn)算得:?11000000.10101000.00000000.00000000
將其化為十進(jìn)制得:?192.168.0.0
這便是上面?IP?的網(wǎng)絡(luò)地址,主機(jī)地址以此類(lèi)推。
小技巧:由于觀察到上面的子網(wǎng)掩碼為?C?類(lèi)地址的默認(rèn)子網(wǎng)掩碼(至于為什么,可看后面的子網(wǎng)掩碼分類(lèi)就明白了),便可直接看出網(wǎng)絡(luò)地址為?IP?地址的前三部分,即前三個(gè)字節(jié),主機(jī)地址為最后一部分。
四、?子網(wǎng)掩碼的分類(lèi)??
1?)缺省子網(wǎng)掩碼:
即未劃分子網(wǎng),對(duì)應(yīng)的網(wǎng)絡(luò)號(hào)的位都置?1?,主機(jī)號(hào)都置?0?。
A?類(lèi)網(wǎng)絡(luò)缺省子網(wǎng)掩碼:?255.0.0.0
B?類(lèi)網(wǎng)絡(luò)缺省子網(wǎng)掩碼:?255.255.0.0
C?類(lèi)網(wǎng)絡(luò)缺省子網(wǎng)掩碼:?255.255.255.0
192.168.0.0/24(即子網(wǎng)掩碼的前24位為1,255.255.255.0)
2?)自定義子網(wǎng)掩碼:
將一個(gè)網(wǎng)絡(luò)劃分為幾個(gè)子網(wǎng),需要每一段使用不同的網(wǎng)絡(luò)號(hào)或子網(wǎng)號(hào),實(shí)際上我們可以認(rèn)為是將主機(jī)號(hào)分為兩個(gè)部分:子網(wǎng)號(hào)、子網(wǎng)主機(jī)號(hào)。?形式如下:
未做子網(wǎng)劃分的?IP?地址:網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)
做子網(wǎng)劃分后的?IP?地址:網(wǎng)絡(luò)號(hào)+子網(wǎng)號(hào)+子網(wǎng)主機(jī)號(hào)
也就是說(shuō)?IP?地址在劃分子網(wǎng)后,以前的主機(jī)號(hào)位置的一部分給了子網(wǎng)號(hào),余下的是子網(wǎng)主機(jī)號(hào)。
五、子網(wǎng)編址技術(shù)
前面幾點(diǎn)介紹了子網(wǎng)掩碼的一些知識(shí),下面我們來(lái)看看子網(wǎng)劃分,不要認(rèn)為子網(wǎng)劃分與子網(wǎng)掩碼沒(méi)有關(guān)系喲,子網(wǎng)劃分也是靠子網(wǎng)掩碼來(lái)實(shí)現(xiàn)的。
子網(wǎng)劃分說(shuō)白了是這樣一個(gè)事情:因?yàn)樵趧澐至俗泳W(wǎng)后,?IP?地址的網(wǎng)絡(luò)號(hào)是不變的,因此在局域網(wǎng)外部看來(lái),這里仍然只存在一個(gè)網(wǎng)絡(luò),即網(wǎng)絡(luò)號(hào)所代表的那個(gè)網(wǎng)絡(luò);但在網(wǎng)絡(luò)內(nèi)部卻是另外一個(gè)景象,因?yàn)槲覀兠總€(gè)子網(wǎng)的子網(wǎng)號(hào)是不同的,當(dāng)用化分子網(wǎng)后的?IP?地址與子網(wǎng)掩碼(注意,這里指的子網(wǎng)掩碼已經(jīng)不是缺省子網(wǎng)掩碼了,而是自定義子網(wǎng)掩碼,是管理員在經(jīng)過(guò)計(jì)算后得出的)做?'?與?'?運(yùn)算時(shí),每個(gè)子網(wǎng)將得到不同的子網(wǎng)地址,從而實(shí)現(xiàn)了對(duì)網(wǎng)絡(luò)的劃分(得到了不同的地址,當(dāng)然就能區(qū)別出各個(gè)子網(wǎng)了,有趣吧)。
子網(wǎng)編址技術(shù)?,即子網(wǎng)劃分將會(huì)有助于以下問(wèn)題的解決:
1?)巨大的網(wǎng)絡(luò)地址管理耗費(fèi):如果你是一個(gè)?A?類(lèi)網(wǎng)絡(luò)的管理員,你一定會(huì)為管理數(shù)量龐大的主機(jī)而頭痛的;
2?)路由器中的選路表的急劇膨脹:當(dāng)路由器與其他路由器交換選路表時(shí),互聯(lián)網(wǎng)的負(fù)載是很高的,所需的計(jì)算量也很高;
3?)?IP?地址空間有限并終將枯竭:這是一個(gè)至關(guān)重要的問(wèn)題,高速發(fā)展的?internet,?使原來(lái)的編址方法不能適應(yīng),而一些?IP?地址卻不能被充分的利用,造成了浪費(fèi)。
因此,在配置局域網(wǎng)或其他網(wǎng)絡(luò)時(shí),根據(jù)需要?jiǎng)澐肿泳W(wǎng)是很重要的,有時(shí)也是必要的。現(xiàn)在,子網(wǎng)編址技術(shù)已經(jīng)被絕大多數(shù)局域網(wǎng)所使用。
六、?如何劃分子網(wǎng)及確定子網(wǎng)掩碼?
在動(dòng)手劃分之前,一定要考慮網(wǎng)絡(luò)目前的需求和將來(lái)的需求計(jì)劃。
劃分子網(wǎng)主要從以下方面考慮?:
1?、網(wǎng)絡(luò)中物理段的數(shù)量(即要?jiǎng)澐值淖泳W(wǎng)數(shù)量)
2?、每個(gè)物理段的主機(jī)的數(shù)量
確定子網(wǎng)掩碼的步驟:
第一步:確定物理網(wǎng)段的數(shù)量,并將其轉(zhuǎn)換為二進(jìn)制數(shù),并確定位數(shù)?n?。如:你需要?6?個(gè)子網(wǎng),?6?的二進(jìn)制值為110?,共?3?位?,?即?n=3?;
第二步:按照你?IP?地址的類(lèi)型寫(xiě)出其缺省子網(wǎng)掩碼。如?C?類(lèi),則缺省子網(wǎng)掩碼為11111111.11111111.11111111.00000000?;
第三步:將子網(wǎng)掩碼中與主機(jī)號(hào)的前?n?位對(duì)應(yīng)的位置置?1?,其余位置置?0?。若?n=3?且為
C?類(lèi)地址:則得到子網(wǎng)掩碼為?11111111.11111111.11111111.11100000?化為十進(jìn)制得到?255.255.255.224
B?類(lèi)地址:則得到子網(wǎng)掩碼為?11111111.11111111.11100000.00000000?化為十進(jìn)制得到?255.255.224.0
A?類(lèi)地址:則得到子網(wǎng)掩碼為?11111111.11100000.00000000.00000000?化為十進(jìn)制得到?255.224.0.0
另:由于網(wǎng)絡(luò)被劃分為?6?個(gè)子網(wǎng),占用了主機(jī)號(hào)的前?3?位,若是?C?類(lèi)地址,則主機(jī)號(hào)只能用?5?位來(lái)表示主機(jī)號(hào),因此每個(gè)子網(wǎng)內(nèi)的主機(jī)數(shù)量=(?2^5?)-?2?=?30?,?6?個(gè)子網(wǎng)總共所能標(biāo)識(shí)的主機(jī)數(shù)將小于?254?,這點(diǎn)請(qǐng)大家注意!(至于為什么減?2?,可看后面說(shuō)明)
解惑:
1、?你可能有這樣的疑問(wèn),比如在上面的例子里,?6?的二進(jìn)制值為?110?,那么為什么要將子網(wǎng)掩碼中與主機(jī)號(hào)的前n?位對(duì)應(yīng)的位置都置?1?,而不是用?6?的二進(jìn)制?110?去替代前?n?位呢?
呵呵,這個(gè)問(wèn)題提的很好,答案是這樣的:我們計(jì)算子網(wǎng)掩碼的目的是什么?就是希望它在做?'?與?'?的時(shí)候能夠解析出網(wǎng)絡(luò)號(hào),也就是說(shuō)它與網(wǎng)絡(luò)號(hào)所對(duì)應(yīng)的位置都應(yīng)該是?1?(當(dāng)然包括與子網(wǎng)號(hào)所對(duì)應(yīng)的位置),那么很顯然,你寫(xiě)上?110?是不對(duì)的,如果你這么寫(xiě),那么它的意義是主機(jī)號(hào)的前兩位作為子網(wǎng)號(hào),那么這樣將最多劃分?2?個(gè)子網(wǎng)(不明白沒(méi)關(guān)系,下面有計(jì)算子網(wǎng)數(shù)量的方法),與我們當(dāng)初所要?jiǎng)澐值?6?個(gè)子網(wǎng)顯然是不一致的。這樣解釋你能明白馬?
2、?細(xì)心的人可能會(huì)發(fā)現(xiàn),劃分?4?個(gè)子網(wǎng),?5?個(gè)子網(wǎng)和?6?個(gè)子網(wǎng)的子網(wǎng)掩碼是一樣的,同為?255.255.255.224?,是不是錯(cuò)了呢?三個(gè)子網(wǎng)掩碼應(yīng)該不同呀?呵呵,是這樣的,因?yàn)?4?,?5?,?6?的二進(jìn)制值都是?3?為,因此在子網(wǎng)掩碼中這三位都置?1?,劃分是沒(méi)有問(wèn)題的,只是你的理解上有一點(diǎn)小小的問(wèn)題,劃分為?4?個(gè)子網(wǎng),其實(shí)可以理解為劃分為?6?個(gè)子網(wǎng),但你只使用了其中的?4?個(gè)。比如你想劃分?8?個(gè)子網(wǎng),與劃分?14?個(gè)子網(wǎng)所得到的子網(wǎng)掩碼是一樣的,都占用了?4?位作為子網(wǎng)號(hào)。
七、相關(guān)問(wèn)題??
1?)如何判斷是否做了子網(wǎng)劃分?
如果它使用了缺省子網(wǎng)掩碼,那么表示沒(méi)有作子網(wǎng)劃分;反之,則一定作了子網(wǎng)劃分。
2?)如何計(jì)算子網(wǎng)地址?
將?IP?地址與子網(wǎng)掩碼的二進(jìn)制形式做?'?與?'?,得到的結(jié)果即為子網(wǎng)地址。
3?)如何計(jì)算主機(jī)地址?
先將子網(wǎng)掩碼的二進(jìn)制取?'?反?'?,再與?IP?地址做?'?與?'?。
4?)如何計(jì)算子網(wǎng)數(shù)量?
這個(gè)問(wèn)題大家會(huì)常常提到,還是從子網(wǎng)掩碼入手,主要有兩個(gè)步驟:
1.?觀察子網(wǎng)掩碼的二進(jìn)制形式,確定作為子網(wǎng)號(hào)的位數(shù)?n?;
2.?子網(wǎng)數(shù)量為?2^n?-?2?。(為什么減?2?,繼續(xù)往下看)
舉個(gè)例子來(lái)說(shuō),比如有這樣一個(gè)子網(wǎng)掩碼:?255.255.255.224?其二進(jìn)制為:
11111111.11111111.11111111.11100000
可見(jiàn)?n=3,2?的?3?次方為?8?,說(shuō)明子網(wǎng)地址可能有
如下?8?種情況:
000? ? ? 001? ? ? 010 ? ? ? 011 ?? ? 100? ?? 101 ?? ? 110 ?? ? 111
但其中代表網(wǎng)絡(luò)自身的?000?;代表廣播地址的?111?是被保留的,所以要減?2?。
5?)如何計(jì)算總主機(jī)數(shù)量,子網(wǎng)內(nèi)主機(jī)數(shù)量?
總主機(jī)數(shù)量=子網(wǎng)數(shù)量×子網(wǎng)內(nèi)主機(jī)數(shù)量
再用一個(gè)例子給大家說(shuō)明,比如子網(wǎng)掩碼為?255.255.255.224
上面的討論知道它最多可以劃分?6?個(gè)子網(wǎng),那么每個(gè)子網(wǎng)內(nèi)最多有多少個(gè)主機(jī)呢?其實(shí)上面我已經(jīng)給大家算過(guò)了,由于網(wǎng)絡(luò)被劃分為?6?個(gè)子網(wǎng),占用了主機(jī)號(hào)的前?3?位,且是?C?類(lèi)地址,則主機(jī)號(hào)只能用?5?位來(lái)表示主機(jī)號(hào),因此子網(wǎng)內(nèi)的主機(jī)數(shù)量=(?2?的?5?次方)-?2?=?30.
因此通過(guò)這個(gè)子網(wǎng)掩碼我們可以算出這個(gè)網(wǎng)絡(luò)最多可以標(biāo)識(shí)?6*30=180?個(gè)主機(jī)(可見(jiàn),在化分子網(wǎng)后,整個(gè)網(wǎng)絡(luò)所能標(biāo)識(shí)的主機(jī)數(shù)量將減少)。
總結(jié)
- 上一篇: scanf family API 高级用
- 下一篇: java usecompressedcl