標籤:
無分類編址CIDR(Classless Inter-Domain Routing,構造超網)
背景:在1992年網際網路仍然面臨三個必須儘早解決的問題,這就是:B類地址在1992年已指派了近一半,眼看就要在1994年3月全部分配完畢!網際網路主幹網上的路由表中的項目數急劇增長(從幾千個增長到幾萬個)。 整個 IPv4 的地址空間最終將全部耗盡。
1987年,RFC1009就指明了在一個劃分子網的網路中可同時使用幾個不同的子網路遮罩。使用變長子網路遮罩VLSM(Variable Length Subnet Mask)可進一步提高IP地址資源的利用率。在VLSM的基礎上又進一步研究出無分類編址方法,它的正式名字是無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)。
特點:CIDR消除了傳統的A,B,C類地址以及劃分子網的概念。CIDR使用各種長度的“網路首碼”(network-prefix)來代替分類地址中的網路號和子網號。IP 位址從三級編址(使用子網路遮罩)又回到了兩級編址。
無分類的兩級編址/ IP地址 ::= {<網路首碼>, <主機號>}
1)CIDR 還使用“斜線記法”(slash notation),它又稱為CIDR記法,即在 IP 位址後面加上一個斜線“/”,然後寫上網路首碼所佔的位元(這個數值對應於三級編址中子網路遮罩中 1 的個數)。
2)CIDR 把網路首碼都相同的連續的 IP 位址組成“CIDR 地址塊”。
路由彙總(route aggregation)
一個 CIDR 地址塊可以表示很多地址,這種地址的彙總常稱為路由彙總,它使得路由表中的一個項目可以表示很多個(例如上千個)原來傳統分類地址的路由。
路由彙總也稱為構成超網(supernetting)。 CIDR 雖然不使用子網了,但仍然使用“掩碼”這一名詞(但不叫子網路遮罩)。 對於 /20 地址塊,它的掩碼是 20 個連續的 1。
斜線記法中的數字就是掩碼中1的個數。
CIDR 記法的其他形式
10.0.0.0/10 可簡寫為 10/10,也就是將點分十進位中低位連續的 0 省略。
10.0.0.0/10 相當於指出 IP 位址 10.0.0.0 的掩碼是 255.192.0.0,即 11111111 11000000 00000000 00000000
網路首碼的後面加一個星號 * 的表示方法 如 00001010 00*,在星號 * 之前是網路首碼,而星號 * 表示 IP 位址中的主機號,可以是任意值。
構成超網
前置長度不超過 23 位的 CIDR 地址塊都包含了多個 C 類地址。
這些 C 類地址合起來就構成了超網。 CIDR 地址塊中的地址數一定是 2 的整數次冪。
網路首碼越短,其地址塊所包含的地址數就越多。而在三級結構的IP地址中,劃分子網是使網路首碼變長。
CIDR地址劃分舉例
這個 ISP 共有 64 個 C 類網路。如果不採用 CIDR 技術,則在與該 ISP 的路由器交換路由資訊的每一個路由器的路由表中,就需要有 64 個項目。但採用地址彙總後,只需用路由彙總後的 1 個項目 206.0.64.0/18 就能找到該 ISP。
最長首碼匹配
使用 CIDR 時,路由表中的每個項目由“網路首碼”和“下一跳地址”組成。在尋找路由表時可能會得到不止一個匹配結果。
應當從匹配結果中選擇具有最長網路首碼的路由:最長首碼匹配(longest-prefix matching)。網路首碼越長,其地址塊就越小,因而路由就越具體(more specific) 。最長首碼匹配又稱為最長相符或首選。
最長首碼匹配舉例
後記:CIDR的使用已經延遲了IP地址將要耗盡的日期。
使用二叉線索尋找路由表(用5個首碼構成的二叉線索)
網際控制報文協議(Internet Control Message Protocol,ICMP)
為了提高 IP 資料報交付成功的機會,在網際層使用了網際控制報文協議 ICMP (Internet Control Message Protocol)。
ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP不是高層協議,而是 IP 層的協議。ICMP 報文作為IP層資料報的資料,加上資料報的首部,組成IP資料報發送出去。
ICMP報文格式:
ICMP 報文的種類有兩種,即 ICMP 差錯報告報文和 ICMP 詢問報文。 ICMP 報文的前 4 個位元組是統一的格式,共有三個欄位:即類型、代碼和檢驗和。接著的 4 個位元組的內容與 ICMP 的類型有關。
ICMP 差錯報告報文共有 5 種
終點不可達
源點抑制(Source quench)
時間超過
參數問題
改變路由(重新導向)(Redirect)
ICMP 差錯報告報文的資料欄位的內容
不應發送 ICMP 差錯報告報文的幾種情況
對 ICMP 差錯報告報文不再發送 ICMP 差錯報告報文。
對第一個分區的資料報片的所有後續資料報片都不發送 ICMP 差錯報告報文。
對具有多播地址的資料報都不發送 ICMP 差錯報告報文。
對具有特殊地址(如127.0.0.0 或 0.0.0.0)的資料報不發送 ICMP 差錯報告報文。
ICMP的應用舉例PING (Packet InterNet Groper)
PING 用來測試兩個主機之間的連通性。
PING 使用了 ICMP 回送請求與回送回答報文。
PING 是應用程式層直接使用網路層 ICMP 的例子,它沒有通過運輸層的 TCP 或UDP。
網際網路的路由選擇協議(路由表中的路由是怎樣得出的)
有關路由選擇協議的幾個基本概念:
1. 理想的路由演算法
演算法必須是正確的和完整的。
演算法在計算上應簡單。
演算法應能適應通訊量和網路拓撲的變化,這就是說,要有自適應性。
演算法應具有穩定性。
演算法應是公平的。
演算法應是最佳的。
2. 分層次的路由選擇協議
網際網路採用分層次的路由選擇協議。 網際網路的規模非常大。如果讓所有的路由器知道所有的網路應怎樣到達,則這種路由表將非常大,處理起來也太花時間。而所有這些路由器之間交換路由資訊所需的頻寬就會使網際網路的通訊鏈路飽和。 許多單位不願意外界瞭解自己單位網路的布局細節和本部門所採用的路由選擇協議(這屬於本部門內部的事情),但同時還希望串連到網際網路上。
網際網路有兩大類路由選擇協議
內部閘道通訊協定 IGP (Interior Gateway Protocol) 即在一個自治系統內部使用的路由選擇協議。目前這類路由選擇協議使用得最多,如 RIP 和 OSPF 協議。
外部網關協議EGP (External Gateway Protocol) 若來源站點和目的站處在不同的自治系統中,當資料報傳到一個自治系統的邊界時,就需要使用一種協議將路由選擇資訊傳遞到另一個自治系統中。這樣的協議就是外部網關協議 EGP。在外部網關協議中目前使用最多的是BGP-4。
自治系統和內部閘道通訊協定、外部網關協議
內部閘道通訊協定 RIP (Routing Information Protocol)
從一路由器到直接連接的網路的距離定義為 1。
從一個路由器到非直接連接的網路的距離定義為所經過的路由器數加 1。
RIP 協議中的“距離”也稱為“跳數”(hop count),因為每經過一個路由器,跳數就加 1。
這裡的“距離”實際上指的是“最短距離”。
RIP 認為一個好的路由就是它通過的路由器的數目少,即“距離短”。
RIP 允許一條路徑最多隻能包含 15 個路由器。 “距離”的最大值為16 時即相當於不可達。
可見 RIP 只適用於小型互連網。 RIP 不能在兩個網路之間同時使用多條路由。
RIP 選擇一個具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。
RIP 協議的三個要點
僅和相鄰路由器交換資訊。
交換的資訊是當前本路由器所知道的全部資訊,即自己的路由表。
按固定的時間間隔交換路由資訊,例如,每隔30秒。
路由表的建立
路由器在剛剛開始工作時,只知道到直接連接的網路的距離(此距離定義為1)。 以後,每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由資訊。 經過若干次更新後,所有的路由器最終都會知道到達本自治系統中任何一個網路的最短距離和下一跳路由器的地址。 RIP 協議的收斂(convergence)過程較快,即在自治系統中所有的結點都得到正確的路由選擇資訊的過程。
距離向量演算法
收到相鄰路由器(其地址為 X)的一個 RIP 報文:
(1) 先修改此 RIP 報文中的所有項目:把“下一跳”欄位中的地址都改為 X,並把所有的“距離”欄位的值加 1。
(2) 對修改後的 RIP 報文中的每一個項目,重複以下步驟: 若項目中的目的網路不在路由表中,則把該項目加到路由表中。 否則 若下一跳欄位給出的路由器地址是同樣的,則把收到的項 目 替換原路由表中的項目。 否則 若收到項目中的距離小於路由表中的距離,則進行更新, 否則,什麼也不做。
(3) 若 3 分鐘還沒有收到相鄰路由器的更新路由表,則把此相鄰路由器記為不可達路由器,即將距離置為16(距離為16表示不可達)。
(4) 返回。
RIP 協議的優缺點
RIP存在的一個問題是當網路出現故障時,要經過比較長的時間才能將此資訊傳送到所有的路由器。
RIP 協議最大的優點就是實現簡單,開銷較小。
RIP 限制了網路的規模,它能使用的最大距離為 15(16 表示不可達)。
路由器之間交換的路由資訊是路由器中的完整路由表,因而隨著網路規模的擴大,開銷也就增加。
內部閘道通訊協定 OSPF (Open Shortest Path First)
1. OSPF 協議的基本特點
“開放”表明 OSPF 協議不是受某一家廠商控制,而是公開發表的。
“最短路徑優先”是因為使用了Dijkstra 提出的最短路徑演算法SPF OSPF 只是一個協議的名字,它並不表示其他的路由選擇協議不是“最短路徑優先”。 是分布式的鏈路狀態協議。
路由器在網際互連中的作用
路由器是一種具有多個輸入連接埠和多個輸出連接埠的專用電腦,其任務是轉寄分組。也就是說,將路由器某個輸入連接埠收到的分組,按照分組要去的目的地(即目的網路),把該分組從路由器的某個合適的輸出連接埠轉寄給下一跳路由器。下一跳路由器也按照這種方法處理分組,直到該分組到達終點為止。
“轉寄”(forwarding)就是路由器根據轉寄表將使用者的 IP 資料報從合適的連接埠轉寄出去。
“路由選擇”(routing)則是按照分布式演算法,根據從各相鄰路由器得到的關於網路拓撲的變化情況,動態地改變所選擇的路由。 路由表是根據路由選擇演算法得出的。
而轉寄表是從路由表得出的。 在討論路由選擇的原理時,往往不去區分轉寄表和路由表的區別。
IP 多播
參考:IP多播技術及其應用
網際組管理協議 IGMP
第一階段:當某個主機加入新的多播組時,該主機應向多播組的多播地址發送IGMP 報文,聲明自己要成為該組的成員。本地的多播路由器收到 IGMP 報文後,將群組成員關係轉寄給網際網路上的其他多播路由器。
第二階段:因為群組成員關係是動態,因此本地多播路由器要周期性地探詢本地區域網路上的主機,以便知道這些主機是否還繼續是組的成員。只要對某個組有一個主機響應,那麼多播路由器就認為這個組是活躍的。但一個組在經過幾次的探詢後仍然沒有一個主機響應,則不再將該組的成員關係轉寄給其他的多播路由器。
IGMP 採用的一些具體措施
在主機和多播路由器之間的所有通訊都是使用 IP 多播。 多播路由器在探詢群組成員關係時,只需要對所有的組發送一個請求資訊的詢問報文,而不需要對每一個組發送一個詢問報文。預設的詢問速率是每 125 秒發送一次。 當同一個網路上串連有幾個多播路由器時,它們能夠迅速和有效地選擇其中的一個來探詢主機的成員關係。
在 IGMP 的詢問報文中有一個數值 N,它指明一個最長回應時間(預設值為 10秒)。當收到詢問時,主機在 0 到 N 之間隨機播放發送響應所需經過的時延。對應於最小時延的響應最先發送。 同一個組內的每一個主機都要監聽響應,只要有本組的其他主機先發送了響應,自己就可以不再發送響應了。
虛擬私人網路 VPN 和網路位址轉譯 NAT
本地地址—僅在機構內部使用的 IP 位址,可以由本機構自行分配,而不需要向網際網路的管理機構申請。
全球地址—全球唯一的IP地址,必須向網際網路的管理機構申請。
10.0.0.0 到 10.255.255.255
172.16.0.0 到 172.31.255.255
192.168.0.0 到 192.168.255.255
這些地址只能用於一個機構的內部通訊,而不能用於和網際網路上的主機通訊。
專用地址只能用作本地地址而不能用作全球地址。在網際網路中的所有路由器對目的地址是專用地址的資料報一律不進行轉寄。
由部門 A 和 B 的內部網路所構成的虛擬私人網路 VPN 又稱為內連網(intranet),表示部門 A 和 B 都是在同一個機構的內部。
一個機構和某些外部機構共同建立的虛擬私人網路 VPN 又稱為外連網(extranet)。
網路位址轉譯 NAT(Network Address Translation)
需要在專用網串連到網際網路的路由器上安裝 NAT 軟體。裝有 NAT 軟體的路由器叫做 NAT路由器,它至少有一個有效外部全球地址 IPG。
所有使用本地地址的主機在和外界通訊時都要在 NAT 路由器上將其本地地址轉換成 IPG 才能和網際網路串連。
網路位址轉譯的過程
內部主機 X 用本地地址 IPX 和網際網路上主機 Y 通訊所發送的資料報必須經過 NAT 路由器。 NAT 路由器將資料報的源地址 IPX 轉換成全球地址 IPG,但目的地址 IPY 保持不變,然後發送到網際網路。
NAT 路由器收到主機 Y 發回的資料報時,知道資料報中的源地址是 IPY 而目的地址是 IPG。
根據 NAT 轉換表,NAT 路由器將目的地址 IPG 轉換為 IPX,轉寄給最終的內部主機 X。
電腦網路基礎知識筆記(三)