Chapter 6 IP 封包的傳送、轉送與 路徑選擇
目標 本章結束後,您將能夠: 了解各種類型的傳送及連接 了解在分級式定址中的轉送技巧 了解在無級式定址中的轉送技巧 了解路由表的運作方式 了解路由器的架構
6.1 傳送 網路層用來管理封包的傳送 ( delivery ),也就是底層實體網路處理封包的相關事宜。在此有兩個重要的概念,第一是連線的種類,第二則是直接或間接的傳送。 本節所討論的主題包括: 連線種類 直接傳送與間接傳送
請注意: IP 通訊協定屬於非預接式通訊協定。
6.2 轉送 轉送 ( forwarding ) 意指將其路徑中的封包轉送到其目的地。 轉送要求主機或路由器必須要擁有一個路徑選擇表 ( routing table ),或簡稱為路由表。 本節所討論的主題包括: 轉送的技巧 分級式定址的轉送 無級式定址的轉送 組合
範例1 圖6.8 展示了 Internet 的一部份 ( 虛構的 ),請畫出 R1 路由器的路由表。
範例1 (續) 解答 圖6.9 說明了 R1 路由器所使用的 3 個表格。 注意,有一些次站位址欄位內的項目是空白的,原因是目的地已經和目前的路由器位於同一個網路,已經連接在一起,可以使用 直接傳送。 在目前的情況下,為了簡單起見,我們先將ARP 使用的次站位址 ( 實體位址 ) 用封包的目的位址代替,詳細的轉換動作我們會在第7章介紹。 接下一張投影片
範例2 在圖6.8 中的 R1 路由器接收到一個目的位址為 192.16.7.14 的封包。請描述此封包如何被轉送。 解答 目的位址為 ( 11000000 00010000 00000111 00001110 )2。其中一份備份被右移28個位元,其結果為 ( 00000000 00000000 00000000 00001100 )2 = ( 12 )10,所以此位址為等級C。藉由搭配遮罩將目的位址的最左邊24個位元保留下來摘取網路位址,其結果為192.16.7.0。等級C的表格會被搜尋,並且於第一列找到相符合的網路位址。則傳給ARP的次站位址為111.15.17.32,介面編號為 m0。
範例3 在圖6.8 中的 R1 路由器接收到一個目的位址為 167.24.160.5的封包。請描述此封包如何被轉送。 解答 目的位址為 ( 10100111 00011000 10100000 00000101 )2。其中一份備份被右移28個位元,其結果為 ( 00000000 00000000 00000000 00001010 )2 = ( 10 )10,所以此位址為等級 B。藉由搭配遮罩將目的位址的最左邊16個位元保留下來摘取網路位址,其結果為167.24.0.0。等級 B 的表格會被搜尋,但是並沒有相符合的網路位址,所以此封包必須被轉送到預設路由器 ( 目的地網路有可能在 Internet 的某處 )。則傳送給 ARP 的次站位址為111.30.31.18,介面編號為 m0。
範例4 圖6.11 說明了一台路由器連接四個子網。
範例4 (續) 要注意以下幾點。 第一,此所在地的位址為 145.14.0.0/16,為一個等級B的位址。只要目的位址位於 145.14.0.0 到 145.14.255.255 之間的封包都會傳送到 m4 這個介面,並且透過路由器傳送到目的子網路。 第二,因為我們不曉得路由器使用 m4 介面連到哪一個網路,所以我們使用 x. y. z. t. /n 來表示。 第三,針對那些要傳送到此所在地之外的封包,表格中擁有一個預設條目。 最後此路由器被安排使用子網遮罩 /18 來對任何的目的位址進行運算。
範例5 在圖6.11 中的路由器接收到一個目的位址為 145.14.32.78 的封包。請描述此封包如何被轉送。 解答 其遮罩為 /18。我們使用遮罩來求出子網位址為145.14.0.0。傳送到 ARP 模組的次站位址為 145.14.32.78,而輸出介面為m0。
範例6 在圖6.11 中,有一台主機在 145.14.0.0 的網路中,想要傳送一個目的位址為 7.22.67.91 的封包。請描述此封包如何被轉送。 解答 路由器接收到此封包後,將目的位址與遮罩進行運算,得到其網路位址為 7.22.64.0。在表格中並沒有找到相符合的網路位址,所以路由器直接使用預設路由器的位址 ( 並沒有在圖中 ),並將此封包傳送到預設路由器。
請注意: 在分級式定址中, 我們可以擁有一個包含 3 個欄位的路由表; 在無級式定址中, 我們至少需要 4 個欄位。
範例7 使用圖6.13 中的配置,請製作出 R1 路由器的路由表。
範例7 (續) 解答 表6.1 說明此對應的表格。
範例8 在圖6.13 中,如果有一個目的位址為 180.70.65.140 的封包到達 R1 路由器。請描述此封包如何被轉送。 解答 此路由器會執行下列的步驟: 將目的位址與第一個遮罩 ( /26 ) 做運算。結果為180.70.65.128,並沒有符合對應的網路位址 。 將目的位址與第二個遮罩 ( /25 ) 做運算。結果為180.70.65.128,符合對應的網路位址。將次站位址 ( 目前此封包之目的位址 ) 和介面編號 m0 傳送到 ARP 模組做更進一步的處理。
範例9 在圖6.13 中,如果有一個目的位址為 201.4.22.35 的封包到達 R1 路由器。請描述此封包如何被轉送。 解答 此路由器會執行下列的步驟: 將目的位址與第一個遮罩 ( /26 ) 做運算。結果為201.4.22.0,並沒有符合對應的網路位址 ( 第一列 ) 。 將目的位址與第二個遮罩 ( /25 ) 做運算。結果為201.4.22.0,並沒有符合對應的網路位址 ( 第二列 ) 。 將目的位址與第三個遮罩 ( /24 ) 做運算。結果為201.4.22.0,符合對應的網路位址。將此封包之目的位址和介面編號 m3 傳送到 ARP 模組 。
範例10 在圖6.13 中,如果有一個目的位址為 18.24.32.78 的封包到達 R1 路由器。請描述此封包如何被轉送。 解答 將目的位址與所有的遮罩做運算後,發現並沒有符合的網路位址。到達表格的最後,此模組會將次站位址 180.70.65.200和介面編號 m2 傳送到 ARP 模組。此封包可能是一個需要透過預設路由器傳送到 Internet 上某個地方的封包。
範例11 現在讓我們看看不同類型的範例。如果我們知道一個路由器的路由表,我們是否可以知道此路由器之網路連接配置的情況?R1 路由器的路由表列於表6.2中,我們是否可以畫出其網路拓撲?
範例11 (續) 解答 我們可以知道一部份,但無法知道明確的網路拓撲。我們知道R1路由器有三個介面:m0、m1、及m2。我們知道有三個網路直接和此路由器相連接。我們知道有兩個網路間接的連接到R1路由器。除了R1路由器之外,至少還有三個路由器 ( 見次站位址那一行 ),我們可以透過其IP位址知道那些路由器連接到哪些網路,所以我們可以將它們放到適當的地方。
範例11 (續) 解答 我們可以知道一部份,但無法知道明確的網路拓撲。 我們知道 R1 路由器有 3 個介面:m0、m1、及m2。 我們知道有 3 個網路直接和此路由器相連接。 我們知道有 2 個網路間接的連接到 R1 路由器。除了 R1路由器之外,至少還有 3 個路由器 ( 見次站位址那一行 ),我們可以透過其 IP 位址知道那些路由器連接到哪些網路,所以我們可以將它們放到適當的地方。 接下一張投影片
範例11 (續) 我們知道其中一個路由器為預設路由器,連接到 Internet的其他地方。 但是有一些資訊我們無法獲得,我們無法知道網路130.4.8.0 是直接連接到 R2 路由器,或是透過點對點網路 ( WAN ) 及其他的路由器。 我們無法知道網路 140.6.12.64 是直接連接到 R3 路由器,或是透過點對點網路 ( WAN ) 及其他的路由器。 點對點網路 ( WAN ) 通常不會出現在路由表中,因為不會有主機連接到點對點網路。圖6.14 說明了我們猜測的網路拓撲。 接下一張投影片
範例12 讓我們來看圖6.17中,階層式路徑選擇的範例。一個地區性 ISP 獲得 16,384 個位址,啟始位置為120.14.64.0。 此地區性 ISP 決定將這個區塊分成 4 個子區塊,每個子區塊擁有 4096 個位址。其中有 3 個子區塊各別分配給 3 個本地 ISP,而第二個子區塊則保留給未來使用。 注意,每個區塊的遮罩為 /20,因為原本區塊的遮罩為 /18,但是已經分成 4 個子區塊。 接下一張投影片
範例12 (續) 第一個本地 ISP 將它被分配到的子區塊再分成 8 個更小的區塊,並各別分配給小型 ISP。每一個小型 ISP 可以提供服務給 128 個家庭 ( H001到H128 ),每個家庭可以使用 4個位址。注意,每個小型 ISP 的遮罩為 /23,因為區塊已經更進一步的分成 8 個區塊。每個家庭擁有的遮罩為 /30,因為每個家庭擁有 4 個位址 ( 232-30 = 4 )。 第二個本地 ISP 將它被分配到的子區塊再分成 4 個更小的區塊,並各別分配給 4 個大型機構 ( LOrg01到LOrg04 )。注意,每一個大型機構擁有 1024 個位址,其遮罩為 /22。 接下一張投影片
範例12 (續) 第三個本地 ISP 將它被分配到的子區塊再分成 16 個更小的區塊,並各別分配給 16 個小型機構 ( SOrg01到SOrg16 )。每一個小型機構擁有 256 個位址,其遮罩為 /24。 在這樣的安排下有一種階層式的觀念。在 Internet 中的所有路由器會將目的位址從 120.14.64.0 到 120.14.127.255 之間的封包傳送到此地區性 ISP。地區性 ISP 會將目的位址從 120.14.64.0 到 120.14.79.255 之間的封包傳送到本地ISP 1。本地 ISP 1會將目的位址從 120.14.64.0 到120.14.64.3 之間的封包傳送到 H001。
6.3 路徑選擇 路徑選擇 ( routing ) 需要處理路由表的建立與維護等議題。 本節所討論的主題包括: 靜態與動態之路由表 路由表
範例13 在 UNIX 或 Linux 的系統工具中,netstat 指令可以用來找出一台主機或路由器的路由表內容,下面展示了預設伺服器的內容列表。我們使用 r 和 n 這兩個選項,選項 r 代表我們對路由表有興趣,選項 n 代表我們想要看到的是數字格式的位址。注意,這是一台主機的路由表,並不是路由器。儘管我們整章都在探討路由器的路由表,但是主機也是需要一個路由表。
範例13 (續) 更多關於伺服器的介面上 ( eth0 ) 之 IP 位址和實體位址的資訊,可透過 ifconfig 指令來獲得。 我們從上面的資訊來看,可以追溯出伺服器的配置情況,如圖6.19 所示。 接下一張投影片
6.4 路由器的架構 我們將路由器當成是一個黑盒子,從輸入埠 ( 介面 ) 接收進來的封包,使用路由表來找出封包的輸出埠,並且從這個輸出埠將封包傳送出去。在這一節中,我們會掀開這個黑盒子來一探究竟。 本節所討論的主題包括: 路由器的模組