Abodu's blog for share knownlegement
阿新 • • 發佈:2018-12-16
描述兩臺PC主機(PC1,PC2)
通過一臺交換機(SW)
進行通訊的過程
首要說明與注意點:
- 這一過程涉及PC主機的ARP表(記為
ARP_TBL
) 和 交換機MAC地址表(記為MAC_TBL
) 的形成過程。 - 報文幀格式
| DA | SA | TYPE | .... |
- 交換機
學習
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 + Port1
和PC2_MAC + Port2
的兩條記錄