路由器的轉發規則


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

     

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

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

     

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

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

     

  • 萬一路由遇到目的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是單播的上層廣播,路由器是不能隔離的。

     

  • 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地址。


  • 免責聲明!

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



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