原文參考:網絡數據包轉發過程--鏈路傳輸層、網絡層轉發「詳細」 (baidu.com)
涉及到網絡上數據包的轉發必須用到三張表:Mac表、Arp表、路由表。
一、交換機與Mac地址表
1、 Mac地址表
記錄mac地址與接口的對應關系,SW依據mac表轉發數據幀到目標主機。
2、交換機工作原理
測試環境組網:
- 在組網沒有建立連接前,交換機上沒有mac表
-
在pc1上ping pc2的ip,在構造icmp報文前,需要知道目標主機的mac地址,由於此時pc1上沒有匹配的mac地址條目,pc1將會先發送廣播報文
-
交換機在收到數據幀后,將源mac以及入接口記錄保存在mac表中;根據數據幀中的目的mac地址,查找自己的mac表,若能夠找到,直接從對應接口單播發送該數據幀到目標主機上;
-
若找不到,將該數據幀從其他接口廣播出去,此時局域網中所有主機都會收到該數據幀,只有匹配目的mac的主機才會單播響應一個數據幀(即組網中的pc2);
-
交換機在收到響應數據幀后,將會記錄數據幀的源mac地址以及對應的接口。
交換機上學習到的mac表如下圖:
SW具有動態學習源MAC地址的功能,並且交換機的一個接口可以對應多個MAC地址,但是一個MAC地址只能對應一個接口。
學習的mac地址老化時間SW動態學習的MAC地址默認只有300S的有效期,如果300S內記錄的MAC地址沒有通信,則會刪除此記錄。
二、 ARP緩存表
1、 ARP協議:ARP協議是工作在網絡層的協議,它負責將IP地址解析為MAC地址。
2、 ARP表學習過程
測試環境組網:
1)在pc1上ping pc2的ip,在構造icmp報文前,需要知道目標主機的mac地址,由於此時pc1上沒有匹配的mac地址條目,pc1將會先發送廣播報文,報文如下:
其中二層報文頭中目的mac為全F的廣播mac地址,arp報文中封裝的目的mac地址為全0的mac地址。
2)交換機收到數據幀后,將源mac以及入接口記錄保存在mac表中;
根據數據幀中的目的mac地址,查找自己的mac表,若能夠找到,直接從對應接口單播發送該數據幀到目標主機上;
3)若找不到,將該數據幀從其他非接收端口廣播出去,此時局域網中所有主機都會收到該數據幀,即pc2會收到報文,記錄報文中源mac地址,發現報文中目的ip就是自己,將會發送單播報文進行響應;
4)交換機在收到響應數據幀后,將會記錄數據幀的源mac地址以及對應的接口,pc1也會記錄響應報文的源mac地址。
ARP表的更新, 當設備收到ARP請求或其他ARP報文,且現存ARP緩存表中記錄有該IP對應的ARP表項。其他的非ARP報文不會影響ARP緩存表。不同系統的ARP表老化時間不一樣,具體設備需要進一步確認。
三、 路由表
1、 網絡層工作,路由器接收到數據包后,會讀取目標邏輯地址的網絡部分,而后查找路由表。如果找到目標地址的路由條目,則從相應接口進行轉發;如果沒有找到,但是能夠匹配默認路由,則從對應接口轉發;否則,將丟棄數據包,返回路由不可達信息。
2、 工作原理
測試組網:
設備在接入組網前的路由表項:
1) PC1將來自上層的報文在網絡層封裝成IP數據包(其中源、目的IP地址分別為PC1、PC2的IP地址),讓源、目的IP地址進行“與”運算來得出是否為同一網段,此時發現PC1/PC2主機不在同一網段,故數據包將經由網關A進行轉發。
2) 由於PC1沒有記錄網關A(即路由器R1)的mac地址,將會發送ARP請求來獲取,並將網關A的mac地址封裝為目的mac地址,源mac為主機A。
3) 網關設備在收到arp廣播報文后,發現報文的目的ip就是自己,將會發送arp報文(單播)報文進行響應。PC1收到報文后會記錄源mac到自己的mac表中。
4) PC1在學習到mac地址后,封裝icmp報文發送出去,此報文中源ip、目的ip分別為PC1和PC2的主機ip,源mac為PC1的mac地址,目的mac為網關接口的mac地址。
5) 路由設備會解封裝報文,發現目的ip不是自己同時也不同網段,此時將會檢查自己的路由表中是否記錄匹配目的ip網段的路由條目,發現存在此路由信息,然后將數據包交給對應的接口feth27進行轉發。
6) 路由設備轉發報文前需要知道目的mac地址,因此將會從接口feth27發送arp廣播,PC2上獲取的廣播報文如下:
7) PC2會學習arp請求包中的源mac地址,查看報文的目的ip就是自己,將會發送arp響應報文回應,此時設備上也已經學習到完整的arp表。
8) 網關設備在學習到mac地址后,封裝icmp報文發送出去,此報文中源ip、目的ip分別為P和PC2的主機ip,源mac為網關接口feth27的mac地址,目的mac為目標主機PC2的mac地址。如此報文就會從接口發送到目標設備上,成功轉發icmp報文。