幀在傳輸過程中,MAC地址會發生什麼變化?

一滴淚丶忘卻一切


應邀回答本行業問題!

幀在傳輸過程中,分為兩種情況,一種是經過二層交換機,MAC地址不會改變;一種是經過路由器,MAC地址會被剝掉,然後重新封裝!

OSI七層模型

在OSI七層模型中,每一層都會有自己的標識符,用於不同的設備進行通信。例如傳輸層是端口號,網絡層是IP地址,而在數據鏈路層就使用MAC地址。

MAC地址全稱是Media Access Control Address,也稱為局域網地址,它用來在數據鏈路層唯一的標識一臺網絡設備。

下面我們分別以兩個例子分別來說明MAC地址經過交換機和路由器的變化情況。

經過二層交換機,MAC地址不變

如下圖所示:

  • PC1的MAC地址是aabb.cc00.0200;

  • PC2的MAC地址是aabb.cc00.0300。

  • PC1和PC2在相同的VLAN 10裡

當PC1給PC2發送數據時,MAC地址的填充如下:

  • 源MAC是PC1的MAC:aabb.cc00.0200;

  • 目的MAC是PC2的MAC:aabb.cc00.0300。

當PC1發送的報文到達交換機以後,就會根據目的MAC查找MAC地址表:

  • 目的MAC(aabb.cc00.0300)對應的出接口是E0/2,所以會從E0/2發送出去

  • 報文沒有任何的變化,原封不動的轉發

經過路由器,會重新封裝MAC地址

拓撲圖

  • PC1配置的IP為10.1.1.2/24,網關是10.1.1.1
  • PC2配置的IP為20.1.1.2/24,網關是20.1.1.1
  • PC1和PC2明顯不在同一個網段
  • 路由器E0/1接口配置為PC1的網關:10.1.1.1
  • 路由器E0/2接口配置為 PC2的網關:20.1.1.1
工作流程
  1. PC1給PC2發送報文時,發現不在同一個網段,所有就會將報文發給網關處理

  2. PC1使用的源MAC地址是自己的:0000:0000:1111,目的MAC是路由器接口0000:0000:3333,源IP是10.1.1.2,目的IP是20.1.1.2;

  3. 當經報文到達路由器以後,路由器會先剝掉二層的MAC信息,只保留三層及以上部分;

  4. 路由器根據目的IP查找路由表,發現目的IP(20.1.1.2)的出接口是E0/2

  5. 路由器會使用新的MAC地址來封裝報文:源MAC是E0/2的:0000:0000:4444,目的MAC是PC2的MAC: 0000:0000:2222,源IP是10.1.1.2,目的IP是20.1.1.2;

  6. 這樣就完成了MAC地址的替換!

查看路由表

總結

從上面的用例中,我們可以得出如下的幾個知識點:

  1. 知識點一:交換機收到報文以後,會記錄下源MAC地址,然後原封不動的轉發;

  2. 知識點二:對於不在同一網段的報文,PC會包報文發送給網關,由網關來處理;

  3. 知識點三:路由器收到報文以後,會先剝掉二層信息,保留三層及以上數據; 在將數據發送出去時,還會對數據進行重新封裝,加上新的二層信息。

這就是關於MAC地址如何處理的回答,如果各位有疑問,歡迎留言討論!如果對網絡內容感興趣,可以關注我的頭條號,一起進行討論!


網絡之路


幀和MAC地址都屬於鏈路層的概念,其中幀真是數據包在數據鏈路層的叫法,還MAC地址是數據鏈路層用來標識網卡的唯一硬件地址!

一個封裝好的數據幀發往同網段的時候,經過交換機,並被解封數據鏈路層的地址信息,然後根據目標MAC地址來決定轉發到哪一個接口,在這個過程中,交換機並不會更改MAC地址,包括原地址和目標地址!

數據再發往不同網段的時候,首先會尋找網關的MAC地址,併發送給網關(家庭中就是路由器),網關在收到數據包後拆掉數據鏈路層的幀頭,發現MAC地址是自己的於是接收下來繼續拆網絡層的數據包頭,發現目標IP地址並不是自己的,於是,在自己的路由表中查找目標IP地址的下一跳,找到了後重新封裝數據包!其中原MAC地址是網關自己的地址,而目標MAC地址就是下一跳路由器的接口地址!

總結,數據在和同網段通信的時候並不會被改變mac地址,再和不同網段通信的時候,經過路由器會被更改MAC地址為路由器本身的地址!


風來了156


首先,MAC地址只有在鏈路層(ISO layer 2)才存在,是用來標識數據鏈路層的地址。它在IP層及以上是不存在的。

現在回答Mac地址在鏈路層幀中會不會變化。這個問題我假設是問一個Mac frame從發出去到到達目的地這個途中,Mac地址會不會變化。這要看這個過程中設計的協議會不會有這個改變。據我所知,Mac層協議應該不會做這個改變。因為Mac層是local的,不會有像IP層那樣有NAT那樣的協議。


悉尼程序猿


參考下面數據鏈路層中,MAC地址只有在兩兩計算機中存在,有時還有可能不存在。假設有數據幀X,傳輸過程中:A到R4:MAC地址(存在的話)源地址是A,目的地址是R4;R4到R2:MAC地址(存在的話)源地址是R4,目的地址是R2;R2到B:MAC地址(存在的話)源地址是R2,目的地址是B;上述所說的MAC地址不存在的情況是存的。比如說A到R4之間用的是PPP協議就不存在。在沒有經過NAT情況下,源IP地址和目的IP地址在整個傳輸過程是不能改變的。A到R4:IP地址 源地址是A,目的地址是R4;R4到R2:IP地址 源地址是A,目的地址是R4;R2到B:IP地址 源地址是A,目的地址是R4;上面說的情況也是有條件的,只有在沒有經過NAT情況下才會如此,否則IP地址源地址不是A而NAT的映射地址。


分享到:


相關文章: