介紹
以太網交換機工作在第二層即數據鏈路層,用於在同一網絡內部轉發以太網幀. 但是,當源和目的IP地址位於不同網絡時,以太網幀必須發送給路由器. 路由器負責在不同網絡間傳遞報文,通過路由表來決定最佳路徑. 當主機將報文發送至不同的IP地址時,由於主機無法直接與本地網絡之外的設備通信,報文被轉發至默認網關. 默認網關將數據流從本地網絡路由至遠端設備.
報文轉發過程
路由器在一個接口接收報文並將它從另一個接口轉發出去,這一過程的關鍵步驟是爲輸出鏈路將報文封裝在適當的數據鏈路幀中.
路由器主要執行以下步驟:
- 將第二層的幀頭和幀尾移除,解析出第三層報文.
- 檢查IP報文的目的IP地址,在路由表查找最佳路由.
- 如果找到一條最佳路徑,將三層報文封裝到新的二層幀中,並將幀轉發到輸出端口.
如下圖所示:設備有三層IPv4地址,以太網接口有二層數據鏈路地址. 在報文從原設備傳輸至目的設備的過程中,三層IP地址不會改變. 但是,每一跳隨着報文在路由器被解封裝和重新封裝,二層數據鏈路地址都會改變.
-
發送報文
PC1給PC2發送報文時,首先確定目的IPv4地址是否同一網絡(通過將IP地址和子網掩碼做與操作):
同一網絡:在ARP緩存表中查找目的IPv4地址的設備MAC地址,進行數據轉發;如果ARP緩存沒有找到,則PC1產生一個ARP請求獲取目的IP地址的MAC地址.
不同網絡: 轉發請求給默認網關,默認網關的MAC地址和上述一致,ARP緩存表找到則轉發, 找不到則發送ARP請求獲取默認網關的MAC地址. -
轉發至下一跳
R1從PC1接收到以太網幀後執行以下步驟:
- R1檢查目的MAC地址,與接收端口FastEthernet 0/0相匹配,因此,將幀複製到buffer
- R1識別到以太網類型爲0x800,意味着以太網幀的數據部分包含IPv4部分
- R1解封該以太網幀
- 由於目的IPv4地址與R1直連的任何網絡都不相符,R1在路由表查找包含該目的IPv4地址主機的網絡地址. 本例子中,路由表有192.168.4.0/24網絡的路由.
- 一次類推,依次發送到最佳路徑每一跳路由器,直到最終的目標主機.
-
到達目的地
當幀到達R3時執行以下步驟:
- R3將數據鏈路幀複製到它的buffer
- R3解封該數據鏈路幀
- R3在路由表查找目的IPv4地址. R3路由表有直接連接到該網絡的路由. 表示報文可以直接發送到目的設備而無需發送至路由器.
R3必須用ARP解析出目的IPv4的MAC地址.
路由表
路由表存儲的信息包括:
- 直連路徑:來自活動路由接口的路徑. 當接口爲活動狀態並配置了IP地址時,路由器添加一條直連路徑.
- 遠端路徑:遠端的網絡連接到其他路由. 通過靜態配置或動態路由協議到達該網絡.
路由表是存儲在RAM中的一份數據文件,用於存儲直連以及遠端網絡的路由信息. 路由表中包含網絡或者下一跳地址的信息. 這些信息告知路由器可以通過將報文發送至下一跳地址的路由器以及最佳路徑到達目的地址.