路由器轉發規則【轉】

(轉自:https://blog.51cto.com/echo1937/1281746

  1. 源主機在發起通信之前,將Self IP與目的主機的IP進行比較,如果兩者位於同一網段(用子網掩碼計算後具有相同的網絡號),那麼源主機直接向目的主機發送ARP請求,在接收到目的主機的ARP應答後獲取對方的MAC地址,然後用對方的MAC地址作爲目的MAC進行報文發送,位於同一VLAN(網段)的主機互訪時屬於這種情況,這是互聯的交換機做二層交換轉發。

     

  2. 當源主機判斷目的主機與自己位於不同網段時,它會通過網關來提交報文,即發送ARP請求來獲取網關IP地址對應的MAC,在得到網關的ARP應答後,用網關MAC作爲報文目的MAC進行報文發送……也就是路由器的某個端口。注意,報文的源IP是源主機IP,目的IP依然是目的主機IP。

    這裏1,2步驟都是先進行IP信息封裝處理,再通過ARP進行MAC封裝處理(先3層,再2層),解包則相反。

     

  3. 當網關路由器接收到以太網數據幀時,發現數據幀中的目標MAC地址是自己的某一個端口的物理地址,這時路由器會把以太網數據幀的封裝去掉。路由器認爲這個IP數據包是要通過自己進行轉發,接着它就在匹配路由表(包含目標地址和指向目標地址的指針)。匹配到路由項後,它就將包發往下一條地址。

    路由器轉發數據包也是這樣,它始終是不會改IP地址的,只會改源/目標MAC。

     

  4. 萬一路由遇到目的MAC是廣播地址怎麼辦?IP的廣播有三種:

    255.255.255.255叫本地廣播,也叫直播,direct broadcast,不跨路由器。

    172.16.33.255叫子網廣播,廣播給172.16.33.0這個子網,可以跨路由器。

    172.16.255.255叫全子網廣播,廣播給172.16.0.0這個主網,可以跨路由器。

    路由器是三層設備,可以隔離廣播,但並不是所有廣播都隔離。事實上只有本地廣播路由器纔不轉發,對於子網廣播和全子網廣播,路由器是轉發的。爲什麼呢?我們來看255.255.255.255的廣播,在MAC的封裝中,對應的目的MAC是廣播,而子網廣播和全子網廣播,對應的目的MAC是單播,所以路由器會轉發。所以路由器隔離的廣播是目的MAC爲全1的廣播,對於目的MAC是單播的上層廣播,路由器是不能隔離的。

     

  5. IP數據包經由路由轉發的時候 源/目的IP,源/目的MAC是否發生改變,如何改變?

    A—–(B1-B2)—–(C1-C2)——E

    如上拓撲圖爲例,B1和B2是路由器B上的兩個接口,C1和C2是路由器C上的兩個接口,A和E是PC,由主機A向主機E發送數據包,那麼在主機A形成的數據包的目的IP就是E的IP,源IP就是主機A的IP地址,目標MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址。

    由A發給路由器B,B經過重封裝後,源IP和目標IP是不變的,源MAC地址變成B2的MAC地址,目標MAC地址變成C1的MAC地址,封裝完成發送給路由器C,路由器C接收到數據包後和B做的操作是一樣的,源IP和目標IP的不變的,源MAC地址變成C2的MAC地址,目標MAC地址變成主機E的MAC地址,然後發送給主機E,這樣E就收到了這個數據包,當恢復數據包的時候就是把收到的數據包的源IP地址(主機A的IP地址)和源MAC地址(接口C2的MAC地址)作爲他的目標IP和目標MAC地址。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章