對路由器轉發報文過程的認識

    通過抓包發現,本機發出的數據包的目的IP是目標主機的IP地址,但是目的MAC地址填寫的是網關的MAC地址,因爲只有這樣才能使得這個報文到達網關(路由器)上被轉發,而且本機也不大可能知道外網主機的MAC地址;數據包在被路由器轉發的時候,源MAC地址會修改成路由器的MAC地址,這個跟ARP神馬的半毛錢關係都沒有,因爲被存儲轉發的IP報文是不變的,也就是說本路由器發出去的數據包的源IP地址是某個主機的地址,而源MAC地址是自己的,要是下一跳路由器指望用這個來更新其ARP的話就亂套了!實際上無論是採用RIP還是OSPF,相鄰路由器之間都會定時更新路由信息,ARP緩存的更新就更不成問題了。請看路由器存儲轉發的過程:1.路由器將收到的以太網幀剝去幀頭,然後發送到網絡層; 2.網絡層查詢路由表,知道應該從哪個接口轉發,於是再將它發送到對應接口的鏈路層。在這個轉發過程中原來的以太網幀頭派不上任何用場,而且如果非要加上原來的幀頭則會增加複雜度,因此在提交鏈路層發送時,就重新構造幀頭了,則源MAC地址就改變了(在TCP/IP詳解卷一中有寫)。從這裏可以看出,需要在網絡層進行處理的事情,與鏈路層是沒有關係的,鏈路層的作用只不過是根據其目的MAC地址來將裝載的IP報文送到目的地而已。在以太網中是這樣,在採用了其他鏈路層協議的網絡中是什麼情況目前還不清楚。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章