網絡數據包在鏈路層、網絡層轉發過程


一、鏈路層轉發

  交換機:根據Mac地址轉發數據幀交換機內有一張記錄着局域網主機MAC地址與交換機接口的對應關系的表,交換機就是根據這張表負責將數據幀傳輸到指定的主機上的。

  工作原理:交換機在接收到數據幀以后,首先、會記錄數據幀中的源MAC地址和對應的接口到MAC表中,接着、會檢查自己的MAC表中是否有數據幀中目標MAC地址的信息,如果有則會根據MAC表中記錄的對應接口將數據幀發送出去(單播),如果沒有,則會將該數據幀從非接受接口發送出去(廣播)。

  單個交換機傳輸數據幀過程:

  1. 在pc1上ping pc2的ip,在構造icmp報文前,需要知道目標主機的mac地址,由於此時pc1上沒有匹配的mac地址條目,pc1將會先發送廣播報文。
  2. 交換機收到此數據幀后,首先將數據幀中的源MAC地址和對應的接口(接口為feth26) 記錄到MAC地址表中。
  3. 然后交換機會檢查自己的MAC地址表中是否有數據幀中的目標MAC地址的信息,如果有,則從MAC地址表中記錄的接口發送出去,如果沒有,則會將此數據幀從非接收接口的所有接口發送出去(也就是除了feth26接口)。
  4. 這時,局域網的所有主機都會收到此數據幀,但是只有主機B收到此數據幀時會響應這個廣播,並回應一個數據幀,此數據幀中包括主機B的MAC地址。
  5. 當交換機收到主機B回應的數據幀后,也會記錄數據幀中的源MAC地址(也就是主機B的MAC地址),這時,再當主機A和主機B通信時,交換機根據MAC地址表中的記錄,實現單播了。

  多個交換機互聯傳輸數據幀過程:

  1. 主機A將一個源MAC地址為自己,目標MAC地址主機C的數據幀發送給交換機。
  2. 交換機1收到此數據幀后,會學習源MAC地址,並檢查MAC地址表,發現沒有目標MAC地址的記錄,則會將數據幀廣播出去,主機B和交換機2都會收到此數據幀。
  3. 交換機2收到此數據幀后也會將數據幀中的源MAC地址和對應的接口記錄到MAC地址表中,並檢查自己的MAC地址表,發現沒有目標MAC地址的記錄,則會廣播此數據幀。
  4. 主機C收到數據幀后,會響應這個數據幀,並回復一個源MAC地址為自己的數據幀,這時交換機1和交換機1都會將主機C的MAC地址記錄到自己的MAC地址表中,並且以單播的形式將此數據幀發送給主機A。
  5. 這時,主機A和主機C通信就是一單播的形式傳輸數據幀了,主機B和主機C通信如上述過程一樣,因此交換機2的MAC地址表中記錄着主機A和主機B的MAC地址都對應接口feth26。

  總的來說就是如果交換機上沒有相應記錄的Mac關系,就廣播,所有與該交換機相連的交換機都能收到該數據幀,匹配不成功依次廣播...匹配成功響應該數據幀並回復源MAC地址為自己的數據幀。

總結:

  1. 交換機具有動態學習源MAC地址的功能,並且交換機的一個接口可以對應多個MAC地址,但是一個MAC地址只能對應一個接口。
  2. 交換機動態學習的MAC地址默認只有300S的有效期,如果300S內記錄的MAC地址沒有通信,則會刪除此記錄。

ARP緩存表

  在每台主機中都有一張ARP表,它記錄着主機的IP地址和MAC地址的對應關系。

  ARP協議:ARP協議是工作在網絡層的協議,它負責將IP地址解析為MAC地址。

  1.如果主機A想發送數據給主機B,主機A首先會檢查自己的ARP緩存表,查看是否有主機B的IP地址和MAC地址的對應關系,如果有,則會將主機B的MAC地址作為源MAC地址封裝到數據幀中。如果沒有,主機A則會發送一個ARP請求信息,請求的目標IP地址是主機B的IP地址,目標MAC地址是MAC地址的廣播幀(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主機A的IP地址和MAC地址,主機A發送的廣播報文如下。其中二層報文頭中目的mac為全F的廣播mac地址,arp報文中封裝的目的mac地址為全0的mac地址。

  2.當交換機接受到此數據幀之后,發現此數據幀是廣播幀,因此,會將此數據幀從非接收的所有接口發送出去。

  3.當主機B接受到此數據幀后,發現目的IP地址是否是自己的,並將主機A的IP地址和MAC地址的對應關系記錄到自己的ARP緩存表中,同時會發送一個單播響應報文(ARP應答),其中包括自己的MAC地址。

  4.主機A在收到這個回應的數據幀之后,在自己的ARP緩存表中記錄主機B的IP地址和MAC地址的對應關系。而此時交換機已經學習到了主機A和主機B的MAC地址了。

 二、網絡層轉發

  路由器負責不同網絡之間的通信。在路由器中也有一張表,這張表叫路由表,記錄着到不同網段的信息。路由表中的信息分為直連路由和非直連路由。

  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報文。

 


免責聲明!

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



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