1. 程式人生 > >Abodu's blog for share knownlegement

Abodu's blog for share knownlegement

描述兩臺PC主機(PC1,PC2)通過一臺交換機(SW)進行通訊的過程

首要說明與注意點:

  1. 這一過程涉及PC主機的ARP表(記為 ARP_TBL) 和 交換機MAC地址表(記為MAC_TBL) 的形成過程。
  2. 報文幀格式

    | DA | SA | TYPE | .... |

  3. 交換機 學習 SA地址,向轉發 DA地址

具體過程描述

一、 PC1在自己的ARP表(ARP_TBL_PC1)中查詢是否存在PC2的記錄MAC地址的記錄:

  • 若存在, 則將PC2的MAC地址直接填入到報文幀的DA欄位,並對PC2的單播進行資料傳送
  • 若不存在,則將FFFFFF填入報文幀的DA欄位,對整個廣播域裡的其他PC主機
    進行廣播傳送

二、交換機(SW)收到PC1發出的報文幀,需要進行兩個動作 : 學習(SA)(向DA)轉發

  • 學習:在MAC地址表(MAC_TBL)中檢視是否存在PC1的MAC地址的記錄

    若是不存在,則MAC_TBL新增一條包含有PC1的MAC地址PC1連線到交換機的埠Port1記錄

  • 轉發:在(MAC_TBL)中檢視DA欄位記錄的值對應的記錄是否存在
    • 若是此報文幀是單播幀(DA的值不是0xFFFFFF):
      • 如果記錄存在,則交換機向指定的埠(PC2的連線到交換機上的埠)轉發報文幀的內容
      • 若是記錄不存在, 交換機可以直接丟棄此報文幀,也可以直接以廣播幀的方式來進行處理
    • 若是此報文幀是廣播幀
      (DA的值是0xFFFFFF): 則拷貝報文內容並向其他(交換機)埠逐一轉發。

三、PC2的動作 此報文幀的目的IP地址是主機PC2的,所以只有主機PC2才會處理此次ARP請求,並做出ARP響應。

  • PC2在自己的ARP表(ARP_TBL_PC2)中查詢是否存在PC1的記錄MAC地址的記錄:

    若不存在,則取出PC1的MAC地址(報文幀SA欄位的值)與IP地址,並記錄到ARP_TBL_PC2中

  • 組裝ARP響應報文幀並傳給交換機進行轉發

    此時報文幀的DA欄位的值是PC1的MAC地址,SA欄位的值是PC2的MAC地址

四、交換機(SW)收到PC2發出的響應報文幀,跟接收到PC1的請求報文幀類似,也會執行學習與轉發兩個動作

  • 學習:在MAC地址表(MAC_TBL)中檢視是否存在PC2的MAC地址的記錄

    若是不存在,則MAC_TBL新增一條包含有PC2的MAC地址PC2連線到交換機的埠Port2記錄

  • 轉發:在(MAC_TBL)中檢視DA欄位記錄的值對應的記錄是否存在

    因為是DA欄位記錄的是PC1的MAC地址,並且它已經存在於MAC_TBL中,所以SW會直接查明要向Port1轉發此報文幀(而不需要判斷是否進行廣播)。

五、PC1接收到經由SW轉發的ARP響應報文,並對其內容進行解析

  • 取出PC2的MAC地址(報文幀SA欄位的值)與IP地址,並記錄到ARP_TBL_PC1

經由整個 PC1請求PC2響應 的過程,最終得到如下結果

  • PC1 與 PC2 各自的 ARP表裡面都新增了一條對方的 IP+MAC地址的記錄
  • SW 裡面新增了 PC1_MAC + Port1PC2_MAC + Port2 的兩條記錄