網際協議IP(2)

01 簡介

在《網絡層 | 網際協議IP(1)》中,我們講了IPv4地址的格式、分類、特殊IP地址和私有地址,今天我們來講一講劃分子網和構成超網。

之前也提到過,早期的IP地址是沒有分類的。但隨著IP地址資源枯竭問題的產生,後來出現了分類網絡,劃分子網,無類別域間路由(CIDR)(超網)。

02 劃分子網


分類網絡雖然緩解了IP地址資源消耗的速度,但還是存在不合理的地方。

以一個企業為例。如果申請一個C段,最多可分配2^8-2=254個地址;如果申請一個B段,最多可分配2^16-2=65534個地址。在兩者的選擇中,他們通常是選擇申請B類地址,以應對後續企業的發展,這就造成了IP地址的浪費。因此,很有必要提高IP地址資源的利用率。

在提出劃分子網這個概念的時候,那時候其實還沒有分類網絡。劃分子網,將二級IP變成三級IP,更加靈活,減輕路由表負擔;而且可以將一個網絡劃分為多個子網,而不用去獲取一組網絡,這樣能夠很好地滿足組織內部需求,詳情可查閱RFC950。

在劃分子網之前,IP地址=網絡號+主機號;劃分子網後,IP地址=網絡號+子網號+主機號。

注意,無論是否劃分子網,IP地址都是32位二進制數,並不是說劃分子網後,IP地址就變成了32位以上的二進制數。劃分子網後,網絡號是不變的,只是從主機號中借用若干位作為子網號而已。

網絡層 | 網際協議IP(2)

另外,子網是相對組織內部而言的。對外部來說,IP“網絡號”=網絡號。

網絡層 | 網際協議IP(2)

如上圖,從外部來看,所有設備的網絡號都是145.13.0.0。而當數據到達組織內部的時候,IP”網絡號“=網絡號+子網號。

網絡層 | 網際協議IP(2)

這裡要說的是,IP協議傳輸數據是通過IP數據報(後續會講),但IP數據報和IP地址裡並沒有任何關於子網的信息。

那麼當數據到達組織內部時,如何知道該將數據發往哪個子網呢?這個時候就要藉助子網掩碼了。

子網掩碼

子網掩碼和IP地址一樣,也是32位二進制數,也採用“點分十進制”記法,但子網掩碼通常是由連續的1和0組成。1用來標記網絡位,0用來標記主機位。

另外,互聯網標準規定所有網絡都要使用子網掩碼。這樣做有什麼好處?不管網絡有沒有劃分子網,只要把子網掩碼和IP地址進行逐位的“與”運算就可以得出網絡地址。

如果沒有劃分子網,則使用默認子網掩碼。

網絡層 | 網際協議IP(2)

如果劃分了子網,則將網絡號+子網號對應的位掩碼置1,主機號對應的位掩碼依然為0。

網絡層 | 網際協議IP(2)

下面我們舉個實例,來加深大家的理解。172.16.123.1是一個B類地址,未劃分子網時網絡號和主機號各16位,默認子網掩碼為255.255.0.0。

網絡層 | 網際協議IP(2)

如上圖,我將位掩碼設置為18位,也就是說有18-16=2位子網號位,那麼子網掩碼應該是由18個連續的1和14個連續的0組成。

網絡層 | 網際協議IP(2)

然後我們把IP地址和子網掩碼逐位“與”運算,我們就得出了該IP地址的網絡地址為172.16.64.0。

“與”運算大家應該都學過吧,和小學的算術一樣,將每一位對齊。只有兩個1相“與”,結果才為1;兩個數中有任何一個數為0,那麼結果都為0。

得出了網絡地址,那我們就很容易得出在172.16.64.0這個子網中可用的IP地址範圍:172.16.64.1~172.16.127.254。

怎麼得出來的?相信大家看了之前的《網絡層 | 網際協議IP(1)》應該都能明白。如果還是不明白,那隻能怪我講的不清晰:主機號全0和全1我們一般都不使用。

另外大家有沒有發現,截圖中最大IP的第三個8位,兩位子網號和六位主機號一同被轉換為十進制的127了,所以大家不要以為點分十進制的每位數就是代表網絡號或主機號。比如什麼172.16.0.0是網絡號,0.0.127.254是主機號;或者172.16.127.0是網絡號,0.0.0.254是主機號。

點分十進制只是為了讓我們人類方便查看和記憶而已,因此大家不要有:“欸,怎麼把子網號和主機號合併成八位轉換成十進制了呢?“這種想法;IP地址其實質是一個32位二進制數,要得出網絡號和主機號,依賴於子網掩碼。

03 構成超網


分類網絡和劃分子網等技術雖然緩解了IP地址資源消耗的速度,但依然沒辦法阻止IP地址資源的耗盡。因此,為了進一步提高IP地址的利用率,IETF研究出了無類別域間路由(CIDR)。詳情可查閱RFC4632。

CIDR主要有三個特點:無類、前綴、地址塊。

CIDR是基於可變長子網掩碼的無類別編址方法,沒有了ABC類地址,以及在主機號中借用若干位做為子網號的概念,所有IP地址都是無類別的。

CIDR將32位的IP地址分為前後兩部分,前部分稱為前綴,指明將32位IP地址中的哪些位解釋為網絡號,哪些位用於對內部的各個終端進行編號。IP=前綴+主機號,IP地址的網絡號不再限定為8位、16位以及24位,更加靈活。

CIDR將前綴相同的連續的IP地址組成地址塊,並採用“斜線記法”來表示IP地址,也稱為CIDR記法。

“斜線記法”在“點分十進制”的IP地址後跟上一條斜線“/”,然後在斜線後寫上前綴所佔的位數。

128.14.35.7/20

如上所示,就是“斜線記法”。我們不僅能簡單的識別出IP地址為128.14.35.7,網絡前綴為20位(也就是網絡號有20位),還可以計算出該IP屬於哪個CIDR地址塊,該CIDR地址塊的IP地址範圍。

網絡層 | 網際協議IP(2)

把主機位全部置0,即可得出IP屬於128.14.32.0/20這個地址塊,同時可用的地址範圍為128.14.32.1~128.14.47.254。

另外,CIDR沒有了劃分子網這個概念,是指沒有在主機位中再借用若干位作為子網號而已,使用CIDR地址塊的單位依然可以在內部劃分出子網。具體的做法是,在主機位中借用若干位,延長前綴的位數,IP還是=前綴+主機號。

比如在128.14.32.0/20這個地址塊中劃分4個子網,那麼我們需要在主機號中借用兩位,將前綴延長到22位,這樣128.14.32.0/20這個地址塊就有了以下四個子網:

網絡層 | 網際協議IP(2)

CIDR不僅提高了IP地址的利用率,同時實現了路由聚合,因為也被稱為“構成超網”,路由的知識我會在後面介紹,這裡我們只專注於IP地址的發展歷程。

04 總結


劃分子網:
1、二級IP變三級IP:網絡號+子網號+主機號
2、網絡號不變,從主機號中借用若干位做為子網號,主機號減少相同的位數

3、子網相對於內部而言,對外依然是二級IP,對內才是三級IP
4、根據子網掩碼來判斷該將數據發送到哪個子網
5、子網掩碼與IP地址相與即可得出IP地址的網絡號
構成超網:
1、無類、前綴、地址塊
2、斜線記法


分享到:


相關文章: