解讀路由交換中的幀封裝

  交換功能是指路由器在一個接口接收數據包並將其從另一個接口轉發出去的過程。交換功能的重要責任是將數據包封裝成適用於傳出數據鏈路的正確數據幀類型。
  對於從一個網絡傳入,以另一個網絡爲目的地的數據包,路由器會進行哪些處理?路由器主要執行以下三個步驟:
  1. 通過刪除第 2 層幀頭和幀尾來解封第 3 層數據包。
  2. 檢查 IP 數據包的目的 IP 地址以便從路由表中選擇最佳路徑。
  3. 將第 3 層數據包封裝成新的第 2 層幀,並將該幀從送出接口轉發出去。

  在第 3 層 IP 數據包從一臺路由器轉發到下一臺路由器的過程中,除生存時間 (TTL) 字段發生變化外,該 IP 數據包的其它字段均保持不變。當路由器收到一個 IP 數據包時,它會將該數據包的 TTL 減一。如果減一後得到的 TTL 值爲零,則路由器將丟棄該數據包。TTL 用於防止 IP 數據包由於路由環路或網絡中其它異常狀況而在網絡上永無休止地傳輸。
  由於 IP 數據包是解封自第 2 層幀並再次封裝成新的第 2 層幀,所以數據鏈路目的地址和源地址將隨數據包從一臺路由器轉發到下一臺路由器而不斷髮生變化。第 2 層數據鏈路源地址代表出站接口的第 2 層地址。第 2 層目的地址代表下一跳路由器的第 2 層地址。如果下一跳是最終目的設備,則第 2 層目的地址將是該設備的第 2 層地址。
  數據包很有可能會被封裝成與收到時不同的另一種第 2 層幀。例如,路由器從快速以太網接口上收到封裝爲以太網幀格式的數據包,然後將其封裝成 PPP 幀格式通過串行接口轉發出去。
  請記住,在數據包從源設備到最終目的設備的傳輸過程中,第 3 層 IP 地址始終不會發生變化。但是,隨着每臺路由器不斷將數據包解封、然後又重新封裝成新數據幀,該數據包的第 2 層數據鏈路地址在每一跳都會發生變化。
  
  數據包從源到目的地的傳輸過程

  步驟 1:PC1 需要向 PC2 發送一個數據包
  PC1 將 IP 數據包封裝成以太網幀,並將其目的 MAC 地址設爲 R1 FastEthernet 0/0 接口的 MAC 地址。
  PC1 是如何確定應該將數據包轉發至 R1 而不是直接發往 PC2?這是因爲 PC1 發現源 IP 地址和目的 IP 地址位於不同的網絡上。
  PC1 通過對自己的 IP 地址和子網掩碼執行 AND 運算,從而瞭解自身所在的網絡。同樣,PC1 也對數據包的目的 IP 地址和自己的子網掩碼執行 AND 運算。如果兩次運算結果一致,則 PC1 知道目的 IP 地址處於本地網絡中,無需將數據包轉發到默認網關(路由器)。如果 AND 運算的結果是不同的網絡地址,則 PC1 知道目的 IP 地址不在本地網絡中,因而需要將數據包轉發到默認網關(路由器)。
  注:如果數據包目的 IP 地址與 PC1 子網掩碼進行 AND 運算後,所得到的結果並非 PC1 計算得出的自己所在的網絡地址,該結果也未必就是實際的遠程網絡地址。在 PC1 看來,只有當掩碼和網絡地址相同時,目的 IP 地址才屬於本地網絡。遠程網絡可能使用不同的掩碼。如果目的 IP 地址經過運算後得到的網絡地址不同於本地網絡地址,則 PC1 無法知道實際的遠程網絡地址,它只知道該地址不在本地網絡上。
  PC1 如何確定默認網關(路由器 R1)的 MAC 地址?PC1 會在其 ARP 表中查找默認網關的 IP 地址及其關聯的 MAC 地址。
如果該條目不存在於 ARP 表中會發生什麼情況?PC1 會發出一個 ARP 請求,然後路由器 R1 作出 ARP 回覆。
  步驟 2:路由器 R1 收到以太網幀
  1. 路由器 R1 檢查目的 MAC 地址,在本例中它是接收接口 FastEthernet 0/0 的 MAC 地址。因此,R1 將該幀複製到緩衝區中。
  2. R1 看到“以太網類型”字段的值爲 _0x800,這表示該以太網幀的數據部分包含 IP 數據包。
  3. R1 解封以太網幀。
  4. 由於數據包的目的 IP 地址與路由器 R1 的所有直連網絡均不匹配,R1 將求助於路由表來確定數據包的路由方式。R1 搜索路由表中的條目,看看其中是否存在網絡地址和子網掩碼的組合能否構成目的 IP 地址所在的網絡。在本例中,路由表存在 192.168.4.0/24 網絡的路由條目。數據包的目的 IP 地址爲 192.168.4.10,這是該網絡中的主機 IP 地址。
  R1 到 192.168.4.0/24 網絡的路由的下一跳 IP 地址爲 192.168.2.2,送出接口爲 FastEthernet 0/1。這表示 IP 數據包將封裝到一個新的以太網幀中,其目的 MAC 地址爲下一跳路由器的 IP 地址對應的 MAC 地址。由於送出接口連接的是以太網,R1 必須將下一跳 IP 地址解析爲目的 MAC 地址。
  5. R1 在其 FastEthernet 0/1 接口的 ARP 緩衝區中查找下一跳 IP 地址 192.168.2.2。如果該條目不在 ARP 緩衝區中,R1 會從 FastEthernet 0/1 接口發出一個 ARP 請求。R2 以 ARP 回覆應答。收到 ARP 回覆後,R1 便使用 192.168.2.2 條目及相關 MAC 地址更新其 ARP 緩衝區。
  6. IP 數據包被封裝到新的以太網幀中,並從 R1 的 FastEthernet 0/1 接口發出。
  步驟 3:數據包到達路由器 R2
  1. 路由器 R2 檢查目的 MAC 地址,在本例中它是接收接口 FastEthernet 0/0 的 MAC 地址。因此,R1 將該幀複製到緩衝區中。
  2. R2 看到“以太網類型”字段的值爲 _0x800,這表示該以太網幀的數據部分包含 IP 數據包。
  3. R2 解封以太網幀。
  4. 由於數據包的目的 IP 地址與路由器 R2 的所有接口地址均不匹配,R2 將查詢其路由表來確定數據包的路由方式。R2 使用與 R1 相同的過程在路由表中搜索數據包的目的 IP 地址。
  R2 的路由表中有到 192.168.4.0/24 的路由,下一跳 IP 地址爲 192.168.3.2 且送出接口爲 Serial 0/0/0。因爲送出接口不是以太網,所以 R2 不需要將下一跳的 IP 地址解析爲目的 MAC 地址。
  當接口爲點對點串行連接時,R2 將 IP 數據包封裝成適合送出接口(HDLC、PPP 等)使用的數據鏈路幀格式。在此情況下,第 2 層封裝爲 PPP;因此,數據鏈路目的地址將設置爲廣播地址。請記住,串行接口沒有 MAC 地址。
  5. IP 數據包封裝成新的數據鏈路幀 (PPP),然後通過 serial 0/0/0 送出接口發送出去。
  步驟 4:數據包到達 R3
  1. R3 接收並將數據鏈路 PPP 幀複製到緩衝區中。
  2. R3 解封數據鏈路 PPP 幀。
  3. R3 在路由表中搜索數據包的目的 IP 地址。路由表的搜索結果顯示,該地址所在的網絡爲 R3 的直連網絡。這表示該數據包可以直接發往目的設備,不需要將其發往另一臺路由器。
  因爲送出接口是直連的以太網,所以 R3 需要將數據包的目的 IP 地址解析爲目的 MAC 地址。
  4. R3 在其 ARP 緩存中搜索數據包的目的 IP 地址 192.168.4.10。如果該條目不在 ARP 緩衝區中,R3 會從 FastEthernet 0/0 接口發出一個 ARP 請求。PC2 用其自身的 MAC 地址回覆 ARP 應答。R3 用條目 192.168.4.10 及 ARP 應答中返回的 MAC 更新其 ARP 緩存。
  5. IP 數據包被封裝到新的數據鏈路(以太網)幀中,並從 R3 的 FastEthernet 0/0 接口發出。
  步驟 5:封裝有 IP 數據包的以太網幀到達 PC2
  1. PC2 檢查目的 MAC 地址,發現該地址與接收接口的 MAC 地址(PC2 的以太網網卡)匹配。因此 PC2 將數據幀的剩餘部分複製到緩衝區中。
  2. PC2 看到“以太網類型”字段的值爲 _0x800,這表示該以太網幀的數據部分包含 IP 數據包。
  3. PC2 解封以太網幀並將 IP 數據包傳遞至操作系統的 IP 進程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章