第4章 網絡層
4.4 網際控制報文協議ICMP
- 爲了提高 IP 數據報交付成功的機會,在網際層使用了網際控制報文協議 ICMP (Internet Control Message Protocol)。
- ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。
- ICMP 不是高層協議,而是 IP 層的協議。
ICMP 報文作爲 IP 層數據報的數據,加上數據報的首部,組成 IP 數據報發送出去
。
4.1.1 ICMP 報文的種類
1. 種類
- ICMP 報文的種類有兩種,即 ICMP 差錯報告報文和 ICMP 詢問報文。
- ICMP 報文的前 4 個字節是統一的格式,共有三個字段:即類型、代碼和檢驗和。接着的 4 個字節的內容與 ICMP 的類型有關。
- 幾種常用的ICMP報文類型
ICMP報文種類 | 類型的值 | ICMP報文類型 | 說明 |
---|---|---|---|
差錯報告報文 | 3 | 終點不可達 | 路由器或主機不能交付數據報 |
差錯報告報文 | 11 | 時間超過 | 路由器收到生存時間爲零的數據報時 |
差錯報告報文 | 12 | 參數問題 | 數據包的首部中字段的值不正確時 |
差錯報告報文 | 5 | 改變路由 | 路由器把改變路由報文發送給主機, 讓主機知道下次應將報文發給另外的路由器 |
詢問報文 | 8或0 | 回送請求或回答 | 用於測試目的站是否可達,瞭解其有關狀態 |
詢問報文 | 13或14 | 時間戳請求或回答 | 用於時鐘同步和時間測量。 |
2. ICMP 差錯報告報文的數據字段的內容
所有的ICMP差錯報告報文中的數據字段都具有相同的格式。把收到的需要進行差錯報告的IP數據報的首部和數據字段的前8個字節(得到運輸層的端口號和運輸層報文的發送序號)提取出來,作爲ICMP報文的數據字段,再加上相應的ICMP差錯報告報文的前8個字節,就構成了ICMP差錯報告報文。
3. 不應發送 ICMP 差錯報告報文的幾種情況
- 對 ICMP 差錯報告報文不再發送 ICMP 差錯報告報文。
- 對第一個分片的數據報片的所有後續數據報片都不發送 ICMP 差錯報告報文。
- 對具有多播地址的數據報都不發送 ICMP 差錯報告報文。
- 對具有特殊地址(如127.0.0.0 或 0.0.0.0)的數據報不發送 ICMP 差錯報告報文。
4.4.2 ICMP的應用舉例
1. PING (Packet InterNet Groper)
- PING 用來測試兩個主機之間的連通性。
- PING 使用了 ICMP 回送請求與回送回答報文。
- PING 是應用層直接使用網絡層 ICMP 的例子,它沒有通過運輸層的 TCP 或UDP。
2. Traceroute
- traceroute(這是UNIX操作系統中的名字),用來跟蹤一個分組從源點到終點的路徑。
- 在Windows操作系統中這個命令是tracert.
4.5 互聯網的路由選擇協議
4.5.1 有關路由選擇協議的幾個基本概念
1. 理想的路由算法
路由選擇是個非常複雜的問題
① 它是網絡中的所有結點共同協調工作的結果。
② 路由選擇的環境往往是不斷變化的,而這種變化有時無法事先知道。
(1)理想的路由算法應具有以下的特點
① 算法必須是正確的和完整的。
② 算法在計算上應簡單。
③ 算法應能適應通信量和網絡拓撲的變化,這就是說,要有自適應性。
④ 算法應具有穩定性。
⑤ 算法應是公平的。
⑥ 算法應是最佳的。 最佳知識相對於某一特定要求下得出的較爲合理的選擇而已。
(2)從路由算法的自適應性考慮
① 靜態路由選擇策略(非自適應路由選擇)
即非自適應路由選擇,其特點是簡單和開銷較小,但不能及時適應網絡狀態的變化。
② 動態路由選擇策略(自適應路由選擇)
即自適應路由選擇,其特點是能較好地適應網絡狀態的變化,但實現起來較爲複雜,開銷也比較大。
2. 分層次的路由選擇協議
因特網採用分層次的路由選擇協議:
① 因特網的規模非常大。如果讓所有的路由器知道所有的網絡應怎樣到達,則這種路由表將非常大,處理起來也太花時間。而所有這些路由器之間交換路由信息所需的帶寬就會使因特網的通信鏈路飽和。
② 許多單位不願意外界瞭解自己單位網絡的佈局細節和本部門所採用的路由選擇協議(這屬於本部門內部的事情),但同時還希望連接到因特網上。
(1)自治系統 AS (Autonomous System)
① AS是在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量。
② 一個 AS 對其他 AS 表現出的是一個單一的和一致的路由選擇策略。
(2)兩大類路由選擇協議
① 內部網關協議 IGP (Interior Gateway Protocol)
即在一個自治系統內部使用的路由選擇協議。也叫域內路由選擇(intradomain routing)。 目前這類路由選擇協議使用得最多,如 RIP 和 OSPF 協議。
② 外部網關協議EGP (External Gateway Protocol)
若源站和目的站處在不同的自治系統中,當數據報傳到一個自治系統的邊界時,就需要使用一種協議將路由選擇信息傳遞到另一個自治系統中。也叫域間路由選擇(interdomain routing)。這樣的協議就是外部網關協議 EGP。在外部網關協議中目前使用最多的是 BGP-4。
4.5.2 內部網關協議 RIP (Routing Information Protocol)
RIP協議讓互聯網中的所有路由器都和自己的相鄰路由器不斷交換路由信息,並不斷更新其路由表,使得從每一個路由器到每一個目的網絡的路由都是最短的(即跳數最少)。
1. 工作原理
① RIP 是一種分佈式的基於距離向量的路由選擇協議。
② RIP 協議要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄。
③ 特點:
a) 僅和相鄰路由器交換信息;
b) 路由器交換當前知道的全部信息,即自己現在的路由表;
c) 按固定的時間交換路由信息;
2. 距離向量算法
(1)“距離”的定義
① 從一路由器到直接連接的網絡的距離定義爲 1。
② 從一個路由器到非直接連接的網絡的距離定義爲所經過的路由器數加 1。
③ RIP 協議中的“距離”也稱爲 “跳數”(hop count),因爲每經過一個路由器,跳數就加 1。這裏的“距離”實際上指的是“最短距離”,
④ RIP 允許一條路徑最多隻能包含 15 個路由器。“距離”的最大值爲16 時即相當於不可達。可見 RIP 只適用於小型互聯網。
⑤ RIP 認爲一個好的路由就是它通過的路由器的數目少,即“距離短”。 RIP 不能在兩個網絡之間同時使用多條路由。RIP 選擇一個具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。
(2)距離算法過程
收到相鄰路由器(其地址爲 X)的一個 RIP 報文:
1) 先修改此 RIP 報文中的所有項目:
把“下一跳”字段中的地址都改爲 X,並把所有的 “距離”字段的值加 1。
2) 對修改後的 RIP 報文中的每一個項目,重複以下步驟:
① 若項目中的目的網絡不在路由表中,則把該項目添加到路由表中;
② 若下一跳字段給出的路由器地址是同樣的,則把收到的項目替換原路由表中的項目;
③ 若收到項目中的距離小於路由表中的距離,則進行更新;
④ 否則,什麼也不做;
3) 若 3 分鐘還沒有收到相鄰路由器的更新路由表,則把此相鄰路由器記爲不可達路由器,即將距離置爲16(距離爲16表示不可達)。
4) 返回。
3. RIP2 協議的報文格式
(1)報文格式
① RIP協議使用運輸層的用戶數據報UDP進行傳送(使用UDP的端口520)
② RIP2 報文中的路由部分由若干個路由信息組成。每個路由信息需要用 20 個字節。一個報文最多可包含25個路由。
③ RIP2還具有簡單的鑑別功能。(將原來寫入第一個路由的信息[20字節]的位置用作鑑別。將地址族標識符置爲全1,,路由標記寫入鑑別類型,剩下16字節爲鑑別數據)
(2)RIP優缺點
① 優點:實現簡單,開銷較小。
② 缺點:
a) 限制了網絡的規模,它能使用的最大距離爲 15;
b) 好消息傳播得快,壞消息傳播得慢
壞消息傳得慢
① R1 說:“我到網 1 的距離是 1,是直接交付。”
② R2 說:“我到網 1 的距離是 2,是經過 R1。”① R2 說:“我到網 1 的距離是 2,是經過 R1。”
② R1 說:“我到網 1 的距離是 16 (表示無法到達),是直接交付。”
③ 但 R2 在收到 R1 的更新報文之前,還發送原來的報文,因爲這時 R2 並不知道 R1 出了故障。
④ R1 收到 R2 的更新報文後,誤認爲可經過 R2 到達網1,於是更新自己的路由表說:“我到網 1 的距離是 3,下一跳經過 R2”。然後將此更新信息發送給 R2
⑤ R2 以後又更新自己的路由表爲“1, 4, R1”,表明 “我到網 1 距離是 4,下一跳經過 R1”。
⑥ 這樣不斷更新下去,直到 R1 和 R2 到網 1 的距離都增大到 16 時,R1 和 R2 才知道網 1 是不可達的。
4.5.3 內部網關協議OSPF(Open Shortest Path First)
1. OSPF協議基本要點
OSPF即開放最短路徑優先
“開放” 表明 OSPF 協議不是受某一家廠商控制,而是公開發表的。
“最短路徑優先”是因爲使用了 Dijkstra 提出的最短路徑算法SPF
OSPF最主要的特徵是使用分佈式的鏈路狀態協議
(1)三個基本要點
① 向本自治系統中所有路由器發送信息,這裏使用的方法是洪泛法。
② 發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分信息。“鏈路狀態”就是說明本路由器都和哪些路由器相鄰,以及該鏈路的“度量”(metric)/“代價”(費用、距離 、時延、帶寬)。
③ 只有當鏈路狀態發生變化時,路由器才用洪泛法向所有路由器發送此信息。
RIP | OSPF | |
---|---|---|
發送對象 | 相鄰路由器 | 所有路由器 |
發送內容 | 到所有網絡的距離和下一跳路由器 | 與本路由器相鄰的所有路由器的鏈路狀態 |
發送時間 | 定期交換信息 | 鏈路狀態發生變化時 |
補充 | 每一個路由器知道到所有的網絡的距離以及下一跳路由器, 但不知道全網的拓撲結構(只有到下一跳路由器才知道下一跳怎麼走) |
每一個路由器都知道全網共有多少個路由器, 以及那些路由器時相連的,其代價是多少。 |
路徑選擇 | 不能在兩個網絡間同時使用多條路由,RIP 選擇一個具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。 | 多路徑間的負載平衡。如果到同一個目的網絡有多條相同代價的路徑,那麼可以將通信量分配給這幾條路徑。 |
(2)鏈路狀態數據庫(link-state database)
① 由於各路由器之間頻繁地交換鏈路狀態信息,因此所有的路由器最終都能建立一個鏈路狀態數據庫。
② 這個數據庫實際上就是全網的拓撲結構圖,它在全網範圍內是一致的(這稱爲鏈路狀態數據庫的同步)。
③ OSPF 的鏈路狀態數據庫能較快地進行更新,使各個路由器能及時更新其路由表。OSPF 的更新過程收斂得快是其重要優點。
(3)OSPF 的區域(area)
- 爲了使 OSPF 能夠用於規模很大的網絡,OSPF 將一個自治系統再劃分爲若干個更小的範圍,叫作區域。
- 每一個區域都有一個 32 位的區域標識符(用點分十進制表示)。
- 區域也不能太大,在一個區域內的路由器最好不超過 200 個。
名稱 | 說明 | 舉例 |
---|---|---|
主幹區域 (backbone area) | 在上層的區域叫作主幹區域(backbone area)。 主幹區域的標識符規定爲0.0.0.0。主幹區域的作用是用來連通其他在下層的區域。 |
主幹區域 0.0.0.0 |
主幹路由器(backbone router) | 在主幹區域內的路由器 | R3、R4、R5、R6、R7 |
區域邊界路由器(area border router) | 其他區域內向主幹區域傳送信息的路由器,每個區域至少應當有一個 | R3、R4、R7 |
自制系統邊界路由器 | 和本自治系統外的其他系統交換路由信息 | R5 |
(4)OSPF 的特點
① OSPF 不用 UDP 而是直接用 IP 數據報傳送。
② OSPF 構成的數據報很短。這樣做可減少路由信息的通信量。數據報很短的另一好處是可以不必將長的數據報分片傳送。分片傳送的數據報只要丟失一個,就無法組裝成原來的數據報,而整個數據報就必須重傳。
③ OSPF 對不同的鏈路可根據 IP 分組的不同服務類型 TOS 而設置成不同的代價。因此,OSPF 對於不同類型的業務可計算出不同的路由。
④ 如果到同一個目的網絡有多條相同代價的路徑,那麼可以將通信量分配給這幾條路徑。這叫作多路徑間的負載平衡(load balancing)。
⑤ 所有在 OSPF 路由器之間交換的分組都具有鑑別的功能。
⑥ 支持可變長度的子網劃分和無分類編址 CIDR。
⑦ 每一個鏈路狀態都帶上一個 32 位的序號,序號越大狀態就越新。
2. OSPF 的五種分組類型
(1)分組
名稱 | 說明 | |
---|---|---|
類型1 | 問候(Hello) 分組 | 用來發現和維持鄰站的可達性 |
類型2 | 數據庫描述(Database Description) 分組 | 向鄰站給出自己鏈路狀態數據庫中所有鏈路狀態項目的摘要信息 |
類型3 | 鏈路狀態請求(Link State Request) 分組 | 向對方請求發送某些鏈路狀態項目的詳細信息 |
類型4 | 鏈路狀態更新(Link State Update) 分組 | 用洪泛法對全網更新鏈路狀態。 |
類型5 | 鏈路狀態確認(Link State Acknowledgment) 分組 | 對鏈路更新分組的確認 |
(2)OSPF的基本操作
① OSPF讓每一個路由器用數據庫描述分組和相鄰路由器交換本數據庫中已有的鏈路狀態摘要信息。
② 在網絡運行的過程中,只要一個路由器的鏈路狀態發生改變,該路由器就要使用鏈路狀態更新分組,用洪泛法全網更新鏈路狀態。OSPF使用的是可靠的洪泛法。
③ 爲了確保鏈路狀態數據庫與全網的狀態保持一致,OSPF還規定每隔一段時間,要刷新一次數據庫中的鏈路狀態。
(3)指定的路由器(designated router)
多點接入的局域網採用了指定的路由器的方法,使廣播的信息量大大減少。指定的路由器代表該局域網上所有的鏈路向連接到該網絡上的各路由器發送狀態信息。
4.5.4 外部網關協議 BGP(border gateway protocol)
① 因特網的規模太大,使得自治系統之間路由選擇非常困難。對於自治系統之間的路由選擇,要尋找最佳路由是很不現實的。
當一條路徑通過幾個不同 AS 時,要想對這樣的路徑計算出有意義的代價是不太可能的。
比較合理的做法是在 AS 之間交換“可達性”信息。
② 自治系統之間的路由選擇必須考慮有關策略。
因此,邊界網關協議 BGP 只能是力求尋找一條能夠到達目的網絡且比較好的路由(不能兜圈子),而並非要尋找一條最佳路由。
- BGP 是不同自治系統的路由器之間交換路由信息的協議。
- BGP 較新版本是 2006 年 1 月發表的 BGP-4(BGP 第 4 個版本),即 RFC 4271 ~ 4278。
- 可以將 BGP-4 簡寫爲 BGP。
1. BGP 發言人(BGP speaker)
① 每一個自治系統的管理員要選擇至少一個路由器作爲該自治系統的“ BGP 發言人” 。
② 一般說來,兩個 BGP 發言人都是通過一個共享網絡連接在一起的,而 BGP 發言人往往就是 BGP 邊界路由器,但也可以不是 BGP 邊界路由器。
2. BGP 交換路由信息
① 一個 BGP 發言人與其他自治系統中的 BGP 發言人要交換路由信息,就要先建立 TCP 連接,然後在此連接上交換 BGP 報文以建立 BGP 會話(session),利用 BGP 會話交換路由信息。
② 使用 TCP 連接能提供可靠的服務,也簡化了路由選擇協議。
② 使用 TCP 連接交換路由信息的兩個 BGP 發言人,彼此成爲對方的鄰站(neighbor)或對等站(peer)。
3. BGP 發言人和自治系統 AS
(1)BGP與AS的關係
每個BGP發言人除了必須運行BGP協議外,還必須運行該系統所使用的內部網關協議,如OSPF或RIP。
(2)AS的連通圖
① BGP 所交換的網絡可達性的信息就是要到達某個網絡所要經過的一系列 AS。
② 當 BGP 發言人互相交換了網絡可達性的信息後,各 BGP 發言人就根據所採用的策略從收到的路由信息中找出到達各 AS 的較好路由。
(3)BGP 發言人交換路徑向量
4. BGP 協議的特點
① BGP 協議交換路由信息的結點數量級是自治系統數的量級。
② 每一個自治系統中 BGP 發言人(或邊界路由器)的數目是很少的。這樣就使得自治系統之間的路由選擇不致過分複雜。
③ BGP 支持 CIDR,因此 BGP 的路由表也就應當包括目的網絡前綴、下一跳路由器,以及到達該目的網絡所要經過的各個自治系統序列。
④ 在BGP 剛剛運行時,BGP 的鄰站是交換整個的 BGP 路由表。但以後只需要在發生變化時更新有變化的部分。這樣做對節省網絡帶寬和減少路由器的處理開銷方面都有好處。
5. BGP 報文
(1)BGP 報文具有通用的首部
(2)BGP-4 共使用四種報文
報文 | 說明 |
---|---|
打開(OPEN) 報文 | 用來與相鄰的另一個BGP發言人建立關係。 |
更新(UPDATE) 報文 | 用來發送某一路由的信息,以及列出要撤消的多條路由。 |
保活(KEEPALIVE) 報文 | 用來確認打開報文和週期性地證實鄰站關係。 |
通知(NOTIFICATION) 報文 | 用來發送檢測到的差錯。 |
4.5.5 路由器的構成
1. 典型的路由器結構
路由器是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組。
圖中的數字1~3表示相應層次的構件
2. 路由器結構劃分
整個的路由器結構可劃分爲兩大部分:
① 路由選擇
路由選擇部分被也叫控制部分,其核心部件是路由選擇處理機。
② 分組轉發
分組轉發由三部分組成:
a) 交換結構;
b) 一組輸入端口;
c) 一組輸出端口;
(1)“轉發”和“路由選擇”的區別
“轉發”(forwarding) | 就是路由器根據轉發表將用戶的 IP 數據報從合適的端口轉發出去。 |
---|---|
“路由選擇”(routing) | 則是按照分佈式算法,根據從各相鄰路由器得到的關於網絡拓撲的變化情況,動態地改變所選擇的路由。 |
路由表是根據路由選擇算法得出的。而轉發表是從路由表得出的
。在討論路由選擇的原理時,往往不去區分轉發表和路由表的區別,
(2)輸入端口的處理
數據鏈路層剝去幀首部和尾部後,將分組送到網絡層的隊列中排隊等待處理。這會產生一定的時延。
(3)輸出端口的處理
當交換結構傳送過來的分組先進行緩存。數據鏈路層處理模塊將分組加上鍊路層的首部和尾部,交給物理層後發送到外部線路。
(4)分組丟棄
① 若路由器處理分組的速率趕不上分組進入隊列的速率,則隊列的存儲空間最終必定減少到零,這就使後面再進入隊列的分組由於沒有存儲空間而只能被丟棄。
② 路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因。
3. 交換結構
交換結構是路由器的關鍵構件。
正是這個交換結構把分組從一個輸入端口轉移到某個合適的輸出端口。
(1)常用交換方法
① 通過存儲器
a) 當路由器的某個輸入端口收到一個分組時,就用中斷方式通知路由選擇處理機。然後分組就從輸入端口複製到存儲器中。
b) 路由器處理機從分組首部提取目的地址,查找路由表,再將分組複製到合適的輸出端口的緩存中。
c) 若存儲器的帶寬(讀或寫)爲每秒 M 個分組,那麼路由器的交換速率(即分組從輸入端口傳送到輸出端口的速率)一定小於 M/2。
② 通過總線
a) 數據報從輸入端口通過共享的總線直接傳送到合適的輸出端口,而不需要路由選擇處理機的干預。
b) 因爲每一個要轉發的分組都要通過這一條總線,因此路由器的轉發帶寬就受總線速率的限制。
c) 現代的技術已經可以將總線的帶寬提高到每秒吉比特的速率,因此許多的路由器產品都採用這種通過總線的交換方式。
③ 通過縱橫交換結構 (crossbar switch fabric)
a) 這種交換結構常稱爲互連網絡 (interconnection network)。
b) 它有 2N 條總線,可以使 N 個輸入端口和 N 個輸出端口相連接。
c) 當輸入端口收到一個分組時,就將它發送到與該輸入端口相連的水平總線上。
d) 若通向所要轉發的輸出端口的垂直總線是空閒的,則在這個結點將垂直總線與水平總線接通,然後將該分組轉發到這個輸出端口。
e) 但若該垂直總線已被佔用(有另一個分組正在轉發到同一個輸出端口),則後到達的分組就被阻塞,必須在輸入端口排隊。
4.6 IPv6
IPv6 仍支持無連接的傳送,但將協議數據單元 PDU 稱爲分組。
4.6.1 IPv6的基本首部
1. IPv6所引進的主要變化:
① 更大的地址空間。 IPv6 將地址從 IPv4 的 32 位 增大到了 128 位。
② 擴展的地址層次結構。
③ 靈活的首部格式。 IPv6 定義了許多可選的擴展首部。
④ 改進的選項。 IPv6 允許數據報包含有選項的控制信息,其選項放在有效載荷中。
⑤ 允許協議繼續擴充。
⑥ 支持即插即用(即自動配置)。 因此 IPv6 不需要使用 DHCP。
⑦ 支持資源的預分配。 IPv6 支持實時視像等要求,保證一定的帶寬和時延的應用。
⑧ IPv6 首部改爲 8 字節對齊。 首部長度必須是 8 字節的整數倍。原來的 IPv4 首部是 4 字節對齊。
2.IPv6 數據報
(1)IPv6 數據報的一般形式
IPv6 數據報由兩大部分組成:
① 基本首部 (base header)
② 有效載荷 (payload)。有效載荷也稱爲淨負荷。有效載荷允許有零個或多個擴展首部 (extension header),再後面是數據部分。
(2)IPv6 數據報的基本首部
① IPv6 將首部長度變爲固定的 40 字節,稱爲基本首部。
② 把首部中不必要的功能取消了,使得 IPv6 首部的字段數減少到只有 8 個。
③ IPv6 對首部中的某些字段進行了如下的更改:
取消了首部長度字段,因爲首部長度是固定的 40 字節;
取消了服務類型字段;
取消了總長度字段,改用有效載荷長度字段;
把 TTL 字段改稱爲跳數限制字段;
取消了協議字段,改用下一個首部字段;
取消了檢驗和字段;
取消了選項字段,而用擴展首部來實現選項功能
字段 | 大小 | 說明 |
---|---|---|
版本(version) | 4 位 | 它指明瞭協議的版本,對 IPv6 該字段總是 6。 |
通信量類(traffic class) | 8 位 | 這是爲了區分不同的 IPv6 數據報的類別或優先級。目前正在進行不同的通信量類性能的實驗。 |
流標號(flow label) | 20 位 | “流”是互聯網絡上從特定源點到特定終點的一系列數據報, “流”所經過的路徑上的路由器都保證指明的服務質量。 所有屬於同一個流的數據報都具有同樣的流標號。 |
有效載荷長度(payload length) | 16 位 | 它指明 IPv6 數據報除基本首部以外的字節數(所有擴展首部都算在有效載荷之內),其最大值是 64 KB。 |
下一個首部(next header) | 8 位 | 它相當於 IPv4 的協議字段或可選字段。 |
跳數限制(hop limit) | 8 位 | 源站在數據報發出時即設定跳數限制。路由器在轉發數據報時將跳數限制字段中的值減 1。 當跳數限制的值爲零時,就要將此數據報丟棄。 |
源地址 | 128 位 | 是數據報的發送站的 IP 地址。 |
目的地址 | 128 位 | 是數據報的接收站的 IP 地址。 |
(3)IPv6 的擴展首部
① IPv6 把原來 IPv4 首部中選項的功能都放在擴展首部中,並將擴展首部留給路徑兩端的源站和目的站的主機來處理。
② 數據報途中經過的路由器都不處理這些擴展首部(只有一個首部例外,即逐跳選項擴展首部)。這樣就大大提高了路由器的處理效率。
③ 在 RFC 2460 中定義了六種擴展首部: 逐跳選項、路由選擇、分片、鑑別、封裝安全有效載荷、目的站選項
4.6.2 IPv6 的地址
1. IPv6目的地址類型
IPv6 數據報的目的地址可以是以下三種基本類型地址之一:
① 單播 (unicast): 傳統的點對點通信。
② 多播 (multicast): 一點對多點的通信。
③ 任播 (anycast): 這是 IPv6 增加的一種類型。任播的目的站是一組計算機,但數據報在交付時只交付其中的一個,通常是距離最近的一個。
(1)結點與接口
① 將實現 IPv6 的主機和路由器均稱爲結點。
② 一個結點就可能有多個與鏈路相連的接口。
③ IPv6 地址是分配給結點上面的接口的。
a) 一個接口可以有多個單播地址。
b) 其中的任何一個地址都可以當作到達該結點的目的地址。即一個結點接口的單播地址可用來唯一地標誌該結點
。
(2)冒號十六進制記法
① 在 IPv6 中,每個地址佔 128 位,地址空間大於 。
② 爲了使地址再稍簡潔些,IPv6 使用冒號十六進制記法(colon hexadecimal notation, 簡寫爲 colon hex)。
③ 每個 16 位的值用十六進制值表示,各值之間用冒號分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六進制記法中,允許把數字前面的 0 省略。例如把 0000 中的前三個 0 省略,寫成 1 個 0。
(3)零壓縮
① 冒號十六進制記法可以允許零壓縮 (zero compression),即一連串連續的零可以爲一對冒號所取代。
FF05:0:0:0:0:0:0:B3
可壓縮爲:
FF05::B3
注意:在任一地址中只能使用一次零壓縮
。
(4)點分十進制記法的後綴
① 冒號十六進制記法可結合使用點分十進制記法的後綴,這種結合在 IPv4 向 IPv6 的轉換階段特別有用。
例如:0:0:0:0:0:0:128.10.2.1
再使用零壓縮即可得出: ::128.10.2.1
② CIDR 的斜線表示法仍然可用。
例如:60 位的前綴 12AB00000000CD3 可記爲:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60
(零壓縮)
或 12AB:0:0:CD30::/60
(零壓縮)
2. IPv6 地址分類
地址類型 | 二進制前綴 | 說明 |
---|---|---|
未指明地址 | 00…0(128位),可記爲 ::/128。 | 這是 16 字節的全 0 地址,只能爲還沒有配置到一個標準的 IP 地址的主機當作源地址使用。這類地址僅此一個。 |
環回地址 | 00…1(128位),可記爲 ::1/128。 | 即 0:0:0:0:0:0:0:1(記爲 ::1),作用和 IPv4 的環回地址一樣,這類地址也是僅此一個。 |
多播地址 | 11111111(8位),可記爲 FF00::/8。 | 功能和 IPv4 的一樣,這類地址佔 IPv6 地址總數的 1/256 |
本地鏈路單播地址 | 1111111010(10位), 可記爲 FE80::/10。 | 有些單位的網絡使用 TCP/IP 協議,但並沒有連接到互聯網上。連接在這樣的網絡上的主機都可以使用這種本地地址進行通信,但不能和互聯網上的其他主機通信。這類地址佔 IPv6 地址總數的 1/1024。 |
全球單播地址 | (除上述四種外,所有其他的二進制前綴) |
4.6.3 從 IPv4 向 IPv6 過渡
① 向 IPv6 過渡只能採用逐步演進的辦法,同時,還必須使新安裝的 IPv6 系統能夠向後兼容:IPv6 系統必須能夠接收和轉發 IPv4 分組,並且能夠爲 IPv4 分組選擇路由。
② 兩種向 IPv6 過渡的策略:
使用雙協議棧
使用隧道技術
1. 雙協議棧
- 雙協議棧 (dual stack) 是指在完全過渡到 IPv6 之前,使一部分主機(或路由器)裝有兩個協議棧,一個 IPv4 和一個 IPv6。
- 雙協議棧的主機(或路由器)記爲 IPv6/IPv4,表明它同時具有兩種 IP 地址:一個 IPv6 地址和一個 IPv4 地址。 雙協議棧主機在和 IPv6 主機通信時是採用 IPv6 地址,而和 IPv4 主機通信時就採用 IPv4 地址。
- 根據 DNS 返回的地址類型可以確定使用 IPv4 地址還是 IPv6 地址。
2. 隧道技術
- 在 IPv6 數據報要進入 IPv4 網絡時,把 IPv6 數據報封裝成爲 IPv4 數據報,整個的 IPv6 數據報變成了 IPv4 數據報的數據部分。
- 當 IPv4 數據報離開 IPv4 網絡中的隧道時,再把數據部分(即原來的 IPv6 數據報)交給主機的 IPv6 協議棧。
4.6.4 ICMPv6
1. ICMPv6
- IPv6 也不保證數據報的可靠交付,因爲互聯網中的路由器可能會丟棄數據報。
- 因此 IPv6 也需要使用 ICMP 來反饋一些差錯信息。新的版本稱爲 ICMPv6。
- 地址解析協議 ARP 和網際組管理協議 IGMP 協議的功能都已被 合併到 ICMPv6 中。
2. ICMPv6 報文的分類
- CMPv6 是面向報文的協議,它利用報文來報告差錯,獲取信息,探測鄰站或管理多播通信。
- ICMPv6 還增加了幾個定義報文的功能及含義的其他協議。