#IP地址及編碼方式
我們一開始必須要了解清楚,IP地址就是給因特網(wǎng)的每一個主機(jī)(或路由器)的每一個接口分配一個在全世界范圍內(nèi)唯一的32位標(biāo)識符。有了這個唯一的標(biāo)識符,我們才可能在因特網(wǎng)上進(jìn)行方便的尋址。我們一般都是將32位的IP地址中的每8位,用等效的十位數(shù)進(jìn)行替換,方便我們閱讀。舉個例子:
32位:10000000 00001011 00000011 00011111
我們一般用點分十進(jìn)制表示:128.11.3.31
IP地址的編址方式經(jīng)過了3個階段:
-
分類編址
。這是最基本的編址方式。
-
劃分子網(wǎng)
。對分類編址的改進(jìn)
- 無分類編址 。這是目前正在使用的編址方式。
接下來我們一一看看這三種編址方式:
分類編址
分類編址的地址,是由兩個固定長度的字段組成。一個字段是
網(wǎng)絡(luò)號(net-id)
,它是標(biāo)志主機(jī)所連網(wǎng)絡(luò)。另一個字段是
主機(jī)號(host-id)
,它標(biāo)志的是該主機(jī),并且主機(jī)號必須在網(wǎng)絡(luò)號的網(wǎng)絡(luò)范圍內(nèi)是唯一的。這樣子,一個IP地址在整個因特網(wǎng)范圍內(nèi)便是唯一的。
分類編址:IP地址定義為:{<網(wǎng)絡(luò)號>, <主機(jī)號>}
這樣子的編址方式有以下幾種好處:
-
分配IP地址的機(jī)構(gòu)僅僅需要分配網(wǎng)絡(luò)號即可,主機(jī)號自行分配。
- 路由器僅僅根據(jù)主機(jī)的網(wǎng)絡(luò)號進(jìn)行分組轉(zhuǎn)發(fā),這樣子路由表里的內(nèi)容會大大減少,提升了路由尋址的效率。
但是有一個問題就是,32位的IP地址,我們需要多少位的網(wǎng)絡(luò)號和多少位的主機(jī)號呢?分類編址的方案,設(shè)計了幾種方案,我們看看最常用的三種單播地址。
-
A類地址:網(wǎng)絡(luò)號占1個字節(jié),且網(wǎng)絡(luò)號第一位是0,相應(yīng)主機(jī)號占3個字節(jié)。
-
B類地址:網(wǎng)絡(luò)號占2個字節(jié),且網(wǎng)絡(luò)號前兩位是10,相應(yīng)主機(jī)號占2個字節(jié)。
-
C類地址:網(wǎng)絡(luò)號占3個字節(jié),且網(wǎng)絡(luò)號前三位是110,相應(yīng)主機(jī)號占1個字節(jié)。
- D、E這兩種地址咱不討論
通過這樣分類編址,當(dāng)我們得到一個IP地址時,我們可以通過前幾位就判斷地址類別并計算出網(wǎng)絡(luò)號和主機(jī)號。
劃分子網(wǎng)
分類編址看起來很美好,但是實際上它考慮并不周全。在實際應(yīng)用中,中小型規(guī)模的網(wǎng)絡(luò)開始爆發(fā),這樣導(dǎo)致了一個問題十分明顯。1個C類地址空間占一個字節(jié)也就是能容納256個主機(jī),其中還有兩個是用于特殊目的。對于一個組織來說,254臺主機(jī),真的太不夠用了。所以只能申請B類地址,也就是占2個字節(jié),65536臺主機(jī)。這樣的結(jié)果導(dǎo)致大量的IP地址被浪費,很快就會面臨分配完的危險。
為了解決這個問題,提出了分類子網(wǎng)的解決方案。也就是說,我們讓幾個中小規(guī)模的組織使用同一個A或B類地址的網(wǎng)絡(luò)號,然后再通過
子網(wǎng)號(subnet-id)
來區(qū)分是否在同一條鏈路上。子網(wǎng)號是不定長的,對應(yīng)的主機(jī)號就減少子網(wǎng)號所占的位數(shù)。
劃分子網(wǎng):IP地址定義為:{<網(wǎng)絡(luò)號>, <子網(wǎng)號>, <主機(jī)號>}
劃分子網(wǎng)的編址方式,通過將A、B類地址空間劃分給多個組織使用,大大減少了對A、B類地址空間的浪費。
無分類編址
劃分子網(wǎng)在一度程度上,大大緩解了空間浪費問題。但是C類地址因為空間太小,得不到充分利用,也是非常大的浪費。后來IETF就提出了
無分類編址(CIDR)
方法來解決IP緊張的問題。
CIDR消除了傳統(tǒng)的A、B、C類地址以及劃分子網(wǎng)的概念。IP地址分成兩個部分,前部分是不定長的
網(wǎng)絡(luò)前綴(network-prefix)
,代替分類編址中的“網(wǎng)絡(luò)號”來指明網(wǎng)絡(luò),后面仍舊是主機(jī)號,指明主機(jī)號。
無分類編址:IP地址定義為:{<網(wǎng)絡(luò)前綴>, <主機(jī)號>}
是不是感覺又回到了分類編址的兩級結(jié)構(gòu),不過它們非常重要的區(qū)別就是網(wǎng)絡(luò)前綴是不定長的。這樣一個IP地址并不能確定網(wǎng)絡(luò)前綴和主機(jī),所以需要配合一個32位的
地址掩碼(address mask)
。地址掩碼是由一串1和跟著后面的0組成的,而且1的長度就是網(wǎng)絡(luò)前綴的長度。還可以通過
斜線記法(slash notation)
,來表示網(wǎng)絡(luò)前綴1的長度,例如
/20
代表地址掩碼有20個1。
-
A類地址的默認(rèn)地址掩碼是
255.0.0.0
-
B類地址的默認(rèn)地址掩碼是
255.255.0.0
-
C類地址的默認(rèn)地址掩碼是
255.255.255.0
。
IP地址與地址掩碼的計算
接下來,就是看一下IP地址如何配合地址掩碼來實現(xiàn)唯一的標(biāo)識。只要把地址掩碼和IP地址進(jìn)行逐位的“與”運算,就可以得到它的網(wǎng)絡(luò)地址(主機(jī)號全為0)。我們直接舉個例子看看通過IP地址如何得到網(wǎng)絡(luò)地址的。
已知:
IP地址:141.14.72.24(141.14.01001000.24)
地址掩碼:255.255.192.0(255.255.11000000.0)
或者用斜線記法:141.14.72.24/18
思路:
將IP地址與網(wǎng)絡(luò)掩碼都轉(zhuǎn)化成二進(jìn)制后進(jìn)行“與”運算,這里有個技巧就是,全為1和全為0都是不需要轉(zhuǎn)化運算的。所以在這個題目里,我們僅僅需要將第三個字節(jié)進(jìn)行轉(zhuǎn)化后運算,得到主機(jī)號為0的網(wǎng)絡(luò)號。
計算得:
網(wǎng)絡(luò)地址:141.14.64.0(141.14.01000000.0)
技巧提示在例子中也講了,但這里要強(qiáng)調(diào)一點就是,同一個IP地址與不同的地址掩碼是可以得到相同的網(wǎng)絡(luò)號的。雖然網(wǎng)絡(luò)號一樣,但是不同的地址掩碼所代表的主機(jī)空間也是不一樣的。所以主機(jī)在進(jìn)行網(wǎng)絡(luò)配置的時候, 不僅需要配置主機(jī)的IP地址,還需要配置所在網(wǎng)絡(luò)的地址掩碼 。
CIDR地址塊
網(wǎng)絡(luò)前綴不僅僅只是用來表示某個網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,它還可以表示連續(xù)的IP地址塊,所以它不再沿用“網(wǎng)絡(luò)號”這個說法。CIDR把 網(wǎng)絡(luò)前綴都相同 的連續(xù)IP地址組成“CIDR地址塊”。我們只要知道了CIDR地址塊的任意一個地址,就可以知道地址塊的最小和最大地址,以及地址數(shù)。舉個例子:
已知:
IP地址:128.14.35.7/20
思路:
我們從這里可以得到前20位是網(wǎng)絡(luò)前綴,所以后12位便是主機(jī)號。所以我們讓主機(jī)號都為0,則是最小地址。主機(jī)號都為1,就是最大地址。而地址數(shù)就是2的12次方。
計算:
最小地址:128.13.32.0
最大地址:128.13.47.255
地址數(shù):4096個
我們使用CIDR可以更有效的分配IPv4的地址空間,可以根據(jù)需求分配適當(dāng)大小的CIDR地址塊,擁有之前幾種方法所不具備的靈活性。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
