日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

协议簇:Ethernet Address Resolution Protocol (ARP) 解析

發布時間:2024/7/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 协议簇:Ethernet Address Resolution Protocol (ARP) 解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

前面的文章中,我們介紹了 MAC Frame 的幀格式。我們知道,在每個 Ethernet Frame 中都分別包含一個 48 bit 的源物理地址和目的物理地址. 對于源地址很容易理解,該地址可以直接從硬件上讀取. 但是對于一個網絡節點,他怎么知道一個 Frame 的目的物理地址呢? 本文我們將學習 ARP 協議來解答這個問題.

ARP 協議主要用來完成將網絡層協議的地址(比如,IP 地址)解析為物理地址的工作.

為什么需要將網絡層協議的地址轉換為物理地址呢?

對于物理層來說,他僅僅能處理 48 bit 的物理地址,而網絡層協議往往有自己協議中定義的協議地址,而這些協議的地址往往都不一樣. 比如, IP 地址的長度為 32 bit,CHAOS 地址的長度為 16 bit, Xerox PUP 地址的長度為 8 bit.

反過來說,ARP 協議的存在也是必須的. 因為如果一個物理層想要同時支持上述的這些協議,他就不應該依賴于這些協議的實現,而是定義自己的地址格式,再通過一種方式將網絡層協議的地址轉化為物理地址. 這個方式就是 ARP 協議要實現的功能.

說明一點,接下來的描述將傾向于網絡層協議是 IP 來進行描述.

ARP 包格式


ARP 協議的包結構比較簡單,我們直接看一個例子. 通過這個例子來解析每個字段的含義:

首先,我們注意到 ARP 包中 ar$op 字段可能的值有兩個 REQUEST 和 REPLY。也就是說 ARP 協議的包大體分為兩類,我們一一來看.

REQUEST


這個包對應的二進制數據為:
00 01 08 00 06 04 00 01 dc a3 33 c4 1e 5a c0 a8
01 01 00 00 00 00 00 00 c0 a8 01 65

  • 首先,我們看到 Wireshark 抓到的這個包中確實有9個字段,與我們上圖中給出的 ARP 包結構完全吻合,并一一對應.
  • Hardware type: Enternet(1) 該字段對應于 ar$hdr, 表明當前硬件地址的類型為 Ethernet 物理地址類型
  • Protocol type: IPv4(0x0800) 該字段對應于 ar$pro, 表明網絡層協議為 IP 協議,也就是說這個 ARP 請求包是為了完成將一個 IP 地址解析為物理地址的工作.
  • Hardware size: 6 該字段對應于 ar$hln, 表明物理地址的長度, 這里 6 的單位為 byte,而不是 bit,需要注意.
  • Protocol size: 4 該字段對應于 ar$pln, 表明網絡層協議的長度, 這里 4 的單位為 byte,而不是 bit,需要注意.
  • Opcode:request(1) 該字段對應于 ar$op, 表明當前 ARP 包的類型。這里,這個 ARP 包是一個請求包.
  • Sender MAC Address: 該字段對應于 ar$sha, 表明發送這個ARP 請求包的網絡節點的物理地址.
  • Sender IP Address: 該字段對應于 ar$spa, 表明發送這個ARP 請求包的網絡節點的網絡層地址. 這里應為網絡層協議為 IP 協議,因此這里是一個 IP 地址. 自然,不同的網絡層協議實現的 ARP 協議,這個字段的長度和值是不同的.
  • Target MAC Address: 該字段對應于 ar$tha,應為這個 ARP 包是一個請求包且當前網絡節點不知道目的地址的物理地址,因此此處填上全0來占位.
    10.Target IP Address: 該字段對應于 ar$tpa, 表明想要將該IP地址解析為物理層地址.
  • 總結:

  • 這個 ARP 請求包想要解析 IP 地址 “192.168.1.101” 對應的物理地址
  • 至于 arhln和arhln 和 arhlnarpln 的必要性,我們解釋一下: ARP 協議用來完成將網絡層協議地址解析為物理層地址的功能,而正如我們前文提到的,不同的網絡層協議的地址長度是不同的,因此我們需要這兩個字段來表明地址的長度。 只有這樣,在接收者收到這個 ARP 請求時,才能正確的解析出來.
  • 往往,ARP 請求都是以廣播的形式發送。因為在發送這個 ARP 請求的時候,發送節點并不知道接收方的物理層地址.
  • REPLY


    這個包對應的二進制數據為:
    00 01 08 00 06 04 00 02 98 fa 9b 17 a8 f8 c0 a8
    01 65 dc a3 33 c4 1e 5a c0 a8 01 01

  • 在接收到 ARP 請求之后,接收者會比較這個ARP 請求中的網絡層地址與自身的網絡地址是否一致。如果一致,就使用自己的物理層地址構建一個 ARP Reply 包來響應這個請求。
  • 這里,這個響應不再需要以廣播的形式發送,因為在接收到的 ARP 請求包中包含了發送方的物理層地址,因此可以直接將響應發送給該網絡節點.
  • END!

    總結

    以上是生活随笔為你收集整理的协议簇:Ethernet Address Resolution Protocol (ARP) 解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。