目錄
- 前言
- 8.1 IP地址與MAC地址
- 8.2 ARP協議簡介
- 8.3 ARP協議報文
- 8.4 ARP緩存表
- 8.4.1 ARP緩存表簡介
- 8.4.2 LWIP中的緩存表
- 8.4.3 ARP緩存表數據結構
- 8.4.4 ARP緩存表數據緩沖隊列
- 8.4.5 ARP緩存表entry狀態信息
- 8.4.6 ARP緩存表超時處理
- 8.4.7 ARP緩存表entry更新
- 8.5 ARP協議超時機制框圖
- 8.6 ARP收發報文數據流圖
- 8.7 ARP報文組包源碼實現
- 8.7.1 ARP報文數據結構
- 8.7.2 ARP報文組建發送函數(基函數)
- 8.7.3 發送ARP請求包
- 8.7.4 發送ARP IP探測包
- 8.7.5 發送ARP IP宣告包
- 8.8 數據包發送分析
- 8.8.1 數據發包處理簡述(ARP相關)
- 8.8.2 etharp_output():IP數據包是否ARP協議處理
- 8.8.3 etharp_output_to_arp_index():需要維護arp entry的IP數據包轉發函數
- 8.8.4 etharp_query():需要發起ARP請求的IP數據包轉發函數
- 8.8.5 etharp_find_entry():查找可被新建的arp entry
- 8.9 數據包接收分析
- 8.10 LWIP ARP一圖筆記
ARP協議源碼在etharp.c和etharp.h中,也是本次筆記的主要內容 。
ARP源碼實現的重要數據結構:
- ARP緩存表 。
- ARP報文 。
8.1 IP地址與MAC地址TCP/IP協議的網絡層有自己的IP地址 。
單看網絡層,傳輸數據包時只需要知道目標主機的IP地址即可 。
但是網絡層數據包下傳到鏈路層時,鏈路層需要知道下一個節點的MAC地址,才能發包 。
為了實現網絡層對MAC地址無感,又能實現數據包收發,就需要把IP地址和MAC地址綁定 。
一個網卡,有IP地址,而網卡對接物理設備時,物理設備有MAC地址,可以把IP地址和網卡設備MAC地址綁定 。
而有時候,IP地址可能是動態的,即是當前網卡設備根據需求被賦予不同的IP,所以IP地址與MAC地址映射也需要動態才能更好地把網絡層和鏈路層分割 。
8.2 ARP協議簡介地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議 。
主機A知道主機B的ip地址,但是在二層鏈路,也就是數據鏈路層,是通過mac地址進行轉發的,通過ARP協議實現IP和MAC地址綁定 。
ARP協議有靜態獲取和動態獲取:
- 靜態獲取:即是手動配置ARP映射表 。
- 動態獲取:主機通過ARP協議主機獲取、主機維護ARP映射表 。

文章插圖
8.3 ARP協議報文ARP請求和應答分組的格式如圖:

文章插圖
以太網首部:
- 目的MAC(6):鏈路層的數據幀的下一個目標結點設備的MAC 。當攜帶ARP請求報文時,以太網目的地址MAC為廣播地址:0xFFFFFF 。
- 源MAC(6):當前設備的MAC 。
- 幀類型(2):為0x0806時,表示ARP報文 。
- 硬件類型(2):硬件地址的類型 。
- 為1即表示以太網地址 。
- 其它還能表示令牌環地址等 。
- 協議類型(2):表示硬件地址要映射的協議地址類型 。
- 0x0800表示IP地址 。
- 其它還能表示ICMP/IGMP等 。
- 硬件地址長度(1):硬件地址的長度,以字節為單位 。
- 以太網上IP地址的ARP請求或應答:該字段為MAC地址的長度,6 。
- 協議地址長度(1):
- 以太網上IP地址的ARP請求或應答:該字段為IP地址長度,4 。
- OP字段(2):操作字段 。
經驗總結擴展閱讀
- Unity坐標系入門
- 原神薔薇種子怎么獲取
- 原神3.0須彌旋曜玉帛位置在哪
- 2023年10月29日結婚好不好 嫁娶吉利嗎
- 2023年農歷十一月屬羊人哪天適合結婚
- 聚財公司名字大全集 招財旺生意的公司名字
- 抖音店鋪取名 抖音吸引人店鋪名字
- 電影狼溪一共幾部?
- 2023年1月30日制作嫁衣行嗎 2023年1月30日制作嫁衣好不好
- 菠蘿襪是什么襪子?
