漫談計算機網路:網路層 ------ 重點:IP協議與網際網路路由選擇協議

slowlydance2me發表於2022-11-29

 面試答不上?計網很枯燥? 聽說你學習 計網 每次記了都會忘? 不妨抽時間和我一起多學學它? 深入淺出,用你的空閒時間來探索計算機網路的硬核知識!

?博主的上篇連載文章《初識影像處理技術》

影像處理技術:數字影像分割 ------ 影像分割、邊界分割(邊緣檢測)、區域分割 - slowlydance2me - 部落格園 (cnblogs.com)

 

漫談計算機網路 連載的其他章節?:

1.漫談計算機網路:概述 ------ 從起源開始到分層協議結構,初識究竟什麼是計算機網路? - slowlydance2me - 部落格園 (cnblogs.com)

2.漫談計算機網路:物理層 ----- 雙絞線&光纖?,從最底層開始瞭解計算機網路 - slowlydance2me - 部落格園 (cnblogs.com)

3.漫談計算機網路:資料鏈路層 ----- 資料鏈路路在何方? --從點對點資料傳輸 到 "廣泛撒網,重點捕獲"的區域網 - slowlydance2me - 部落格園 (cnblogs.com)

 

前言:

2022/11/27

  眾所周知,計算機網路在程式設計師的學習以及面試中佔據十分重要的位置,同時它也是我們開啟網際網路世界的鑰匙?。

  因此,從今天(11/27)開始更新《漫談計算機網路》一文,讀者們可以跟著博主一起深入淺出,瞭解計算機網路知識,學習計算機網路的應用。

  博主仍在不斷學習進步中,在本文中對於計算機網路的理解與認識尚淺,如有錯誤之處煩請批評指正。

  如有疑問歡迎評論區留言。

 

正文分割線:


今天更新!11/29

漫談計算機網路:第四章-網路層

 

老規矩我們先來看看網路層在計算機網路體系結構中的位置

 

 

 

4.1 網路層的幾個重要概念

4.1.1 網路層提供的兩種服務

在網路層一開始的定義中有這兩種爭論:

爭論:
  網路層應該向運輸層提供怎樣的服務?面向連線還是無連線?
  在計算機通訊中,可靠交付應當由誰來負責?是網路還是端系統?
 
這兩種爭論分別對應以下這兩種觀點:
 
2 種觀點:
  面向連線的可靠交付。
  無連線的、盡最大努力交付的資料包服務,不提供服務質量的承諾。
 
接下來,讓我們分別來了解一下這兩種觀點:

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

  計算機網路模仿電信網路,使用面向連線的通訊方式。
  通訊之前先建立虛電路 VC (Virtual Circuit) (即連線),以保證雙方通訊所需的一切網路資源。
   如果再使用可靠傳輸的網路協議,可使所傳送的分組無差錯按序到達終點,不丟失、不重複。

 

    什麼是虛電路服務?

如圖?

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

 

  另一種觀點:網路提供資料包服務

網際網路採用的設計思路:
  網路層要設計得儘量簡單,向其上層只提供簡單靈活的、無連線的、盡最大努力交付的資料包服務
    網路在傳送分組時不需要先建立連線
    每一個分組(即 IP 資料包)獨立傳送,與其前後的分組無關(不進行編號)。
    網路層不提供服務質量的承諾。即所傳送的分組可能出錯、丟失、重複和失序(不按序到達終點),也不保證分組傳送的時限。
  由主機中的運輸層負責可靠的通訊。
資料包服務如圖?

 

虛電路服務與資料包服務的對比

 

 

4.1.2 網路層的兩個層面

  不同網路中的兩個主機之間的通訊,要經過若干個路由器轉發分組來完成。
  在路由器之間傳送的資訊有以下 2 大類:
    1. 資料。
    2. 路由資訊(為資料傳送服務)。
 

網路層的 2 個層面:資料層面和控制層面

 

 

資料層面

• 路由器根據本路由器生成的轉發表,把收到的分組從查詢到的對應介面轉發出去。
獨立工作。
• 採用硬體進行轉發,
 

控制層面

• 根據路由選擇協議所用的路由演算法計算路由,建立出本路由器的路由表
• 許多路由器協同工作
• 採用軟體計算,
 

軟體定義網路 SDN (Software Defined Network)

 

 

 

 

 

重點在這裡?

4.2 網際協議 IP

  與網際協議 IPv4 配套的 3 個協議:
    1. 地址解析協議 ARP (Address Resolution Protocol)
    2. 網際控制報文協議 ICMP (Internet Control Message Protocol)
    3. 網際組管理協議 IGMP (Internet Group Management Protocol)

 

 

4.2.1 虛擬互連網路

實現網路互連、互通時需要解決許多問題,如以下“不同”:

如何將異構的網路互相連線起來?
 
實現異構網路的互連互通方法,哪種好?

使用中間裝置進行裝置互連

注意:

使用轉發器或網橋不稱為網路互連

 轉發器、網橋或交換機僅把一個網路擴大了,仍然是一個網路

互連網路與虛擬互連網路

IP 網的概念
 

IP 網的意義

  當網際網路上的主機進行通訊時,就好像在一個網路上通訊一樣,看不見互連的各具體的網路異構細節。
  如果在這種覆蓋全球的 IP 網的上層使用 TCP 協議,那麼就是現在的網際網路 (Internet)
 

分組傳輸路徑

 

 

 

4.2.2 IP 地址

  在 TCP/IP 體系中,IP 地址是一個最基本的概念。
  沒有IP地址,就無法和網上的其他裝置進行通訊。
  本部分重點?:

    1. IP 地址及其表示方法

點分十進位制:

網際網路上的每臺主機(或路由器)的每個介面分配一個在全世界唯一的 IP 地址。由網際網路名字和數字分配機構 ICANN (Internet Corporation for AssignedNames and Numbers) 進行分配。

點分十進位制舉例:

 

 

IP 地址採用 2 級結構

2 級結構
2 個欄位:網路號和主機號
IP地址在整個網際網路範圍內是唯一的。
IP 地址指明瞭連線到某個網路上的一個主機

 

 

 

    2. 分類的 IP 地址

 

 

 

各類 IP 地址的網路號欄位和主機號欄位

 

 

 

 

 

 

 

 

 

 

 

 

 

各類 IP 地址的指派範圍:

 

 

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

分類的 IP 地址的優點和缺點

 

 

 

 

    3. 無分類編址 CIDR

   CIDR (Classless Inter-Domain Routing) :無分類域間路由選擇
   消除了傳統的 A 類、B 類和 C 類地址以及劃分子網的概念,可以更加有效地分配 IPv4 的地址空間,但無法解決 IP 地址枯竭的問題
  要點:

    (1) 網路字首

2 級結構
2 個欄位:網路字首和主機號 

 

 

 

 

    (2) 地址塊

  CIDR 把網路字首都相同的所有連續的 IP 地址組成一個 CIDR 地址塊
   一個 CIDR 地址塊包含的 IP 地址數目,取決於網路字首的位數n。 232-n - 2 個可派地址

二進位制程式碼表示:10000000 00001110 0010*

地址與地址塊識別規範

 

 

 

    (3) 地址掩碼

  又稱為子網掩碼 (subnet mask)。
  位數:32 位。
  目的:讓機器從 IP 地址迅速算出網路地址。
  由一連串 1 和接著的一連串 0 組成,而 1 的個數就是網路字首的長度

 

 

預設地址掩碼

網路地址 = (二進位制的 IP 地址) AND (地址掩碼)

例題:

 

 

 補充:

常用的 CIDR 地址塊

 

構造超網 

  每一個 CIDR 地址塊中的地址數一定是 2 的整數次冪。
  ?上圖中除最後幾行外,CIDR 地址塊都包含了多個 C 類地址(是一個 C 類地址的 2n 倍,n 是整數)。
   因此在文獻中有時稱 CIDR 編址為“構造超網” 。

 

 

三個特殊的 CIDR 地址塊

 

路由聚合 (route aggregation)

 

CIDR 地址塊劃分舉例

 

 

 

 

 

    4. IP 地址的特點

  (1) 每個 IP 地址都由網路字首和主機號兩部分組成。
    IP 地址是一種分等級的地址結構。
      方便了 IP 地址的分配和管理。
    實現路由聚合,減小了轉發表所佔的儲存空間,以及查詢轉發表的時間。
 
  (2) IP 地址是標誌一臺主機(或路由器)和一條鏈路的介面。
  當一臺主機同時連線到兩個網路上時,該主機就必須同時具有兩個相應的 IP
地址,其網路號必須是不同的。這種主機稱為多歸屬主機 (multihomed host)。
  一個路由器至少應當連線到兩個網路,因此一個路由器至少應當有兩個不同的 IP 地址。
 
  (3) 轉發器或交換機連線起來的若干個區域網仍為一個網路
  按照網際網路的觀點,一個網路(或子網)是指具有相同網路字首的主機的集合。
  轉發器或交換機連線起來的若干個區域網都具有同樣的網路號,它們仍為一個網路。
  具有不同網路號的區域網必須使用路由器進行互連。
 
  (4) 在 IP 地址中,所有分配到網路字首的網路都是平等的。
  網際網路同等對待每一個 IP 地址,不管是範圍很小的區域網,還是可能覆蓋很大地理範圍的廣域網

 

 

 

 

 

 

4.2.3 IP 地址與 MAC 地址

IP 地址

• 虛擬地址、軟體地址、邏輯地址。
• 網路層和以上各層使用。
• 放在 IP 資料包的首部。
 
MAC 地址
• 固化在網路卡上的 ROM 中。
• 硬體地址、實體地址。
• 資料鏈路層使用。
• 放在 MAC 幀的首部’

IP 地址與 MAC 地址的區別

 

 

 

 

 

不同層次、不同區間使用的源地址和目的地址

  儘管互連在一起的網路的 MAC 地址體系各不相同,但 IP 層抽象的網際網路卻遮蔽了下層這些很複雜的細節。
  只要我們在網路層上討論問題,就能夠使用統一的、抽象的 IP 地址研究主機和主機或路由器之間的通訊。
 
問題:
主機或路由器怎樣知道應當在 MAC 幀的首部填入什麼樣的 MAC 地址?下一節告訴你答案?

 

4.2.4 地址解析協議 ARP

實現 IP 通訊時使用了兩個地址:
1. IP 地址(網路層地址)
2. MAC 地址(資料鏈路層地址)

 

問題:已經知道了一個機器(主機或路由器)的 IP 地址,如何找出其相應的 MAC 地址?

 

 

ARP 快取記憶體 (ARP cache)

   存放 IP 地址到 MAC 地址的對映表。
   對映表動態更新(新增或超時刪除)。

 

ARP 工作流程

當主機 A 欲向本區域網上的某個主機 B 傳送 IP 資料包時:

ARP 查詢 IP 地址對應的 MAC地址

  本區域網上廣播傳送 ARP 請求(路由器不轉發 ARP 請求)。
  ARP 請求分組:包含傳送方硬體地址 / 傳送方 IP 地址 / 目標方硬體地址(未知時填 0) / 目標方 IP 地址。
  單播 ARP 響應分組:包含傳送方硬體地址 / 傳送方 IP地址 / 目標方硬體地址 / 目標方 IP 地址。
  ARP 分組封裝在乙太網幀中傳輸。

       

ARP 快取記憶體的作用

  存放最近獲得的 IP 地址到 MAC 地址的繫結。
  減少 ARP 廣播的通訊量。
   為進一步減少 ARP 通訊量,主機 A 在傳送其 ARP 請求分組時,就將自己的 IP 地址到 MAC 地址的對映寫入 ARP 請求分組。
  當主機 B 收到 A 的 ARP 請求分組時,就將主機 A 的 IP 地址及其對應的 MAC 地址對映寫入主機 B 自己的 ARP 快取記憶體中。不必再傳送 ARP 請求。
 

2 臺主機不在同一個區域網上怎麼辦?

過程演示如下?

 

 

 

 

 

 

 

 

 

使用 ARP 的四種典型情況

1. 傳送方是主機,要把 IP 資料包傳送到本網路上的另一個主機。這時用 ARP 找到目的主機的硬體地址。

2. 發送方是主機,要把 IP 資料包傳送到另一個網路上的一個主機。這時用 ARP 找到本網路上的一個路由器的硬體地址。剩下的工作由這個路由器來完成。
3. 傳送方是路由器,要把 IP 資料包轉發到本網路上的一個主機。這時用 ARP 找到目的主機的硬體地址。
4. 傳送方是路由器,要把 IP 資料包轉發到另一個網路上的一個主機。這時用 ARP 找到本網路上另一個路由器的硬體地址。剩下的工作由這個路由器來完成。

 

靈魂拷問:為什麼要使用兩種地址:IP 地址和 MAC 地址?

   不同網路不同的 MAC 地址。MAC 地址之間的轉換非常複雜。
  對乙太網 MAC 地址進行定址也是極其困難的。
  IP 編址把這個複雜問題解決了。
     連線到網際網路的主機只需各自擁有一個唯一的 IP 地址,它們之間的通訊就像連線在同一個網路上那樣簡單方便,即使必須多次呼叫 ARP 來找到 MAC 地址,但這個過程都是由計算機軟體自動進行的,對使用者來說是看不見的。
    因此,在虛擬的 IP 網路上用 IP 地址進行通訊非常方便。

 

 

4.2.5 IP 資料包的格式

 

 

 

 

 

 

 

 

 

IP 資料包首部的固定部分中的各欄位

如圖?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【例4-1】 IP 資料包分片

 

 

 

 

 

 

 

 

 

 

 

 

IP 協議支援多種協議,IP 資料包可以封裝多種協議 PDU。

 

 

常用的一些協議和相應的協議欄位值

 

 

 

 

 

資料包每經過一個路由器,路由器都要重新計算一下首部檢驗和

 

 

 

 

IP 資料包首部的可變部分

   IP 首部的可變部分就是一個選項欄位,用來支援排錯、測量以及安全等措施,內容很豐富。
  長度可變:從 1 個位元組到 40 個位元組不等,取決於所選擇的專案。
   增加了 IP 資料包的功能,但這同時也使得 IP 資料包的首部長度成為可變的,增加了每一個路由器處理資料包的開銷。
  實際上這些選項很少被使用。

重點在這裡?

4.3 IP 層轉發分組的過程

4.3.1 基於終點的轉發

l 分組在網際網路中是逐跳轉發的。
l 基於終點的轉發:基於分組首部中的目的地址傳送和轉發。

 

 

 

 

問:主機 H1 傳送出的、目的地址是 128.1.2.132 的分組是如何轉發的?

 

 

128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配!

 

128.1.2.132 AND 255.255.255.128 = 128.1.2.128 匹配!

進行分組的直接交付(透過路由器 R1 的介面 1)。

4.3.2 最長字首匹配

  使用 CIDR 時,在查詢轉發表時可能會得到不止一個匹配結果
   最長字首匹配 (longest-prefix matching) 原則:選擇字首最長的一個作為匹配的字首。
   網路字首越長,其地址塊就越小,因而路由就越具體。
   可以把字首最長的排在轉發表的第 1 行

問:路由器 R1 如何轉發目的地址是 128.1.2.196 的分組?

128.1.2.196 AND 255.255.255.192 = 128.1.2.192 不匹配!

128.1.2.196 AND 255.255.255.128 = 128.1.2.128 匹配!

128.1.2.196 AND 255.255.255.192 = 128.1.2.192 匹配!

問題:R1 從哪個介面向外轉發分組?

 

 

網路字首越長,其地址塊就越小,路由就越具體(more specific)

可以把字首最長的排在轉發表的第 1 行,以加快查表
 

轉發表中的 2 種特殊的路由

  主機路由 (host route)

    又叫做特定主機路由。
    是對特定目的主機的 IP 地址專門指明的一個路由。
    網路字首就是 a.b.c.d/32
    放在轉發表的最前面。

  預設路由 (default route)

    不管分組的最終目的網路在哪裡,都由指定的路由器 R 來處理
    用特殊字首 0.0.0.0/0 表示。
 
預設路由舉例

只要目的網路不是 N1 和 N2,就一律選擇預設路由,把 IP 資料包先間接交付預設路由器 R1,讓 R1 再轉發給下一個路由器。

路由器分組轉發演算法

 

 

4.3.3 使用二叉線索查詢轉發

  二叉線索 (binary trie):一種特殊結構的樹,可以快速在轉發表中找到匹配的葉節點。
   從二叉線索的根節點自頂向下的深度最多有 32 層,每一層對應於IP 地址中的一位。
  為簡化二叉線索的結構,可以用唯一字首 (unique prefix) 來構造二叉線索。
  為了提高二叉線索的查詢速度,廣泛使用了各種壓縮技術。

用 5 個唯一字首構成的二叉線索

 

 

 

 

(補充)4.3*劃分子網

 

4.3.1 劃分子網

1. 從兩級 IP 地址到三級 IP 地址

在 ARPANET 的早期,IP 地址的設計確實不夠合理:
(1) IP 地址空間的利用率有時很低。
(2) 給每一個物理網路分配一個網路號會使路由表變得太大因而使網路
效能變壞。
(3) 兩級的 IP 地址不夠靈活
 

三級 IP 地址

   從 1985 年起在 IP 地址中又增加了一個“子網號欄位” ,使兩級的P 地址變成為三級的 IP 地址。
  這種做法叫做劃分子網 (subnetting) 。
  劃分子網已成為網際網路的正式標準協議。

劃分子網的基本思路

  劃分子網純屬一個單位內部的事情。單位對外仍然表現為沒有劃分子網的網路。
  從主機號借用若干個位作為子網號 subnet-id,而主機號 host-id也就相應減少了若干個位。
  凡是從其他網路傳送給本單位某個主機的 IP 資料包,仍然是根據 IP資料包的目的網路號 net-id,先找到連線在本單位網路上的路由器。
  然後此路由器在收到 IP 資料包後,再按目的網路號 net-id 和子網號 subnet-id 找到目的子網。
  最後就將 IP 資料包直接交付目的主機。

 

 

一個未劃分子網的 B 類網路145.13.0.0
劃分為三個子網後對外仍是一個網路

 

 

 

劃分子網後變成了三級結構

當沒有劃分子網時,IP 地址是兩級結構。
  劃分子網後 IP 地址就變成了三級結構。
  劃分子網只是把 IP 地址的主機號 host-id 這部分進行再劃分,而不改變 IP 地址原來的網路號 net-id。

 

 

劃分子網後變成了三級結構的優點

優點
1. 減少了 IP 地址的浪費
2. 使網路的組織更加靈活
3. 更便於維護和管理
  劃分子網純屬一個單位內部的事情,對外部網路透明,對外仍然表現為沒有劃分子網的一個網路。
 
子網掩碼
  從一個 IP 資料包的首部並無法判斷源主機或目的主機所連線的網路是否進行了子網劃分。
  使用子網掩碼 (subnet mask) 可以找出 IP 地址中的子網部分。
規則:
  子網掩碼長度 = 32 位
     子網掩碼左邊部分的一連串 1,對應於網路號和子網號
  子網掩碼右邊部分的一連串 0,對應於主機號

IP 地址的各欄位和子網掩碼

 

 

(IP 地址) AND (子網掩碼) =網路地址

預設子網掩碼

 

 

 

 

子網掩碼是一個重要屬性子網掩碼是一個網路或一個子網的重要屬性。
  路由器在和相鄰路由器交換路由資訊時,必須把自己所在網路(或子網)的子網掩碼告訴相鄰路由器。
  路由器的路由表中的每一個專案,除了要給出目的網路地址外,還必須同時給出該網路的子網掩碼。
  若一個路由器連線在兩個子網上,就擁有兩個網路地址和兩個子網掩
碼。
子網劃分方法:
   有固定長度子網和變長子網兩種子網劃分方法。
   在採用固定長度子網時,所劃分的所有子網的子網掩碼都是相同的。
  雖然根據已成為網際網路標準協議的 RFC 950 文件,子網號不能為全 1或全 0,但隨著無分類域間路由選擇 CIDR 的廣泛使用,現在全 1 和全 0 的子網號也可以使用了,但一定要謹慎使用,確認你的路由器所用的路由選擇軟體是否支援全 0 或全 1 的子網號這種較新的用法。
l 劃分子網增加了靈活性,但卻減少了能夠連線在網路上的主機總數

B 類地址的子網劃分選擇(使用固定長度子網

 

 例題:

 

 

 

 

4.3.2 使用子網時分組的轉發

  在不劃分子網的兩級 IP 地址下,從 IP 地址得出網路地址是個很簡單的事。
  但在劃分子網的情況下,從 IP 地址卻不能唯一地得出網路地址來,這是因為網路地址取決於那個網路所採用的子網掩碼,但資料包的首部並沒有提供子網掩碼的資訊。
  因此分組轉發的演算法也必須做相應的改動。
 
1.在劃分子網情況下路由器轉發分組的演算法從收到的分組的首部提取目的 IP 地址 D。
2. 先用各網路的子網掩碼和 D 逐位相“與”,看是否和相應的網路地址匹配。若
匹配,則將分組直接交付。否則就是間接交付,執行(3)。
3. 若路由表中有目的地址為 D 的特定主機路由,則將分組傳送給指明的下一跳路由器;否則,執行 (4)。
4. 對路由表中的每一行,將子網掩碼和 D 逐位相“與”。若結果與該行的目的網路地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執行 (5)。
5. 若路由表中有一個預設路由,則將分組傳送給路由表中所指明的預設路由器;否則,執行 (6)。
6. 報告轉發分組出錯
 

 

 

 

主機 H1 首先將本子網的子網掩碼 255.255.255.128
與分組的 IP 地址 128.30.33.138 逐位元相與”(AND 操作)

 

 

因此 H1 必須把分組傳送到路由器 R1然後逐項查詢路由表
 

 

 

 

 

 

 

 

4.4 網際控制報文協議 ICMP

  ICMP (Internet Control Message Protocol) 允許主機或路由器報告差錯情況和提供有關異常情況的報告。
   ICMP 是網際網路的標準協議
  但 ICMP 不是高層協議,而是IP 層的協議。

ICMP 報文的格式

 

4.4.1 ICMP 報文的種類

2 種:差錯報告報文詢問報文

幾種常用的 ICMP 報文型別

ICMP 差錯報告報文的資料欄位的內容

不應傳送 ICMP 差錯報告報文的幾種情況

  對 ICMP 差錯報告報文不再傳送 ICMP 差錯報告報文。
  對第一個分片的資料包片的所有後續資料包片都不傳送 ICMP 差錯報告報文。
  對具有多播地址的資料包都不傳送 ICMP 差錯報告報文。
  對具有特殊地址(如127.0.0.0 或 0.0.0.0)的資料包不傳送 ICMP差錯報告報文。
 

ICMP 詢問報文

   (1) 回送請求和回答
    由主機或路由器向一個特定的目的主機發出的詢問。
    收到此報文的主機必須給源主機或路由器傳送 ICMP 回送回答報文。
    這種詢問報文用來測試目的站是否可達,以及瞭解其有關狀態。
  (2) 時間戳請求和回答:
    請某臺主機或路由器回答當前的日期和時間。
    時間戳回答報文中有一個 32 位的欄位,其中寫入的整數代表從1900 年 1 月 1 日起到當前時刻一共有多少秒。
    時間戳請求與回答可用於時鐘同步和時間測量。

4.4.2 ICMP 的應用舉例

PING (Packet InterNet Groper)

   用來測試兩個主機之間的連通性。
   使用了 ICMP 回送請求與回送回答報文。
   是應用層直接使用網路層 ICMP 的例子,沒有透過運輸層的 TCP或 UDP。
 
例如:
?

用 PING 測試郵件伺服器 mail.sina.com.cn 的連通性

 

Traceroute

  這是UNIX作業系統中名字。在 Windows 作業系統中這個命令是 tracert。
  用來跟蹤一個分組從源點到終點的路徑。
   它利用 IP 資料包中的 TTL 欄位、ICMP 時間超過差錯報告報文和
  ICMP 終點不可達差錯報告報文實現對從源點到終點的路徑的跟蹤。
例如
?

用 tracert 命令獲得到新浪網的郵件伺服器 mail.sina.com.cn 的路由資訊

4.5 IPv6

    IP 是網際網路的核心協議。

   IPv4 地址耗盡問題:

      到 2011 年 2 月,IANA IPv4 的 32 位地址已經耗盡。
      各地區網際網路地址分配機構也相繼宣佈地址耗盡。
      我國在 2014 – 2015 年也逐步停止了向新使用者和應用分配 IPv4地址。
      根本解決措施:採用具有更大地址空間的新版本的 IP,即 IPv6。

4.5.1 IPv6 的基本首部

  IPv6 仍支援無連線的傳送。
  將協議資料單元 PDU 稱為分組 (packet) 。
   主要變化(1/2):
1. 更大的地址空間。 將地址從 IPv4 的 32 位 增大到了 128 位。
2. 擴充套件的地址層次結構。可以劃分為更多的層次。
3. 靈活的首部格式。定義了許多可選的擴充套件首部。
4. 改進的選項。允許資料包包含有選項的控制資訊,其選項放在有效載荷中。
5.允許協議繼續擴充。更好地適應新的應用。
6.支援即插即用(即自動配置)。不需要使用 DHCP。
7.支援資源的預分配。支援實時視像等要求保證一定的頻寬和時延的應用。
8.IPv6 首部改為 8 位元組對齊。首部長度必須是 8 位元組的整數倍。

4.5.2 IPv6 的地址

  由兩大部分組成:
1. 基本首部 (base header)
2. 有效載荷 (payload)。有效載荷也稱為淨負荷。有效載荷允許有零個或多個擴充套件首部 (extension header),再後面是資料部分。
如圖?

IPv6 資料包的基本首部

  首部長度:固定的 40 位元組,稱為基本首部。
     首部欄位數:只有 8 個。

IPv6 對首部的主要更改

基本首部每一個欄位的意義:

 

通訊量類(traffic class)

流標號(flow label)
流標號(flow label)—— 20 位。 “流”是網際網路絡上從特定源點到特定終點的一系列資料包, “流”所經過的路徑上的路由器都保證指明的服務質量。所有屬於同一個流的資料包都具有同樣的流標號。
 
 有效載荷長度(payload length)
有效載荷長度(payload length)—— 16 位。它指明 IPv6 資料包除基本首部以外的位元組數(所有擴充套件首部都算在有效載荷之內),其最大值是 64 KB。
 
下一個首部(next header)
下一個首部(next header)—— 8 位。相當於 IPv4 的協議欄位或可選欄位
 
跳數限制(hop limit)—— 8 位。
跳數限制(hop limit)—— 8 位。源站在資料包發出時即設定跳數限制。路由器在轉發資料包時將跳數限制欄位中的值減 1。當跳數限制的值為零時,就要將此資料包丟棄
 
源地址—— 128 位。
源地址—— 128 位。是資料包的傳送站的 IP 地址。
 
目的地址—— 128 位。
目的地址—— 128 位。是資料包的接收站的 IP 地址。
 

IPv6 的六種擴充套件首部

   逐跳選項
  路由選擇
   分片
   鑑別
   封裝安全有效載荷
   目的站選項 

三種基本型別(目的地址):

1. 單播 (unicast):傳統的點對點通訊。
2. 多播 (multicast):一點對多點的通訊。
3. 任播 (anycast):IPv6 增加的一種型別。任播的終點是一組計算機,但資料包在交付時只交付其中的一個。通常是按照路由演算法得出的距離最近的一個。
 

節點與介面

   IPv6 將實現 IPv6 的主機和路由器均稱為節點
   一個節點可能有多個與鏈路相連的介面。
  IPv6 地址是分配給節點上介面的。
    1. 一個具有多個介面的節點可以有多個單播地址。
    2. 其中的任何一個地址都可以當作到達該節點的目的地址。
 

冒號十六進位制記法

   在 IPv6 中,每個地址佔 128 位,地址空間大於 3.4  1038 。
   使用冒號十六進位制記法(colon hexadecimal notation, 簡寫為 colonhex)(為何?):16 位的值用十六進位制值表示,各值之間用冒號分隔。

兩個技術:零壓縮點分十進位制記法的字尾

零壓縮
   零壓縮 (zero compression):一串連續的零可以用一對冒號取代。
如:
FF05:0:0:0:0:0:0:B3
可壓縮為:
FF05::B3
舉例:?
注意:在任一地址中,只能使用一次零壓縮。

 

點分十進位制記法的字尾
  結合使用點分十進位制記法的字尾在 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 (零壓縮)

 

IPv6 地址分類

IPv6 單播地址的劃分方法

 

 

 

4.5.3 從 IPv4 向 IPv6 過渡

   方法:逐步演進,向後相容。
  向後相容:IPv6 系統必須能夠接收和轉發 IPv4 分組,並且能夠為 IPv4 分組選擇路由。
  兩種過渡策略:

    1. 使用雙協議棧

Pv6/IPv4 雙協議棧主機(或路由器)

使用雙協議棧進行從 IPv4 到 IPv6 的過渡

    2. 使用隧道技術

 

 

4.5.4 ICMPv6

   IPv6 也需要使用 ICMP 來反饋一些差錯資訊。新的版本稱為 ICMPv6。

新舊版本中的網路層的比較

ICMPv6 報文的分類

 

 

 

重點在這裡?

4.6 網際網路的路由選擇協議

4.6.1 有關路由選擇協議的幾個基本概念

 

 

 路由選擇協議屬於網路層控制層面的內容

 

 

1. 理想的路由演算法

 

 

 

關於“最佳路由”

• 不存在一種絕對的最佳路由演算法。
• 所謂“最佳”只能是相對於某一種特定要求下得出的較為合理的選擇而已。
 
路由選擇非常複雜
• 需要所有節點共同協調工作的。
• 環境不斷變化,而這種變化有時無法事先知道。
• 當網路發生擁塞時,很難獲得所需的路由選擇資訊。
 
路由演算法分類(動態&自適應 / 靜態&非自適應)

分層次的路由選擇協議

  網際網路:
    採用自適應的(即動態的)、分散式路由選擇協議。
    把整個網際網路劃分為許多較小的自治系統 AS,採用分層次的路由選擇協議。
   分為 2 個層次:
  自治系統之間的路由選擇 或 域間路由選擇 (interdomain routing);
  自治系統內部的路由選擇 或 域內路由選擇 (intradomain routing);
 

自治系統 AS (Autonomous System)

自治系統 AS :
是在單一技術管理下的許多網路、IP地址以及路由器,而這些路由器使用一種自治系統內部的路由選擇協議和共同的度量。每一個 AS 對其他 AS 表現出的是一個單一的和一致的路由選擇策略
 

2 大類路由選擇協議 (內部 IGP / 外部 EGP)

 

自治系統和內部閘道器協議、外部閘道器協議

4.6.2 內部閘道器協議 RIP

協議 RIP 的工作原理

  路由資訊協議 RIP (Routing Information Protocol) 是一種分散式的、基於距離向量的路由選擇協議。
   網際網路的標準協議。
   最大優點:簡單
   要求網路中的每個路由器都要維護從它自己到其他每一個目的網路的距離記錄
 

RIP“距離”的定義

  路由器到直接連線的網路的距離 = 1。
  路由器到非直接連線的網路的距離 = 所經過的路由器數 + 1。
  RIP 協議中的“距離”也稱為“跳數”(hop count),每經過一個路由器,跳數就加 1。
舉例?

路由 A-B-E 的距離 = 2,路由 A-C-D-E 的距離 = 3。

  好路由 = “距離短”的路由。最佳路由 = “距離最短”的路由

  一條路徑最多隻能包含 15 個路由器。
   “距離”的最大值為 16 時即相當於不可達
   RIP 不能在兩個網路之間同時使用多條路由,只選擇距離最短”的路由。

路由 A-B-E 的距離 = 2,路由 A-C-D-E 的距離 = 3。 最佳路由為 A-B-E

 

RIP 協議的三個特點

1. 僅和相鄰路由器交換資訊。
2. 交換的資訊是當前本路由器所知道的全部資訊,即自己的路由表
3. 按固定時間間隔交換路由資訊,例如,每隔 30 秒。當網路拓撲發生變化時,路由器也及時向相鄰路由器通告拓撲變化後的路由資訊。
 

路由表的建立

   路由器在剛剛開始工作時,路由表是空的
  然後,得到直接連線的網路的距離(此距離定義為 1)。
  之後,每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由資訊
  經過若干次更新後,所有的路由器最終都會知道到達本自治系統中任何一個網路的最短距離下一跳路由器的地址
   RIP 協議的收斂 (convergence) 過程較快。 “收斂”就是在自治系統中所有的結點都得到正確的路由選擇資訊的過程。

路由表主要資訊和更新規則

 

距離向量演算法

對每個相鄰路由器(假設其地址為 X)傳送過來的 RIP 報文,路由器:
(1) 修改 RIP 報文中的所有專案(即路由):把“下一跳”欄位中的地址都改為 X,並把所有的“距離”欄位的值加 1。
(2) 對修改後的 RIP 報文中的每一個專案,重複以下步驟
若路由表中沒有目的網路N,則把該專案新增到路由表中。否則
  若路由表中網路 N 的下一跳路由器為 X,則用收到的專案替換原路由表中的專案。否則
    若收到專案中的距離小於路由表中的距離,則用收到專案更新原路由表中的專案。否則什麼也不做。
(3) 若 3 分鐘還未收到相鄰路由器的更新路由表,則把此相鄰路由器記為不可達路由器,即將距離置為 16(表示不可達)。
(4) 返回。
 
  演算法基礎:Bellman-Ford 演算法(或 Ford-Fulkerson 演算法)。
  演算法要點:
  設 X 是結點 A 到 B 的最短路徑上的一個結點。
  若把路徑 A→B 拆成兩段路徑 A→X 和 X→B,則每一段路徑 A→X 和 X→B 也都分別是結點 A 到 X 和結點 X 到 B 的最短路徑。
 

例題1:

?

 

 例題2:

?

 

RIP2 報文

RIP2 的報文用使用 UDP 傳送(使用 UDP 埠 520)。

  組成:首部路由 2 個部分。
   路由部分:由若干個路由資訊組成。每個路由資訊共 20 個位元組。
    地址族識別符號(又稱為地址類別)欄位用來標誌所使用的地址協議。
    路由標記填入自治系統的號碼。
     後面為具體路由,指出某個網路地址、該網路的子網掩碼、下一跳路由器地址以及到此網路的距離。
  一個 RIP 報文最多可包括 25 個路由,因而 RIP 報文的最大長度是4+20 x25=504 位元組。如超過,必須再用一個 RIP 報文來傳送。
   RIP2 具有簡單的鑑別功能。
 

RIP 協議特點(壞事不出門,好事傳千里)

  RIP 協議特點:好訊息傳播得快,壞訊息傳播得慢。
   問題:壞訊息傳播得慢(慢收斂)。
導致:
當網路出現故障時,要經過比較長的時間才能將此資訊(壞訊息)傳送到所有的路由器。
例如:
?

 

 

 

 

 

 

 

 

 

這就是好訊息傳播得快,而壞訊息傳播得慢。這是 RIP 的一個主要缺點。

 

RIP 協議的優缺點

   優點:
1. 實現簡單,開銷較小。
   缺點:
1. 網路規模有限。最大距離為 15(16 表示不可達)。
2. 交換的路由資訊為完整路由表,開銷較大
3. 壞訊息傳播得慢收斂時間過長

4.6.3 內部閘道器協議 OSPF

 

 

 

l 開放最短路徑優先 OSPF (Open Shortest Path First)是為克服RIP 的缺點在 1989 年開發出來的。
l 原理很簡單,但實現很複雜。
l 使用了 Dijkstra 提出的最短路徑演算法 SPF
l 採用分散式的鏈路狀態協議 (link state protocol)。
l 現在使用 OSPFv2。

三個主要特點

  採用洪泛法 (flooding),向本自治系統中所有路由器傳送資訊。
  傳送的資訊是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分資訊。
     鏈路狀態(網路拓撲結構):說明本路由器都和哪些路由器相鄰,以及該鏈路的度量 (metric)。
  當鏈路狀態發生變化或每隔一段時間(如30分鐘),路由器才用洪
泛法向所有路由器傳送此資訊
 

鏈路狀態資料庫 (link-state database)

  每個路由器最終都能建立。
  全網的拓撲結構圖。
  在全網範圍內是一致的(這稱為鏈路狀態資料庫的同步)。
   每個路由器使用鏈路狀態資料庫中的資料構造自己的路由表(例如,使用Dijkstra的最短路徑路由演算法)。
鏈路狀態資料庫能較快地進行更新,使各個路由器能及時更新其路由表。

重要優點:OSPF 更新過程收斂速度快。

 

 

OSPF 將自治系統劃分為兩種不同的區域 (area)

主幹區域 (backbone area) 識別符號= 0.0.0.0,作用=用來連通其他下層區域。

OSPF 中的路由器:區域邊界路由器 ABR (area border router)
OSPF 中的路由器:主幹路由器 BR (backbone router)
OSPF 中的路由器:自治系統邊界路由器 ASBR (AS border router)

 

劃分割槽域優點和缺點

分層次劃分割槽域的好處:使每一個區域內部交換路由資訊的通訊量大大減小,因而使 OSPF 協
議能夠用於規模很大的自治系統中。
  優點:
    減少了整個網路上的通訊量
    減少了需要維護的狀態數量
  缺點:
    交換資訊的種類增多了。
    使 OSPF 協議更加複雜
 

劃分割槽域的其他特點

   對於不同型別的業務可計算出不同的路由。
   可實現多路徑間的負載均衡(load balancing)
  所有在 OSPF 路由器之間交換的分組都具有鑑別的功能。
   支援可變長度的子網劃分無分類編址 CIDR
  32 位的序號,序號越大狀態就越新。全部序號空間在 600 年內不會產生重複號。

OSPF 的五種分組型別

1. 問候 (Hello) 分組。
2. 資料庫描述 (Database Description) 分組。
3. 鏈路狀態請求 (Link State Request) 分組。
4. 鏈路狀態更新 (Link State Update) 分組。
5. 鏈路狀態確認 (Link State Acknowledgment)分組。
 

OSPF 分組用 IP 資料包傳送

 

 

OSPF 工作過程

   1,確定鄰站可達。
    相鄰路由器每隔 10 秒鐘要交換一次問候分組。
    若有 40 秒鐘沒有收到某個相鄰路由器發來的問候分組,則可認為該相鄰路由器是不可達的。
 
  2,同步鏈路狀態資料庫。
    同步:指不同路由器的鏈路狀態資料庫的內容是一樣的。
    兩個同步的路由器叫做完全鄰接的 (fully adjacent) 路由器。
不是完全鄰接的路由器:它們雖然在物理上是相鄰的,但其鏈路狀態資料庫並沒有達到一致。
 
   3,更新鏈路狀態。
    只要鏈路狀態發生變化,路由器就使用鏈路狀態更新分組,採用可靠的洪泛法向全網更新鏈路狀態。
    為確保鏈路狀態資料庫與全網的狀態保持一致,OSPF 還規定:每隔一段時間,如 30 分鐘,要重新整理一次資料庫中的鏈路狀態
 
OSPF 鏈路狀態只涉及相鄰路由器與整個網際網路的規模並無直接關係
因此當網際網路規模很大時,OSPF 協議要比距離向量協議 RIP 好得多。
OSPF 沒有“壞訊息傳播得慢”的問題,收斂數度快
 

 

 

 

 

指定的路由器 DR
  多點接入的區域網採用了指定的路由器 DR (designated router)的方法,使廣播的資訊量大大減少。
  指定的路由器代表該區域網上所有的鏈路向連線到該網路上的各路由器傳送狀態資訊。

4.6.4 外部閘道器協議 BGP

 

 

 

  BGP 是不同自治系統的路由器之間交換路由資訊的協議。
   BGP 較新版本是 2006 年 1 月發表的 BGP-4(BGP 第 4 個版本),即 RFC 4271 ~ 4278。
  可以將 BGP-4 簡寫為 BGP。

協議 BGP 的主要特點

   用於自治系統 AS 之間的路由選擇。
  只能是力求選擇出一條能夠到達目的網路且比較好的路由(不能兜圈子),而並非要計算出一條最佳路由
  1. 網際網路的規模太大,使得自治系統AS之間路由選擇非常困難。
  2. 自治系統AS之間的路由選擇必須考慮有關策略。
   採用了路徑向量 (path vector) 路由選擇協議
 

BGP 發言者 (BGP speaker)

 

 

(外)eBGP 連線和(內) iBGP 連線

 

 

在 AS 之間, BGP 發言者在半永久性 TCP 連線(埠號為179)上建立 BGP 會話(session)。這種連線又稱為 eBGP 連線。
在 AS 內部,任何相互通訊的兩個路由器之間必須有一個邏輯連接(也使用 TCP 連線)。AS 內部所有的路由器之間的通訊是全連通的。這種連線常稱為 iBGP 連線。
eBGP (external BGP) 連線:執行 eBGP 協議,在不同 AS 之間交換路由資訊。
iBGP (internal BGP) 連線:執行 iBGP 協議, 在 AS 內部的路由器之間交換 BGP 路由資訊。
 

IGP、iBGP 和 eBGP 的關係

  在 AS 內部執行:
    內部閘道器協議 IGP(可以是協議 OSPF 或 RIP)。
    協議 iBGP
  在 AS 之間執行:
    協議 eBGP
 

eBGP 和 iBGP 的異同

  同一個協議 BGP(使用的報文型別、使用的屬性、使用的狀態機等都完全一樣)。
  但它們在通報字首時採用的規則不同:(由外到內可以,由內到位也可以,內到內不行
    在 eBGP 連線的對等端得知的字首資訊,可以通報給一個 iBGP連線的對等端。反過來也是可以的。
      但從 iBGP 連線的對等端得知的字首資訊,則不能夠通報給另一個 iBGP 連線的對等端
舉例:
  R3 從 eBGP 連線的對等端 R4 得到的字首資訊可以通報給 iBGP 連線的對等端 R1 或 R2。
  R3 從 iBGP 連線的對等端 R1 和 R2 得到的字首資訊可以通報給 eBGP 連線的對等端 R4。
  但 R3 從 iBGP 連線的對等端 R1 得到的字首資訊不允許再通報給另一個 iBGP 連線的對等端 R2。

BGP 路由資訊

BGP 路由 = [ 字首, BGP屬性 ] = [ 字首, AS-PATH, NEXT-HOP ]
   字首:指明到哪一個子網(用 CIDR 記法表示)。
   BGP 屬性:最重要的兩個屬性是
    自治系統路徑 AS-PATH
     下一跳 NEXT-HOP。

AS2 可經 IP3a 到字首 X 的路由 = [字首, AS-PATH, NEXT-HOP] = [X, AS3, IP3a]

路由 1:AS1 可經 IP2a 到字首 X 的路由 = [字首, AS-PATH, NEXT-HOP] = [X, AS2 AS3 , IP2a]

路由2:AS1 可經 IP3c 到字首 X 的路由 = [字首, AS-PATH, NEXT-HOP] = [X, AS3, IP3c]

路由器 R1a 的轉發表中,沿 BGP 路由 1 到達字首 X 的專案是:
(匹配字首X,下一跳路由器 R1b)或(匹配字首X,轉發介面 0)。
 

三種不同的自治系統 AS

末梢 AS:不會把來自其他 AS 的分組再轉發到另一個 AS。必須向所連線的 AS 付費。

多歸屬 AS (multihomed AS):同時連線到兩個或兩個以上的 AS。增加連線的可靠性。
穿越 AS:為其他 AS 有償轉發分組。
對等 AS:經過事先協商的兩個 AS,彼此之間的傳送或接收分組都不收費。
 

問:BGP 路由如何避免兜圈子?

請記住:在屬性 AS-PATH 中,不允許出現相同的 AS 號。

 

BGP 的路由選擇

 

 

本地偏好 (local preference) 值最高

 

 

AS 跳數最小

AS1 選擇透過路由器 R1c 到達 X 的 BGP 路由。

但事實上,分組在 AS4 中反而要經過更多次數的轉發。
說明協議 BGP 不存在真正的最佳路由選擇。

熱土豆路由選擇演算法

R1a 選擇 R1c 作為離開 AS1 的最佳選擇,其 BGP 轉發表中對應的

專案應當是:(匹配字首 X,下一跳路由器 R1c)。
R1b 選擇 R1d 作為離開 AS1 的最佳選擇,其 BGP 轉發表中對應的
專案應當是:(匹配字首 X,下一跳路由器 R1d)。
 

BGP-4 的四種報文

 

 

BGP 報文具有通用首部

 

 

 

4.6.5 路由器的構成

  路由器工作在網路層,用於互連網路。
  是網際網路中的關鍵裝置。
  路由器的主要工作:轉發分組
把從某個輸入埠收到的分組,按照分組要去的目的地(即目的網路),把該分組從路由器的某個合適的輸出埠轉發給下一跳路由器。

路由器的結構

 

 

“轉發”和“路由選擇”的區別

 

 

 

輸入埠對線路上收到的分組的處理

 

 

輸出埠將交換結構傳送來的分組傳送到線路

 

 

 

交換結構

常用交換方法有三種:透過儲存器、透過匯流排、透過縱橫交換結構。

 

 

透過儲存器

 

 

  (1) 當路由器的某個輸入埠收到一個分組時,就用中斷方式通知路由選擇處理機。然後分組就從輸入埠複製到儲存器中。
  (2) 路由器處理機從分組首部提取目的地址,查詢路由表,再將分組複製到合適的輸出埠
快取中。
  (3) 若儲存器的頻寬(讀或寫)為每秒 M 個分組,那麼路由器的交換速率(即分組從輸入埠傳送到輸出埠的速率)一定小於 M/2

透過匯流排

 

 

  (1) 資料包從輸入埠透過共享的匯流排直接傳送到合適的輸出埠,而不需要路由選擇處
理機的干預。
  (2) 當分組到達輸入埠時若發現匯流排忙,則被阻塞而不能透過交換結構,並在輸入埠
排隊等待
  (3)因為每一個要轉發的分組都要透過這一條匯流排,因此路由器的轉發頻寬就受匯流排速率
的限制。

透過縱橫交換結構 (crossbar switch fabric)

 

 

 

  常被稱為互連網路 (interconnection network)。
  (1) 它有 2N 條匯流排,控制交叉節點可以使 N 個輸入埠和 N 個輸出埠相連線。
  (2) 當輸入埠收到一個分組時,就將它傳送到水平匯流排上。
  (3) 若通向輸出埠的垂直匯流排空閒,則將垂直匯流排與水平匯流排接通,把該分組轉發到這個輸出埠。
若輸出埠已被佔用,分組在輸入埠排隊等待
  特點:是一種無阻塞的交換結構,分組可以轉發到任何一個輸出埠,只要這個輸出埠沒有被別的
分組佔用。

重點在這裡?

4.7 IP 多播

4.7.1 IP 多播的基本概念

  1988 年,Steve Deering 首次提出 IP 多播的概念。
  多播 (multicast):以前曾譯為組播。
   目的:更好地支援一對多通訊。
  一對多通訊:一個源點傳送到許多個終點。

多播可大大節約網路資源

單播?

採用單播方式,
向 90 臺主機傳送同樣的影片節目需要傳送 90 個單播

 

 多播?

採用多播方式,只需傳送一次到多播組。路由器複製分組。區域網具有硬體多播功能,不需要複製分組。

當多播組的主機數很大時(如成千上萬個),採用多播方式就可明顯地減輕網路中各種資源的消耗。

 

IP 多播

  在網際網路上進行多播就叫做 IP 多播。
  網際網路範圍的多播要靠路由器來實現。
  能夠執行多播協議的路由器稱為多播路由器 (multicast router)。
  多播路由器也可以轉發普通的單播 IP 資料包。
   從 1992 年起,在網際網路上開始試驗虛擬的多播主幹網 MBONE(Multicast Backbone On the InterNEt)。

多播 IP 地址

  在 IP 多播資料包的目的地址需要寫入多播組的識別符號。
  多播組的識別符號就是 IP 地址中的 D 類地址(多播地址)。
    地址範圍:224.0.0.0 ~ 239.255.255.255
  每一個 D 類地址標誌一個多播組。
多播地址只能用於目的地址,不能用於源地址。

多播資料包

多播資料包和一般的 IP 資料包的區別:
    目的地址:使用 D 類 IP 地址。
    協議欄位 = 2,表明使用網際組管理協議 IGMP
  盡最大努力交付,不保證一定能夠交付多播組內的所有成員。
   對多播資料包不產生 ICMP 差錯報文。在 PING 命令後面鍵入多播地址,將永遠不會收到響應

4.7.2 在區域網上進行硬體多播

網際網路數字分配機構(IANA )擁有的乙太網地址塊的高 24 位為00-00-5E。
  TCP/IP 協議使用的乙太網地址塊的範圍是
    從 00-00-5E-00-00-00
    到 00-00-5E-FF-FF-FF
   IANA 只拿出 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF (223個地址)作為乙太網多播地址。或者說,在 48 位的多播地址中,前25 位都固定不變,只有後 23 位可用作多播
 

D 類 IP 地址與乙太網多播地址的對映關係

收到多播資料包的主機,還要在 IP 層對 IP 地址進行過濾,把不是本主機要接收的資料包丟棄。

4.7.3 網際組管理協議 IGMP 和多播路由選擇協議

IP 多播需要兩種協議

  網際組管理協議 IGMP (Internet Group Management Protocol)
     使多播路由器知道多播組成員資訊(有無成員)。
  多播路由選擇協議
    使多播路由器協同工作,把多播資料包用最小代價傳送給多播組的所有成員。
 

IGMP 使多播路由器知道多播組成員資訊

IGMP 協議是讓連線在本地區域網上的多播路由器知道本區域網上是否有主機參加或退出了某個多播組。IGMP 不知道 IP 多播組包含的成員數,也不知道這些成員都分佈在哪些網路上。

多播路由選擇協議更為複雜

路由器 R 不應當向網路 N3 轉發多播組 M1 的分組,因為網路 N3 上沒有多播組 M1 的成員。

  多播轉發必須動態地適應多播組成員的變化(這時網路拓撲並未發生變化),因為每一臺主機可以隨時加入或離開一個多播組。
   多播路由器在轉發多播資料包時,不能僅僅根據多播資料包中的目的地址,還要考慮這個多播資料包從什麼地方來和要到什麼地方去。
  多播資料包可以由沒有加入多播組的主機發出,也可以透過沒有組成員的接入網路。
 

網際組管理協議 IGMP

  1989 年公佈的 RFC 1112(IGMPv1)已成為了網際網路的標準協議。
  1997 年公佈的 RFC 2236(IGMPv2,建議標準)對 IGMPv1 進
行了更新。
  2002 年 10 月公佈了 RFC 3376(IGMPv3,建議標準)。

IGMP 使用 IP 資料包傳遞其報文

  在 IGMP 報文加上 IP 首部構成 IP 資料包。
   但 IGMP 也向 IP 提供服務。
  因此,不把 IGMP 看成是一個單獨的協議,而是整個網際協議 IP的一個組成部分。
 

IGMP 工作可分為兩個階段

  第一階段:加入多播組。

1. 當某個主機加入多播組時,該主機向多播組的多播地址傳送 IGMP 報文,宣告自己要成為該組的成員。

2. 本地的多播路由器收到 IGMP 報文後,將組成員關係轉發給網際網路上的其他多播路由器。

  第二階段:探詢組成員變化情況。

1.本地多播路由器週期性地探詢本地區域網上的主機,以便知道這些主機是否還繼續是組的成員。

2. 只要對某個組有一個主機響應,那麼多播路由器就認為這個組是活躍的。

1. 本地多播路由器週期性地探詢本地區域網上的主機,以便知道這些主機是否還繼續是組的成員。

2. 但一個組在經過幾次的探詢後仍然沒有一個主機響應,則不再將該組的成員關係轉發給其他的多播路由器。(不活躍)

IGMP 採用的一些具體措施,以避免增加大量開銷

  1.所有通訊都使用 IP 多播。只要有可能,都用硬體多播來傳送。
  2.對所有的組只傳送一個請求資訊的詢問報文。預設詢問速率是每125 秒傳送一次。
  3.當同一個網路上連線有多個多播路由器時,能迅速和有效地選擇其中的一個來探詢主機的成員關係
  4.分散響應。在 IGMP 的詢問報文中有一個數值 N,它指明一個最長響應時間(預設值為 10 秒)。當收到詢問時,主機在 0 到 N之間隨機選擇傳送響應所需經過的時延。若一臺主機同時參加了幾
個多播組,則主機對每一個多播組選擇不同的隨機數。對應於最小時延的響應最先傳送。
  5.採用抑制機制。同一個組內的每一個主機都要監聽響應,只要有本
組的其他主機先傳送了響應,自己就不再傳送響應了。

多播路由選擇

M 個源,N 個多播組,需要 MⅹN 棵以源為根的多播轉發樹

轉發多播資料包時使用三種方法:

(1) 洪泛與剪除
  適合於較小的多播組,所有組成員接入的區域網也是相鄰接的。
  開始時,路由器轉發多播資料包使用洪泛的方法(這就是廣播)。
  為避免兜圈子,採用反向路徑廣播 RPB (Reverse PathBroadcasting) 的策略。
RPB 的要點:檢查,轉發

 

RPB 的要點:形成以源為根節點的多播轉發樹

 

 

 

 

 

RPB 的要點:剪枝與嫁接
(2) 隧道技術 (tunneling)

隧道技術在多播中的應用

(3) 基於核心的發現技術
  對於多播組的大小在較大範圍內變化時都適合。
  對每一個多播組 G 指定一個核心 (core) 路由器,並給出它的 IP 單播地址
  核心路由器按照前面講過的 2 種方法建立出對應於多播組 G 的轉發樹(核心路由器為根節點)。
     1.為一個多播組構建一棵轉發樹,而不是為每個(源,組)組合構建一棵轉發樹。
     2.構建轉發樹開銷較小,擴充套件性較好
  如果有一個路由器 R1 向核心路由器傳送資料包,那麼它在途中經過的每一個路由器都要檢查其內容。
  當資料包到達參加了多播組 G 的路由器 R2 時,R2 就處理這個資料包。
    如果 R1 發出的是一個多播資料包,其目的地址是 G 的組地址,R2 就向 G 的成員轉發這個多播資料包。
    如果 R1 發出的資料包是一個請求加入多播組 G 的資料包,R2 就把這個資訊加到它的路由中,並用隧道技術向 R1 轉發每一個多播資料包的副本。
 

幾種多播路由選擇協議

  距離向量多播路由選擇協議 DVMRP (Distance Vector MulticastRouting Protocol)。網際網路上使用的第一個多播路由選擇協議。
  基於核心的轉發樹 CBT (Core Based Tree)
  開放最短通路優先的多播擴充套件 MOSPF (Multicast Extensions toOSPF)
  協議無關多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode) 。唯一成為網際網路標準的一個協議。
  協議無關多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)



4.8 虛擬專用網 VPN 和網路地址轉換 NAT

4.8.1 虛擬專用網 VPN

  由於 IP 地址的緊缺,一個機構能夠申請到的IP地址數往往遠小於本機構所擁有的主機數。
  考慮到網際網路並不是很安全,一個機構內也並不需要把所有的主機接入到外部的網際網路。
  如果一個機構內部的計算機通訊也是採用 TCP/IP 協議,那麼這些僅在機構內部使用的計算機就可以由本機構自行分配其 IP 地址。

本地地址與全球地址

  本地地址:僅在機構內部使用的 IP 地址,可以由本機構自行分配,而不需要向網際網路的管理機構申請。
  全球地址:全球唯一的 IP 地址,必須向網際網路的管理機構申請。
  問題:如何區分本地地址和全球地址?
  解決:RFC 1918 指明瞭一些專用地址 (private address)
  專用地址只能用作本地地址,而不能用作全球地址。
  網際網路中的所有路由器對目的地址是專用地址的資料包一律不進行轉發。

RFC 1918 指明的專用 IP 地址

 

 

專用網

  採用專用 IP 地址的互連網路稱為專用網際網路或本地網際網路,或更簡單些,就叫做專用網。
  專用 IP 地址也叫做可重用地址 (reusable address)
 

虛擬專用網 VPN

  利用公用網際網路作為本機構各專用網之間的通訊載體,這樣的專用網又稱為虛擬專用網 VPN (Virtual Private Network)。
  專用網:指這種網路是為本機構的主機用於機構內部的通訊,而不是用於和網路外非本機構的主機通訊。
  虛擬:表示實際上沒有使用通訊專線,只是在效果上和真正的專用網一樣。
 

虛擬專用網 VPN 的構建

  如果專用網不同網點之間的通訊必須經過公用的網際網路,但又有保密的要求,那麼所有透過網際網路傳送的資料都必須加密
   必須為每一個場所購買專門的硬體和軟體,並進行配置,使每一個場所的 VPN 系統都知道其他場所的地址。

用隧道技術實現虛擬專用網

 

 

用隧道技術實現虛擬專用網

 

VPN 型別

  內聯網 (intranet):同一個機構的內部網路所構成的 VPN。
  外聯網 (extranet):一個機構和某些外部機構共同建立的 。
  遠端接入 VPN (remote access VPN):允許外部流動員工透過接入 VPN 建立 VPN 隧道訪問公司內部網路,好像就是使用公司內部的本地網路訪問一樣。

4.8.2 網路地址轉換 NAT

  問題:在專用網上使用專用地址的主機如何與網際網路上的主機通訊(並不需要加密)?
  解決:
1. 再申請一些全球 IP 地址。但這在很多情況下是不容易做到的。
2. 採用網路地址轉換 NAT。這是目前使用得最多的方法。
 

網路地址轉換 NAT (Network Address Translation)

  1994 年提出。
  需要在專用網連線到網際網路的路由器上安裝 NAT 軟體。
  裝有 NAT 軟體的路由器叫做 NAT路由器,它至少有一個有效的外部全球 IP 地址。
   所有使用本地地址的主機在和外界通訊時,都要在 NAT 路由器上將其本地地址轉換成全球 IP 地址,才能和網際網路連線。

網路地址轉換的過程

 

 

 

 

網路地址轉換 NAT

 

 

相關文章