ARP(Address Resolution Protocol)地址解析協議,是根據IP地址獲取物理地址的一個TCP/IP協議。緩存
當在同一網絡段內或同一子網內,主機發送信息時將包含目標IP地址的ARP請求廣播發送到網絡上的全部主機,並接收返回消息,以肯定目標主機的物理地址;收到返回消息後將該IP地址和物理地址存入本機ARP緩存中並保留必定時間,下次請求時直接查詢ARP緩存以節約資源。網絡
ARP提供的功能是32bit的IP地址與48bit的MAC接口地址之間的動態映射。測試
ARP工做過程優化
主機A的IP地址爲172.16.1.1,MAC地址爲78-51-7b-21-0f-05;主機B的IP地址爲172.16.1.2,MAC地址爲78-51-84-11-10-05。spa
當主機A要與主機B通訊時,ARP地址解析協議將主機B的IP地址172.16.1.2解析成主機B的MAC地址,如下爲工做流程:blog
一、根據主機A上的路由表,肯定訪問主機B的轉發接口地址。A主機在本機ARP緩存中查詢主機B IP地址對應的MAC地址。接口
二、若是主機A在ARP緩存中沒有找到映射,它將詢問172.16.1.2對應的MAC地址,並將ARP請求幀廣播到本地網絡上的全部主機。源主機A的IP地址和MAC地址都包含在ARP請求幀中。本地網絡上的每臺主機都會收到ARP請求並檢查是否與本身的IP地址匹配,若是主機發現請求的IP地址與本身的IP地址不匹配,則丟棄ARP請求包。資源
三、主機B肯定ARP請求中的IP地址與本身的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本機ARP緩存中。路由
四、主機B將包含其MAC地址的ARP回覆消息直接發送回主機A。工作流
五、當主機A收到從主機B發來的ARP回覆消息時,會用主機B的IP和MAC地址映射更新ARP緩存。
本機緩存是有生存期的,生存期結束後,將再次重複上面的過程,主機B的MAC地址一旦肯定,主機A就能向主機B發送IP通訊了。
ARP緩存
ARP緩存是儲存IP地址和MAC地址的緩衝區,其本質是一個IP地址與MAC地址的對應表,表中記錄了網絡上主機的IP地址與對應的MAC地址。當地址解析協議被詢問一個已知IP地址對應的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發送ARP請求向局域網查詢。
ARP報文格式
一、目的地址(6bit):ARP請求的目的地址,全F表明廣播地址。
二、源地址(6bit):發送ARP請求的以太網地址。
三、幀類型(2bit):表示後面的數據類型,ARP請求和ARP應答這個值爲0x0806。
四、硬件類型(2bit):硬件地址的類型,是以太網類型時此值爲1。
五、協議類型(2bit):要映射的協議地址的類型,要對IPv4地址進行映射,此值爲0x0800。
六、硬件地址長度(1bit):MAC地址佔用的長度,6字節。
七、協議地址長度(1bit):IP地址佔用的長度,4字節。
八、操做類型OP(2bit):ARP請求(值爲1)、ARP應答(值爲2)、RARP請求(值爲3)、RARP應答(值爲4)。
九、發送端以太網地址(6bit):發送ARP請求地址(MAC)。
十、發送端IP地址(4bit):發送ARP請求的IP地址(IP)。
十一、目的以太網地址(6bit):接收ARP請求地址(MAC)。
十二、目的IP地址(4bit):接收ARP請求的IP地址(IP)。
ARP實例(分析):
一、這次測試環境,我選擇在咱們的局域網中用真機進行的測試,爲了能還原ARP協議在真實的網絡環境中,整個請求與應答的全過程。
二、爲了測試ARP協議,請求的主機IP是243,應籤主機IP是1,當IP是243的主機向局域網發ARP Request請求時:
三、當IP是1的主機迴應IP是243的主機發ARP Response迴應時:
總結:在window 7環境下,發ARP Request請求時,發送的數據包長是42字節,發ARP Response迴應時,發送的數據包長是60字節。爲什麼不是TCP/IP模塊中對以太網最小幀64字節的定義呢?
一、發送時是42字節,並未補18個字節的空值,也沒有4字節的FCS值。
二、回覆時是60字節,有18個字節的空值,沒有4字節的FCS值。
猜測,當數據包發送與回覆時,抓包軟件抓取的數據包幀長度並未與以太網最小幀長64字節匹配,是網卡作了優化?