[計算機網絡]路由器轉發表總結(轉)


路由器是工作在網絡層的,在網絡層可以識別邏輯地址,即IP地址,也就是說數據包解析時最多可將數據幀拆包成IP數據包,路由器無法操作數據報的載荷字段,但是可以針對IP首部做些事情:當路由器的某個端口收到一個包時,路由器就會讀取包中的目地IP地址,然后在路由表中進行查找。如果在路由表中找到目的IP地址對應條目,則把包轉發到路由器的對應端口。如果沒找到,那么如果路由器配置默認路由(默認網關),就默認將所有無法解析的目的網段主機的數據包都先發往該默認網關做進一步轉發,如果沒有配置默認路由,則將該包丟棄,並返回源主機以不可達(Unreachable)的信息。這就是數據包路由的過程。

步驟如下:

  1. 主機A在網絡層將來自上層的報文封裝成IP數據報,IP首部中的源IP地址為自己的IP地址,目的IP地址為主機B的IP地址。主機A會用本機配置的24位子網掩碼與目的地址進行“與”運算,得出目的地址與本機不在同一個網段(主機A位於192.168.1.0/24網段,主機B位於192.168.2.0/24網段,或稱屬於不同子網),因此發送給主機B的數據包需要經過網關路由器1的轉發;
  2. 主機A通過ARP請求獲得網關路由器1的E0端口的MAC地址,並在數據鏈路層將路由器E0端口的MAC地址封裝成以太網幀首部中的目的MAC地址,源MAC地址是自己的MAC地址,隨后發送數據幀給路由器1;
  3. 路由器1從端口E0接收到該數據幀,隨后執行解析,將數據鏈路層的首部剝落去掉,並在路由表中檢查是否有目的IP地址的網段對應表項(即192.168.2.2/24和其所在192.168.2.0/24網段),根據路由表中記錄,發往192.168.2.0/24網段(中主機)的數據包的下一跳(Next Hop)或稱網關地址為10.1.1.2/8(實際是路由器2的E1端口的IP地址),而路由器發現下一跳地址正好位處與自己E1端口直連的網段(10.0.0.0/8),於是數據在路由器1的E1端口重新封裝,此時,以太網幀的源MAC地址是路由器1的E1端口的MAC地址,目的MAC地址則是路由器2的E1端口的MAC地址,通過ARP廣播得到,封裝完畢發送數據幀給路由器2;
  4. 路由器2從端口E1接收到該數據幀,隨后執行解析,將數據鏈路層的首部剝落去掉,對目的IP地址進行檢測,並與路由表進行匹配,此時發現目的主機IP地址所在網段正好是自己E0端口的直連網段,路由器2於是通過ARP廣播,獲知主機B的MAC地址,此時數據包在路由器2的E0端口再次封裝,源MAC地址是路由器2的E0端口的MAC地址,目的MAC地址是主機B的MAC地址,隨后發送數據幀給主機B;
  5. 完成以上1~4,主機B終於接收到來自主機A的數據包。
    綜上,看似較為“簡單”的跨網段主機通信,真也不是太容易的一件事兒。

小結

路由表負責記錄一個網絡到另一個網絡的路徑,路由器依賴路由協議及其確定的路由表完成三層,即網絡層的數據轉發工作。路由表項中最重要的信息在於目的網段和網關,即下一跳IP地址的對應關系,網關通常是專門的網關服務器或者路由器,而網關會負責將該數據包最終轉發至目的網段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM