當前位置:首頁 » 網路連接 » 計算機網路cidr
擴展閱讀
網路設置有點卡 2025-03-21 12:34:51

計算機網路cidr

發布時間: 2023-08-31 06:28:06

計算機網路第四章(網路層)

4.1、網路層概述

簡介

網路層的主要任務是 實現網路互連 ,進而 實現數據包在各網路之間的傳輸

這些異構型網路N1~N7如果只是需要各自內部通信,他們只要實現各自的物理層和數據鏈路層即可

但是如果要將這些異構型網路互連起來,形成一個更大的互聯網,就需要實現網路層設備路由器

有時為了簡單起見,可以不用畫出這些網路,圖中N1~N7,而將他們看做是一條鏈路即可

要實現網路層任務,需要解決一下主要問題:

網路層向運輸層提供怎樣的服務(「可靠傳輸」還是「不可靠傳輸」)

在數據鏈路層那課講過的可靠傳輸,詳情可以看那邊的筆記:網路層對以下的 分組丟失 、 分組失序 、 分組重復 的傳輸錯誤採取措施,使得接收方能正確接受發送方發送的數據,就是 可靠傳輸 ,反之,如果什麼措施也不採取,則是 不可靠傳輸

網路層定址問題

路由選擇問題

路由器收到數據後,是依據什麼來決定將數據包從自己的哪個介面轉發出去?

依據數據包的目的地址和路由器中的路由表

但在實際當中,路由器是怎樣知道這些路由記錄?

由用戶或網路管理員進行人工配置,這種方法只適用於規模較小且網路拓撲不改變的小型互聯網

另一種是實現各種路由選擇協議,由路由器執行路由選擇協議中所規定的路由選擇演算法,而自動得出路由表中的路有記錄,這種方法更適合規模較大且網路拓撲經常改變的大型互聯網

補充 網路層(網際層) 除了 IP協議 外,還有之前介紹過的 地址解析協議ARP ,還有 網際控制報文協議ICMP , 網際組管理協議IGMP

總結

4.2、網路層提供的兩種服務

在計算機網路領域,網路層應該向運輸層提供怎樣的服務(「 面向連接 」還是「 無連接 」)曾引起了長期的爭論。

爭論焦點的實質就是: 在計算機通信中,可靠交付應當由誰來負責 ?是 網路 還是 端系統 ?

面向連接的虛電路服務

一種觀點:讓網路負責可靠交付

這種觀點認為,應藉助於電信網的成功經驗,讓網路負責可靠交付,計算機網路應模仿電信網路,使用 面向連接 的通信方式。

通信之前先建立 虛電路 (Virtual Circuit),以保證雙方通信所需的一切網路資源。

如果再使用可靠傳輸的網路協議,就可使所發送的分組無差錯按序到達終點,不丟失、不重復。

發送方 發送給 接收方 的所有分組都沿著同一條虛電路傳送

虛電路表示這只是一條邏輯上的連接,分組都沿著這條邏輯連接按照存儲轉發方式傳送,而並不是真正建立了一條物理連接。

請注意,電路交換的電話通信是先建立了一條真正的連接。

因此分組交換的虛連接和電路交換的連接只是類似,但並不完全一樣

無連接的數據報服務

另一種觀點:網路提供數據報服務

互聯網的先驅者提出了一種嶄新的網路設計思路。

網路層向上只提供簡單靈活的、 無連接的 、 盡最大努力交付 的 數據報服務 。

網路在發送分組時不需要先建立連接。每一個分組(即 IP 數據報)獨立發送,與其前後的分組無關(不進行編號)。

網路層不提供服務質量的承諾 。即所傳送的分組可能出錯、丟失、重復和失序(不按序到達終點),當然也不保證分組傳送的時限。

發送方 發送給 接收方 的分組可能沿著不同路徑傳送

盡最大努力交付

如果主機(即端系統)中的進程之間的通信需要是可靠的,那麼就由網路的 主機中的運輸層負責可靠交付(包括差錯處理、流量控制等) 。

採用這種設計思路的好處是 :網路的造價大大降低,運行方式靈活,能夠適應多種應用。

互連網能夠發展到今日的規模,充分證明了當初採用這種設計思路的正確性。

虛電路服務與數據報服務的對比

對比的方面 虛電路服務 數據報服務

思路 可靠通信應當由網路來保證 可靠通信應當由用戶主機來保證

連接的建立 必須有 不需要

終點地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點的完整地址

分組的轉發 屬於同一條虛電路的分組均按照同一路由進行轉發 每個分組獨立選擇路由進行轉發

當結點出故障時 所有通過出故障的結點的虛電路均不能工作 出故障的結點可能會丟失分組,一些路由可能會發生變化

分組的順序 總是按發送順序到達終點 到達終點時不一定按發送順序

端到端的差錯處理和流量控制 可以由網路負責,也可以由用戶主機負責 由用戶主機負責

4.3、IPv4

概述

分類編制的IPv4地址

簡介

每一類地址都由兩個固定長度的欄位組成,其中一個欄位是 網路號 net-id ,它標志主機(或路由器)所連接到的網路,而另一個欄位則是 主機號 host-id ,它標志該主機(或路由器)。

主機號在它前面的網路號所指明的網路范圍內必須是唯一的。

由此可見, 一個 IP 地址在整個互聯網范圍內是唯一的 。

A類地址

B類地址

C類地址

練習

總結

IP 地址的指派范圍

一般不使用的特殊的 IP 地址

IP 地址的一些重要特點

(1) IP 地址是一種分等級的地址結構 。分兩個等級的好處是:

第一 ,IP 地址管理機構在分配 IP 地址時只分配網路號,而剩下的主機號則由得到該網路號的單位自行分配。這樣就方便了 IP 地址的管理。

第二 ,路由器僅根據目的主機所連接的網路號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所佔的存儲空間。

(2) 實際上 IP 地址是標志一個主機(或路由器)和一條鏈路的介面 。

當一個主機同時連接到兩個網路上時,該主機就必須同時具有兩個相應的 IP 地址,其網路號 net-id 必須是不同的。這種主機稱為 多歸屬主機 (multihomed host)。

由於一個路由器至少應當連接到兩個網路(這樣它才能將 IP 數據報從一個網路轉發到另一個網路),因此 一個路由器至少應當有兩個不同的 IP 地址 。

(3) 用轉發器或網橋連接起來的若干個區域網仍為一個網路 ,因此這些區域網都具有同樣的網路號 net-id。

(4) 所有分配到網路號 net-id 的網路,無論是范圍很小的區域網,還是可能覆蓋很大地理范圍的廣域網,都是平等的。

劃分子網的IPv4地址

為什麼要劃分子網

在 ARPANET 的早期,IP 地址的設計確實不夠合理:

IP 地址空間的利用率有時很低。

給每一個物理網路分配一個網路號會使路由表變得太大因而使網路性能變壞。

兩級的 IP 地址不夠靈活。

如果想要將原來的網路劃分成三個獨立的網路

所以是否可以從主機號部分借用一部分作為子網號

但是如果未在圖中標記子網號部分,那麼我們和計算機又如何知道分類地址中主機號有多少比特被用作子網號了呢?

所以就有了劃分子網的工具: 子網掩碼

從 1985 年起在 IP 地址中又增加了一個「 子網號欄位 」,使兩級的 IP 地址變成為 三級的 IP 地址 。

這種做法叫做 劃分子網 (subnetting) 。

劃分子網已成為互聯網的正式標准協議。

如何劃分子網

基本思路

劃分子網純屬一個 單位內部的事情 。單位對外仍然表現為沒有劃分子網的網路。

從主機號 借用 若干個位作為 子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位。

凡是從其他網路發送給本單位某個主機的 IP 數據報,仍然是根據 IP 數據報的 目的網路號 net-id,先找到連接在本單位網路上的路由器。

然後 此路由器 在收到 IP 數據報後,再按 目的網路號 net-id 和 子網號 subnet-id 找到目的子網。

最後就將 IP 數據報直接交付目的主機。

劃分為三個子網後對外仍是一個網路

優點

1.  減少了 IP 地址的浪費        2.  使網路的組織更加靈活        3.  更便於維護和管理

劃分子網純屬一個單位內部的事情,對外部網路透明 ,對外仍然表現為沒有劃分子網的一個網路。

子網掩碼

(IP 地址) AND (子網掩碼) = 網路地址 重要,下面很多相關知識都會用到

舉例

例子1

例子2

默認子網掩碼

總結

子網掩碼是一個網路或一個子網的重要屬性。

路由器在和相鄰路由器交換路由信息時,必須把自己所在網路(或子網)的子網掩碼告訴相鄰路由器。

路由器的路由表中的每一個項目,除了要給出目的網路地址外,還必須同時給出該網路的子網掩碼。

若一個路由器連接在兩個子網上,就擁有兩個網路地址和兩個子網掩碼。

無分類編址的IPv4地址

為什麼使用無分類編址

無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)。

CIDR 最主要的特點

CIDR使用各種長度的「 網路前綴 」(network-prefix)來代替分類地址中的網路號和子網號。

IP 地址從三級編址(使用子網掩碼)又回到了兩級編址 。

如何使用無分類編址

舉例

路由聚合(構造超網)

總結

IPv4地址的應用規劃

給定一個IPv4地址快,如何將其劃分成幾個更小的地址塊,並將這些地址塊分配給互聯網中不同網路,進而可以給各網路中的主機和路由器介面分配IPv4地址

定長的子網掩碼FLSM(Fixed Length Subnet Mask)

劃分子網的IPv4就是定長的子網掩碼

舉例

通過上面步驟分析,就可以從子網1 ~ 8中任選5個分配給左圖中的N1 ~ N5

採用定長的子網掩碼劃分,只能劃分出2^n個子網,其中n是從主機號部分借用的用來作為子網號的比特數量,每個子網所分配的IP地址數量相同

但是也因為每個子網所分配的IP地址數量相同,不夠靈活,容易造成IP地址的浪費

變長的子網掩碼VLSM(Variable Length Subnet Mask)

無分類編址的IPv4就是變長的子網掩碼

舉例

4.4、IP數據報的發送和轉發過程

舉例

源主機如何知道目的主機是否與自己在同一個網路中,是直接交付,還是間接交付?

可以通過 目的地址IP 和 源地址的子網掩碼 進行 邏輯與運算 得到 目的網路地址

如果 目的網路地址 和 源網路地址 相同 ,就是 在同一個網路 中,屬於 直接交付

如果 目的網路地址 和 源網路地址 不相同 ,就 不在同一個網路 中,屬於 間接交付 ,傳輸給主機所在網路的 默認網關 (路由器——下圖會講解),由默認網關幫忙轉發

主機C如何知道路由器R的存在?

用戶為了讓本網路中的主機能和其他網路中的主機進行通信,就必須給其指定本網路的一個路由器的介面,由該路由器幫忙進行轉發,所指定的路由器,也被稱為 默認網關

例如。路由器的介面0的IP地址192.168.0.128做為左邊網路的默認網關

主機A會將該IP數據報傳輸給自己的默認網關,也就是圖中所示的路由器介面0

路由器收到IP數據報後如何轉發?

檢查IP數據報首部是否出錯:

若出錯,則直接丟棄該IP數據報並通告源主機

若沒有出錯,則進行轉發

根據IP數據報的目的地址在路由表中查找匹配的條目:

若找到匹配的條目,則轉發給條目中指示的嚇一跳

若找不到,則丟棄該數據報並通告源主機

假設IP數據報首部沒有出錯,路由器取出IP數據報首部各地址欄位的值

接下來路由器對該IP數據報進行查表轉發

逐條檢查路由條目,將目的地址與路由條目中的地址掩碼進行邏輯與運算得到目的網路地址,然後與路由條目中的目的網路進行比較,如果相同,則這條路由條目就是匹配的路由條目,按照它的下一條指示,圖中所示的也就是介面1轉發該IP數據報

路由器是隔離廣播域的

4.5、靜態路由配置及其可能產生的路由環路問題

概念

多種情況舉例

靜態路由配置

舉例

默認路由

舉例

默認路由可以被所有網路匹配,但路由匹配有優先順序,默認路由是優先順序最低的

特定主機路由

舉例

有時候,我們可以給路由器添加針對某個主機的特定主機路由條目

一般用於網路管理人員對網路的管理和測試

多條路由可選,匹配路由最具體的

靜態路由配置錯誤導致路由環路

舉例

假設將R2的路由表中第三條目錄配置錯了下一跳

這導致R2和R3之間產生了路由環路

聚合了不存在的網路而導致路由環路

舉例

正常情況

錯誤情況

解決方法

黑洞路由的下一跳為null0,這是路由器內部的虛擬介面,IP數據報進入它後就被丟棄

網路故障而導致路由環路

舉例

解決方法

添加故障的網路為黑洞路由

假設。一段時間後故障網路恢復了

R1又自動地得出了其介面0的直連網路的路由條目

針對該網路的黑洞網路會自動失效

如果又故障

則生效該網路的黑洞網路

總結

4.6、路由選擇協議

概述

網際網路所採用的路由選擇協議的主要特點

網際網路採用分層次的路由選擇協議

自治系統 AS :在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量以確定分組在該 AS 內的路由,同時還使用一種 AS 之間的路由選擇協議用以確定分組在 AS之間的路由。

自治系統之間的路由選擇簡稱為域間路由選擇,自治系統內部的路由選擇簡稱為域內路由選擇

域間路由選擇使用外部網關協議EGP這個類別的路由選擇協議

域內路由選擇使用內部網關協議IGP這個類別的路由選擇協議

網關協議 的名稱可稱為 路由協議

常見的路由選擇協議

❷ 計算機網路中CIDR地址聚合的問題

CIDR是用於幫助減緩IP地址和路由表增大的一個技術,基本思想是:取消IP地址分類,將多個地址塊聚合在一起,生成一個更大的網路,以包含更多的主機
最大可能的聚合指的應該是精確聚合,使用最少的CIDR地址來精確聚合。
最大可能的聚合結果是:212.56.132.0/22,聚合的基本思想就是減少網路位來增加主機位,

❸ 計算機網路CIDR地址可以全1或是全0嗎

沒有全是 1 或者o 學習概念
CIDR採用各種長度的"網路前綴"來代替分類地址中的網路號和子網號,其格式為:IP地址 = {<網路前綴>,<主機號>}。為了區分網路前綴,通常採用"斜線記法"(CIDR記法),即IP地址/網路前綴所佔比特數。例如:192.168.24.0/22 表示32位的地址中,前22位為網路前綴,後10(32-22=10)位代表主機號。在換算中,192.168.24.0/22 對應的二進制為: 1100 0000(192),1010 1000(168),0001 1000(24),0000 0000(0) 其中紅色為主機號,總共有10位。當這10位全為0時,取最小地址192.168.24.0,當這10位全為1時,取最大地址192.168.27.255。但請注意,在實際中,主機號全為0或者全為1的地址一般不使用,作為預留地址另有作用。所以第一個地址為1100 0000,1010 10000,0001 1000,0000 0001,即192.168.24.1 最後一個地址為:1100 0000,1010 10000,0001 1011,1111 1110,即192.168.27.254 因此,本例中將第三段地址數據中最小是00011000(24),最大是00011011(27),第四段地址數據中最小為0000 0001(1),最大為1111 1110(254),以上括弧中數據為十進制,其前面為二進制。所以本例中192.168.24.0/22 對應地址段為192.168.24.1-192.168.27.254,共4個網段。

❹ 計算機網路(四)網路層

主要任務是把分組從源端傳到目的端,為分組交換網上的不同主機提供通信服務。網路層傳輸單位是數據報。

鏈路層數據幀可封裝數據的上限稱為最大傳送單元MTU

標識:同一數據報的分片使用同一標識。

中間位DF(Don』t Fragment):

最低位MF(More Fragment):

片偏移:指出較長分組分片後,某片在原分組中的相對位置。以8B為單位。除了最後一個分片,每個分片長度一定是8B的整數倍。

IP地址:全世界唯一的32位/4位元組標識符,標識路由器主機的介面。IP地址::={<網路號>,<主機號>}

有一些IP地址是不能用的,有其特殊的作用,如:

網路地址轉換NAT(Network Address Translation):在專用網連接到網際網路的路由器上安裝NAT軟體,安裝了NAT軟體的路由器叫NAT路由器,它至少有一個有效的外部全球IP地址。

此外,為了網路安全,劃分出了部分IP地址和私有IP地址,私有IP地址網段如下:

路由器對目的地址是私有IP地址的數據報一律不進行轉發。

分類的IP地址的弱點:

某單位劃分子網後,對外仍表現為一個網路,即本單位外的網路看不見本單位內子網的劃分。

路由器轉發分組的演算法:

無分類域間路由選擇CIDR:

CIDR記法:IP地址後加上「/」,然後寫上網路前綴(可以任意長度)的位數。e.g. 128.14.32.0/20

CIDR把網路前綴都相同的連續的IP地址組成一個「CIDR地址塊」。

使用CIDR時,查找路由表可能得到幾個匹配結果(跟網路掩碼按位相與),應選擇具有最長網路前綴的路由。前綴越長,地址塊越小,路由越具體。

將多個子網聚合成一個較大的子網,叫做構成超網,或路由聚合。方法:將網路前綴縮短(所有網路地址取交集)。

由於在實際網路的鏈路上傳送數據幀時,最終必須使用MAC地址。

ARP協議:完成主機或路由器IP地址到MAC地址的映射。

ARP協議使用過程:

ARP協議4種典型情況:

動態主機配置協議DHCP是 應用層 協議,使用 客戶/伺服器 方式,客戶端和服務端通過 廣播 方式進行交互,基於 UDP

DHCP提供即插即用聯網的機制,主機可以從伺服器動態獲取IP地址、子網掩碼、默認網關、DNS伺服器名稱與IP地址,允許地址重用,支持移動用戶加入網路,支持在用地址續租。

DHCP工作流程如下:

ICMP協議支持主機或路由器:包括差錯(或異常)報告和網路探詢,分部發送特定ICMP報文

ICMP差錯報告報文(5種):

不應發送ICMP差錯報文的情況:

ICMP詢問報文:

ICMP的應用:

32位IPv4地址空間已分配殆盡,這時,可以採用更大地址空間的新版本的IPv6,從根本上解決地址耗盡問題

IPv6數據報格式如下圖

IPv6的主要特點如下:

IPv6地址表示形式:

零壓縮:一連串連續的0可以被一對冒號取代。雙冒號表示法在一個地址中僅可出現一次。

IPv6基本地址類型:

IPv6向IPv4過渡的策略:

R1的路由表/轉發表如下:

最佳路由:「最佳」只能是相對於某一種特定要求下得出的較為合理的選擇而已。

路由演算法可分為

由於網際網路規模很大且許多單位不想讓外界知道自己的路由選擇協議,但還想連入網際網路,可以採用自治系統來解決

自治系統AS:在單一的技術管理下的一組路由器,而這些路由器使用一種AS內部的路由選擇協議和共同的度量以確定分組在該AS內的路由,同時還使用一種AS之間的路由協議以確定在AS之間的路由。

一個AS內的所有網路都屬於一個行政單位來管轄,一個自治系統的所有路由器在本自治系統內都必須連通。

路由選擇協議

RIP是一種分布式的基於距離向量的路由選擇協議,是網際網路的協議標准,最大優點是簡單。

RIP協議要求網路中每一個路由器都維護從它自己到其他每一個目的網路的唯一最佳距離 [1] 記錄(即一組距離)。 RIP協議只適用於小互聯網。

RIP是應用層協議,使用 UDP 傳送數據。一個RIP報文最多可包括25個路由,如超過,必須再用一個RIP報文傳送。

RIP協議的交換

路由器剛開始工作時,只知道直接連接的網路的距離(距離為1),接著每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由信息。

經過若干次更新後,所有路由器最終都會知道到達本自治系統任何一個網路的最短距離和下一跳路由器的地址,即「收斂」。

RIP的特點:當網路出現故障時,要經過比較長的時間(例如數分鍾) 才能將此信息傳送到所有的路由器,「慢收斂」。

對地址為X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把「下一跳」欄位中的地址改為X,並把所有的「距離」欄位+1。

開放最短路徑優先OSPF協議:「開放」標明OSPF協議不是受某一家廠商控制,而是公開發表的;「最短路徑優先」是因為使用了Dijkstra提出的最短路徑演算法SPF。OSPF最主要的特徵就是使用分布式的鏈路狀態協議。 OSPF直接用IP數據報傳送。

OSPF的特點:

為了使OSPF 能夠用於規模很大的網路,OSPF 將一個自治系統再劃分為若干個更小的范圍,叫做區域。每一個區域都有一個32 位的區域標識符(用點分十進製表示)。區域也不能太大,在一個區域內的路由器最好不超過200 個。

BGP 所交換的網路可達性的信息就是要到達某個網路所要經過的一系列AS。當BGP 發言人互相交換了網路可達性的信息後,各BGP 發言人就根據所採用的策略從收到的路由信息中找出到達各AS 的較好路由。

一個BGP 發言人與其他自治系統中的BGP 發言人要交換路由信息,就要先建立TCP 連接,即通過TCP傳送,然後在此連接上交換BGP 報文以建立BGP 會話(session),利用BGP 會話交換路由信息。 BGP是應用層協議,藉助TCP傳送。

BGP協議特點:

BGP-4的四種報文

組播提高了數據傳送效率。減少了主幹網出現擁塞的可能性。組播組中的主機可以是在同一個物理網路,也可以來自不同的物理網路(如果有組播路由器的支持)。

IP組播地址讓源設備能夠將分組發送給一組設備。屬於多播組的設備將被分配一個組播組IP地址(一群共同需求主機的相同標識)。

組播地址范圍為224.0.0.0~239.255.255.255(D類地址),一個D類地址表示一個組播組。只能用作分組的目標地址。源地址總是為單播地址。

同單播地址一樣,組播IP地址也需要相應的組播MAC地址在本地網路中實際傳送幀。組播MAC地址以十六進制值01-00-5E打頭,餘下的6個十六進制位是根據IP組播組地址的最後23位轉換得到的。

TCP/IP 協議使用的乙太網多播地址的范圍是:從01-00-5E-00-00-00到01-00-5E-7F-FF-FF .

收到多播數據報的主機,還要在IP 層利用軟體進行過濾,把不是本主機要接收的數據報丟棄。

ICMP和IGMP都使用IP數據報傳遞報文。組播路由器知道的成員關系只是所連接的區域網中有無組播組的成員。

IGMP工作的兩個階段:

只要有一個主機對某個組響應,那麼組播路由器就認為這個組是活躍的;如果經過幾次探詢後沒有一個主機響應,組播路由器就認為本網路上的沒有此組播組的主機,因此就不再把這組的成員關系發給其他的組播路由器。

組播路由協議目的是找出以源主機為根節點的組播轉發樹。構造樹可以避免在路由器之間兜圈子。對不同的多播組對應於不同的多播轉發樹;同一個多播組,對不同的源點也會有不同的多播轉發樹。

組播路由選擇協議常使用的三種演算法:

移動IP技術是移動結點(計算機/伺服器等)以 固定的網路IP地址 ,實現跨越不同網段的 漫遊 功能,並保證了基於網路IP的網路許可權在漫遊過程中不發生任何改變。

路由器是一種具有多個輸入埠和多個輸出埠的專用計算機,其任務是轉發分組。

若路由器處理分組的速率趕不上分組進入隊列的速率,則隊列的存儲空間最終必定減少到零,這就使後面再進入隊列的分組由於沒有存儲空間而只能被丟棄。 路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因。

路由器(網路層)可以互聯兩個不同網路層協議的網段。
網橋(鏈路層)可以互聯兩個物理層和鏈路層不同的網段。
集線器(物理層)不能互聯兩個物理層不同的網段。

路由表根據路由選擇演算法得出的,主要用途是路由選擇,總用軟體來實現。

轉發表由路由表得來,可以用軟體實現,也可以用特殊的硬體來實現。轉發表必須包含完成轉發功能所必需的信息,在轉發表的每一行必須包含從要到達的目的網路到輸出埠和某些MAC地址信息的映射。

❺ 計算機網路-網路層-超網

在一個劃分子網的網路中可同時使用幾個不同的子網掩碼。使用變長子網掩碼VLSM(Variable Length Subnet Mask)可進一步提高IP地址資源的利用率。在VLSM的基礎上又進一步研究出無分類編址方法,它的正式名字是 無分類域間路由選擇CIDR (Classless Inter-Domain Routing,CIDR的讀音是「sider'」)。

CIDR最主要的特點有兩個:

(I)CIDR把32位的IP地址劃分為前後兩個部分。前面部分是「網路前綴」(network-prefix)(或簡稱為「前綴」),用來指明網路,後面部分則用來指明主機。因此CIDR使IP地址從三級編址(使用子網掩碼)又回到了兩級編址,但這已是無分類的兩級編址。其記法是:

            IP地址:={<網路前綴>,<主機號>}   (4-3)

CIDR還使用「斜線記法」(slash notation),或稱為CIDR記法,即在IP地址後面加上斜線「/」,然後寫上網路前綴所佔的位數。

(2)CIDR把網路前綴都相同的連續的IP地址組成一個「CIDR地址塊」。我們只要知道CIDR地址塊中的任何一個地址,就可以知道這個地址塊的起始地址(即最小地址)和最大地址,以及地址塊中的地址數。例如,已知IP地址128.14.35.7/20是某CIDR地址塊中的一個地址,現在把它寫成二進製表示,其中的前20位是網路前綴,而後面的12位是主機號:

            128.14.35.7/20= 1000 0000 0000 1110 0010 0011 0000 0111

這個地址所在的地址塊中的最小地址和最大地址可以很方便地得出:找出 地址掩碼(斜線後面的數字個數是掩碼地址1的個數, 20位)中1和0的交界處 發生在地址中的哪一個位元組。現在是在第三個位元組,取後面12 都寫成0是最小地址,寫成1為最大地址。

最小地址:128.14.32.0       1000  0000 0000 1110 0010 0000 0000 0000

最大地址:128.14.47.255   1000 0000 0000 1110 0010 1111 1111 1111

以上這兩個特殊地址的主機號是全0和全1的地址。一般並不使用。通常只使用在這兩個特殊地址之間的地址。 這個地址塊共有2^12個地址(2 的主機號位數次冪) 。我們可以用地址塊中的最小地址和網路前綴的位數指明這個地址塊。例如,上面的地址塊可記為128.14.32.0/20。在不需要指出地址塊的起始地址時,也可把這樣的地址塊簡稱為「/20地址塊」。

為了更方便地進行路由選擇,CIDR使用32位的地址掩碼(address mask)。地址掩碼由一串1和一串0組成,而1的個數就是網路前綴的長度。雖然CIDR不使用子網了,但由於目前仍有一些網路還使用子網劃分和子網掩碼,因此CIDR使用的地址掩碼也可繼續稱為子網掩碼。例如,/20地址塊的地址掩碼是:1111 1111 1111 1111 1111 0000 0000 0000(20個連續的1)。 斜線記法中,斜線後面的數字就是地址掩碼中1的個數。

在「CIDR不使用子網」是指CIDR並沒有在32位地址中指明若干位作為子網欄位。但分配到一個CIDR地址塊的單位,仍然可以在本單位內根據需要劃分出一些子網。這些子網也都只有一個網路前綴和一台主機號欄位,但子網的網路前綴比整個單位的網路前綴要長些。例如,某單位分配到地址塊/20,就可以再繼續劃分為8個子網(即需要從主機號中借用3位來劃分子網)。這時每一個子網的網路前綴就變成23位(原來的20位加上從主機號借來的3位),比該單位的網銘前綴多了3位。

由於一個CIDR地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網路。這種地址的聚合常稱為 路由聚合 (route aggregation),它使得路由表中的一個項目可以表示原來傳統分類地址的很多個(例如上干個)路由, 路由聚合也稱為構成超網 (supemetting)。路由聚合有利於減少路由器之間的路由選擇信息的交換,從而提高了整個互聯網的性能。

CIDR記法有多種形式,例如,地址塊10.0.0.0/10可簡寫為10/10,也就是把點分十進制中低位連續的0省略。另一種簡化表示方法是在網路前綴的後面加一個星號*,如:0000101000*意思是:在星號*之前是網路前綴,而星號◆表示P地址中的主機號,可以是任意值。

前綴位數不是8的整數倍時,需要進行簡單的計算才能得到一些地址信息。表47給出了最常用的CIDR地址塊。表中的K表示2^10=1024,網路前綴小於13或大於27都較少使用。在「包含的地址數」中沒有把全1和全0的主機號除外。

從表4-7可看出,每一個CIDR地址塊中的地址數一定是2的整數次冪。CIDR地址塊多數可以包含多個C類地址(是一個C類地址的2」倍,n是整數),這就是「 構成超網 」這一名詞的來源。

使用CIDR的一個好處就是可以更加有效地分配PV4的地址空間,可根據客戶的需要分配適當大小的CIDR地址塊。假定某ISP已擁有地址塊206.0.64.0/18(相當於有64個C類網路)。現在某大學需要800個IP地址。ISP可以給該大學分配一個地址塊206.0.68.0/22,它包括1024(即2^10)個1P地址,相當於4個連續的C類(/24地址塊),占該ISP擁有的地址空間的1/16。這個大學然後可自由地對本校的各系分配地址塊,而各系還可再劃分本系的地址塊。

從圖4-25可以清楚地看出地址聚合的概念。這個ISP共擁有64個C類網路。如果不採用CIDR技術,則在與該SP的路由器交換路由信息的每一個路由器的路由表中,就需要有64個項目,但採用地址聚合後,就只需用路由聚合後的一個項目206.0.64.0/18就能找到該ISP,同理,這個大學共有4個系,在1SP內的路由器的路由表中,也需使用206.0.68.022這個項目。這個項目好比是大學的收發室。凡寄給這個大學任何一個系的郵件,郵遞員都不考慮大學各個系的地址,而是把這些郵件集中投遞到大學的收發室,然後由大學的收發室再進行下一步的投遞。這樣就減輕了v遞員的工作量(相當於簡化了路由表的查找)。

從圖4-25下面表格中的二進制地址可看出,把四個系的路由聚合為大學的一個路由(即構成超網),是將網路前綴縮短。 網路前綴越短,其地址塊所包含的地址數就越多。而在三級結構的P地址中,劃分子網是使網鉻前綴變長。

在使用CIDR時,由於採用了網路前綴這種記法,IP地址由網路前綴和主機號這兩個部分組成,因此在路由表中的項目也要有相應的改變。這時, 每個項目由「網路前綴」和「下一跳地址」組成 。但是在查找路由表時可能會得到不止一個匹配結果。這樣就帶來一個間題:我們應當從這些匹配結果中選擇哪一條路由呢?

答案是:應當從匹配結果中 選擇具有最長網路前綴的路由 。這叫做 最長前綴匹 配longest-.prefix matching) ,這是因為網鉻前綴越長,其地址塊就越小,因而路由就越具體(more specific)。最長前綴匹配又稱為最長匹配或最佳匹配,為了說明最長前綴匹配的概念。

假定大學下屬的四系希望IS把轉發給四系的數據報直接發到四系面不要經過大學的路由器,但又不願意改變自己使用的P地址塊。因此,在SP的路由器的路由表中,至少要有以下兩個項目,即206.0.68.0/22(大學)和206.0.71.128/25(四系)。現在假定ISP收到一個數據報,其目的IP地址為D=206.0.71.130。把D分別和路由表中這兩個項目的掩碼逐位相「與」(AND操作)。將所得的逐位AND操作的結果按順序寫在下面:

D和 1111 1111 1111 1111 1111 11 00 0000  0000逐位相「與」 = 206.0.68.0/22 匹配

D和 1111 1111 1111 1111 1111 1111 1 000 0000逐位相「與」 = 206.0.71.128/25 匹配

不難看出,現在同一個IP地址D可以在路由表中找到兩個目的網路(大學和四系)和該地址相匹配。根據 最長前綴(1的位數) 匹配的原理,應當選擇後者,把收到的數據報轉發到後一個目的網路(四系),即選擇兩個匹配的地址中更具體的一個。

從以上的討論可以看出,如果IP地址的分配一開始就採用CIDR,那麼我們可以按網路所在的地理位置來分配地址塊,這樣就可大大減少路由表中的路由項目。例如,可以將世界劃分為四大地區,每一地區分配一個CIDR地址塊:

地址塊194/7(194.0.0.0至195255.255,25)分配給歐洲:

地址塊198/7(198.0.0.0至199.255.255,255)分配給北類洲

地址塊2007(200.0.0.0至201255.255.255)分配給中美洲和南美洲:

地址塊202/7(202.0.0.0至203255.255.255)分配給亞洲和太平洋地區,

上面的每一個地址塊包含有釣3200萬個地址,這種分配地址的方法就使得IP地址與地理位置相關聯。它的好處是可以大大壓縮路由表中的項目數。例如,凡是從中國發往北美的IP數據報(不管它是地址塊198/7中的哪一個地址)都先送交位於美國的一個路由器,因此在路由表中使用一個項目就行了。

使用CIDR後,由於要尋找最長前綴匹配,使路由表的查找過程變得更加復雜了。當路由表的項目數很大時,怎樣設法減小路由表的查找時間就成為一個非常重要的問題。例如,連接路由器的線路的速率為10Gbit/s,而分組的平均長度為2000bit,那麼路由器就應當平均每秒鍾能夠處理500萬個分組(常記為5Mpps)。或者說,路由器處理一個分組的平均時間只有200s(1ns=10^-9秒)。因此,查找每一個路由所需的時間是非常短的。

對無分類編址的路由表的最簡單的查找演算法就是對所有可能的前綴進行循環查找。例如,給定一個目的地址D。對每一個可能的網路前綴長度M,路由器從D中提取前M個位成一個網路前綴,然後查找路由表中的網路前綴。所找到的最長匹配就對應於要查找的路由。

"這種最簡單的演算法的明顯缺點就是查找的次數太多。最壞的情況是路由表中沒有這個路由。在這種情況下,演算法仍要進行32次(具有32位的網路前綴是一個特定主機路由)。就是要找到一個傳統的B類地址(即/16),也要查找16次。對於經常使用的歌認路由,這種演算法都要經歷31次不必要的查找。"

為了進行更加有效的查找,通常是把無分類編址的路由表存放在一種層次的數據結構中,然後自上而下地按層次進行查找。這里最常用的就是 二叉線索 (binary trie),它是一種特殊結構的樹。IP地址中從左到右的比特值決定了從根節點逐層向下層延伸的路徑,而二叉線索中的各個路徑就代表路由表中存放的各個地址。

圖4-26用一個例子來說明二叉線索的結構。圖中給出了5個IP地址。為了簡化二叉線索的結構,可以先找出對應於每一個P地址的唯一前綴(unique prefix)。所謂唯一前綴就是在表中所有的P地址中,該前綴是唯一的。這樣就可以用這些唯一前綴來構造二叉線索。在進行查找時,只要能夠和唯一前綴相匹配就行了。

從二叉線索的根節點自頂向下的深度最多有32層,每一層對應於IP地址中的一位。一個IP地址存入二叉線索的規則很簡單。先檢查IP地址左邊的第一位,如為0,則第一層的節點就在根節點的左下方;如為1,則在右下方。然後再檢查地址的第二位,構造出第二層的節點。依此類推,直到唯一前綴的最後一位。由於唯一前綴一般都小於32位,因此用唯一前綴構造的二叉線索的深度往往不到32層。圖中較粗的折線就是前綴0101在這個二叉線索中的路徑。二叉線索中的小圓圈是中間節點,而在路徑終點的小方框是葉節點(也叫做外部節點)。每個葉節點代表一個唯一前綴。節點之間的連線旁邊的數字表示這條邊在唯一前綴中對應的比特是0或1。

假定有一個IP地址是1001 1011    0111 1010   0000 0000     0000 0000,需要查找該地址是否在此二叉線索中。我們從最左邊查起。很容易發現,查到第三個字元(即前綴10後面的0)時,在二叉線索中就找不到匹配的,說明這個地址不在這個二叉線索中。

以上只是給出了二叉線索這種數據結構的用法,而並沒有說明「與唯一前綴匹配」和「與網路前綴匹配」的關系。顯然,要將二叉線索用於路由表中,還必須使二叉線索中的每一個葉節點包含所對應的網路前綴和子網掩碼。當搜索到一個葉節點時,就必須 將尋找匹配的目的地址和該葉節點的子網掩碼進行逐位「與」運算,看結果是否與對應的網路前綴相匹配 。若匹配,就按下一跳的介面轉發該分組。否則,就丟棄該分組。

總之,二叉線索只是提供了一種可以快速在路由表中找到匹配的葉節點的機制。但這是否和網路前綴匹配,還要和子網掩碼進行一次邏輯與的運算。

「為了提高二叉線索的查找速度,廣泛使用了各種 壓縮技術 。例如,在圖4-26中的最後兩個地址,其最前面的4位都是1011。因此,只要一個地址的前4位是1011,就可以跳過前面4位(即壓縮了4個層次)而直接從第5位開始比較。這樣就可以減少查找的時間。當然,製作經過壓縮的二叉線索需要更多的計算,但由於每一次查找路由表時都可以提高查找速度,因此這樣做還是值得的。」