IP和mac地址映射關係(想找好久了)

 這兩天看TCP/IP方面的資料,明白了點IP地址、MAC地址和ARP解析協議之間的關係,接下來說一下我的淺顯理解,錯誤之處請大家指正。

假設有兩臺主機,本地主機A和目標主機B要進行通信。



1、ARP映射IP地址和MAC地址的過程

圖1-1是TCP/IP協議族的分層結構,數據包經常通過以太網發送,在發送數據包的過程中先封裝IP的幀頭信息然後再封裝鏈路層的MAC地址,最後是以太網的幀頭信息。以太網的幀頭包括:目標地址、源地址、幀的類型,以太網設備的地址是48位的,它不識別32位的IP地址(IPV4)只識別MAC地址。因爲以太網只識別設備的MAC地址,那麼問題就來了,源地址我們是知道的就是主機A的MAC地址,那目標的MAC地址呢?我們可能知道也可能不知道。怎樣得到目標的MAC地址呢?地址解析協議會完成IP地址和MAC地址之間的映射得到主機B的MAC地址,這是地址解析協議的絕活,。

首先主機A根據路由表的內容確定B主機的IP地址,然後在本主機上查詢ARP緩存的ARP表看看有沒有和B主機IP地址對應的MAC地址的歷史記錄,如果有就添加到以太網幀頭的目標地址。如果在ARP表中沒有與B主機IP對應的MAC地址,主機A就會向本地網絡中的所有主機廣播發送ARP請求幀(包含B主機的IP地址,A主機的IP地址和MAC地址),接收到ARP請求的各主機將收到的請求幀中的目標IP地址比較,如果與自己的IP地址不匹配丟棄ARP請求,如果B主機匹配B主機將自己的IP地址和MAC地址回覆給發送請求的A主機,同時B主機在ARP表中更新或者記錄主機A的IP地址和MAC地址。

A主機在收到數據時首先判斷幀的類型,從圖1-1中可以看到收到的數據可能是IP數據也可能是ARP數據。如果收到的是IP數據就會按IP的數據幀格式進行解算,如果收到的是ARP數據幀再判斷是響應幀還是請求幀,如果是響應幀A主機就會更新本地的ARP表,若是請求幀就會把A主機的IP地址和MAC地址回覆給發送請求的主機。

 

2、ARP幀的格式

      ARP的請求幀和響應幀有相同的格式,ARP請求幀的以太網目標地址爲廣播地址:FF:FF:FF:FF:FF:FF



   硬件類型:ARP協議在何種網絡上實現,以太網的硬件類型爲1。

協議類型:使用ARP或RARP的協議類型,IPV4的值爲0x0800。

硬件地址長度:物理地址長度,以太網爲6

協議地址長度:協議地址長度,IPV4爲4

操作代碼:定義報文的類型,1爲ARP請求,2爲ARP應答,3爲RARP請求,4爲RARP應答。

發送方MAC地址:發送方的MAC地址

發送方IP地址: 發送送的IP地址

目標方MAC地址:目標方的MAC地址,當ARP是請求幀時此地址不填充。

目標放IP地址:目標方的IP地址。

        因爲以太網數據幀最小爲46個字節,ARP幀只有28個字節所以會在ARP幀的末尾再填充18個字節的PAD數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章