IP地址結構

___Blue_H發表於2018-05-16

分類定址(網路號+主機號)

在最初定義Internet地址結構時,每個單播IP地址都有一個網路部分,用於識別介面使用的IP地址在哪個網路中可被發現;以及一個主機地址,用於識別由網路部分給出的網路中的特定主機。因此,地址中的一些連續位稱為網路號,其餘連續位稱為主機號。

基於上述分類方法,IPv4地址按照網路號和主機號的長度被分為五大類。A、B、C類用於為Internet(單播地址)中的裝置介面分配地址,以及其他特殊情況下使用。類由地址中的頭幾位來定義:0為A類,10為B類,110為C類,1110為D類,1111為E類。D類地址供組播使用,E類地址保留。分類如下圖所示:


由此可得出按此分類方式得到的IPv4地址空間劃分:


上述地址空間劃分只是理論上的,而實際上有幾個地址通常不作為單播地址使用,特別是地址塊中的第一個和最後一個地址通常不使用。
這種IP地址結構分類的特點與缺陷是顯而易見的,例如A類地址的網路數少但主機數多,C類地址的網路數多而主機數少,這往往會造成一個網路號內的主機號無法完全分配,造成IP地址資源的利用率低下的問題。從而使IPv4的地址資源很快就出現了枯竭的趨勢,尋找進一步細分IP地址的方法也就成為了必然。

子網定址(細分主機號)

最初分類定址的方法很難為接入Internet的新網段分配一個新的網路號,隨著20世紀80年代初區域網(Local Area Network,LAN)的發展這一問題更為突出。為了解決這一問題,人們自然想到一種方式,在一個站點接入Internet後為其分配網路號,然後由站點管理員進一步劃分本地的子網數。也即在初始的網路號+主機號的結構的基礎上,將主機號劃分為子網號+主機號,這樣就可以在不改變核心路由基礎的前提下細分網路。這種方法被稱為子網定址。
子網定址改變了最初一個IP地址的網路部分和主機部分的限制,但這樣做只是針對一個站點自身而言,Internet的其餘部分仍然只能看到傳統的A~E的網路。從本質上來說,子網定址為IP地址結構增加了一個額外部分,但它沒有為地址增加長度。因此,一個站點管理員能在子網數和每個子網中預期的主機數之間靈活劃分,不需要與其他站點協調。
子網定址提供這種靈活性的代價是增加成本。由於當前的子網欄位和主機欄位是由站點指定而不是由網路號分類決定,一個站點中所有路由器和主機需要一種新的方式來確定地址中的子網部分和其中的主機部分。在出現子網之前,這個資訊可直接從一個網路號中獲得,只需知道是A類、B類或C類地址。

子網掩碼

子網掩碼(subnet mask)是由一臺主機或路由器使用的分配位,以確定如何從一臺主機對應IP地址中獲得網路和子網資訊。IP子網掩碼與對應的IP地址長度相同(IPv4為32位,IPv6為128位)。其格式如下:


掩碼由路由器和主機使用,以確定一個IP地址的網路/子網部分的結束和主機部分的開始。子網掩碼中的一位設為1表示一個IP地址的對應位與一個地址的網路/子網部分的對應位相結合,並將結果作為轉發資料包的基礎。相反,子網掩碼中的一位設為0表示一個IP地址的對應位作為主機號的一部分。如圖所示


一個IP地址與一個子網掩碼按位與後就形成了用於路由的地址的網路/子網識別符號(字首),這是邊界路由器需要的資訊,以確定子網。Internet路由系統其餘部分不需要識別子網掩碼,因為站點之外的路由器做出路由決策只基於地址的網路號部分,並不需要網路/子網或主機部分。因此,子網掩碼純粹是站點內部的區域性問題。

可變長度子網掩碼

子網掩碼的出現讓網路劃分的細粒度更高,提高了IP地址資源的利用率。將一個分配給站點的網路號進一步細分為多個可分配大小相同的子網,並根據網路管理員的合理要求使每個子網能支援相同數量的主機。這種方式在複雜的網路環境中,其IP地址資源還是會有不小的浪費。因此我們自然想到了放寬一個網路的子網掩碼的限制,讓其長度可變,即在同一站點的不同部分,將不同長度的子網掩碼應用於相同網路號。雖然這樣增加了地址配置管理的複雜性,但也提高了子網結構的靈活性,因為不同子網可以容納不同數量的主機。這就是可變長度子網掩碼(Variable Length Subnet Mask,VLSM),用於分割一個網路號,使每個子網支援不同數量的主機。VLSM可對子網進行層次化編址,使得多級子網成為可能,這種高階IP定址技術允許網路管理員對已子網進行劃分,以便最有效地利用現有的地址空間。


無類別域間路由和路由聚合

20世紀90年代初,在採用子網定址緩解IPv4地址資源面臨枯竭的危機後,Internet開始面臨更嚴重的規模問題。主要體現在以下三個方面:
·到1994年,一半以上的B類地址已被分配。預計B類地址大約在1995年將被用盡
·32位的IPv4地址被認為不足以應付Internet在21世紀初的預期規模
·全球性路由表的條目數(每個網路號對應一條)隨著子網的出現增長得更快,路由效能將受到影響
IPv6被設想於解決第2個問題,而對於更為迫切的另外兩個問題,無類別域間路由和路由聚合的概念應運而生。

無類別域間路由

為了幫助換件IPv4地址的壓力,分類定址方案通常使用一個類似VLSM的方案,擴充套件Internet路由系統以支援無類別域間路由(Classless InterDomain Routing,CIDR)。CIDR對原來用於分配A類、B類和C類地址的有類別路由選擇程式進行了重新構建。CIDR用若干位長的字首取代了原來IP地址結構中對網路部分的限制,這提供了一種方便的分配連續地址範圍的方式。

字首

使用CIDR,未經過預定義的任何地址範圍可作為一個類的一部分,但需要一個類似於子網掩碼的掩碼,有時也稱為CIDR掩碼。CIDR掩碼不再侷限於一個站點,而對於全球性路由系統都是可見的。因此,除了網路號之外,核心Internet路由器必須能解釋和處理這種掩碼。這個數字組合稱為網路字首,它用於IPv4和IPv6地址管理。

消除一個IP地址中網路號和主機號的預定義分隔,將使更細粒度的IP地址分配範圍稱為可能。與分類定址類似,地址空間分割成塊最容易通過數值連續的地址來實現,以便用於某種型別或某些特殊用途。一個n位的字首是一個IP地址的前n個位的預定義值。對於IPv4,n(字首長度)的值通常在範圍0~32,對於IPv6則是0~128。它通常被追加到基本IP地址,並且後面跟著一個/字元。如圖所示:


採用字首概念的另一個原因是,早期的分類定址方案易於被這個方案覆蓋。
CIDR建立於“超級組網”的基礎上,超級組網可看作是子網劃分的逆過程。子網劃分時,從IP地址的主機部分借位,將其合併至網路部分;而在超級組網中,則是將網路部分的某些位合併進主機部分。

路由聚合

通過取消分類結構的IP地址,能分配各種尺寸的IP地址塊。但這樣做只是進一步提高了IP地址的劃分細粒度,而並沒有減少路由表的條目數。路由聚合通過將相鄰的多個IP字首合併成一個短字首(稱為一個聚合或匯聚),可以覆蓋更多地址空間。

例如,三個IP地址:190.154.27.0/26,190.154.27.64/26,190.154.27.192/26,其二進位制表示如下:


190.154.27.0/26和190.15427.64/26的26位字首中只有最後一位不同,因此這兩個IP地址可以聚合為190.154.27.0/25。
路由匯聚提高了路由選擇的效率,降低了對路由器記憶體的要求(路由表條目數減少),且當重新計算路由表或檢索路由表條目,即對路由表進行分析以找出前往目標IP地址的路徑時,降低了所需的CPU週期(也就是時間)。

IP地址從最初的分類定址方式逐漸改進,增加了子網掩碼,再到對有類別的路由進行重新構建,放棄了早期的有類別路由,改用無類別域間路由,都是為了更有效地利用IP地址資源。這些技術雖然大部分是為了應對IPv4地址資源不足而提出的,但對於IPv6也同樣適用。這一系列技術使得IPv4的生存時間延長,但其32位的地址空間只能分配約43億個IP地址,隨著物聯網等概念的興起,接入Internet的裝置將不僅僅只侷限於傳統意義上的計算機,且數量將大幅增加。因此IPv6的提出才是從根本上解決IP地址資源短缺的方案。

本文摘自《TCP/IP詳解 卷1:協議(中文版)第2版》、百度百科,有改動

相關文章