網絡數據之ARP協議分析

ARP 地址解析協議 用於將IP地址解析爲物理地址(MAC地址)。
       我們通過OSI七層模型來說明問題
 
       由上圖可見,OSI模型將網絡分爲了七層,而IP地址位於第三層,也就是網絡層,MAC地址位於數據鏈路層,也就是第二層。那麼以太網發送IP數據包的時候,需要首先封裝第三層和第二層報頭。但由於發送數據包時只知道目標IP地址,不知道其MAC地址,而又不能直接跨越第二、三層,所以需要地址解析協議。而在使用ARP協議後,計算機可以按照網絡層IP數據包的頭部信息,將硬件地址信息(MAC地址)對應起來,以保證通信的順利進行。ARP協議的基本功能就是將一個已知的IP地址解析成MAC地址。


       ARP協議的解析過程只使用了兩種數據包:一個ARP請求和一個ARP響應:

 
其工作原理爲:
       (1) 當主機A想要給主機B發送數據時,主機A會首先在自己的本地ARP緩存表中檢查與主機B相匹配的MAC地址。
       (2)如果主機A在自己的緩存表中沒有找到主機B相關的條目,那麼它就要想辦法獲取主機B的MAC地址。這就需要將ARP的請求幀廣播到本地網絡上的所有主機中。這個請求幀含有主機A的IP地址和MAC地址,以及主機B的IP地址。網絡中凡是收到請求幀的主機都會檢查自己的IP地址是否與請求地址一致,如果不一致,則會丟掉該請求幀。對上圖來說,主機C和主機D會丟棄主機A發送的請求幀。
       (3)主機B確定ARP請求中的IP地址和自己的IP地址一致,那麼就會將主機A的IP地址和MAC地址添加到本地的緩存列表中。
       (4)主機B將包含有自己的MAC地址的ARP響應消息直接回復給主機A(單播)。
       (5)主機A收到從主機B發來的ARP響應消息後,會將主機B的IP地址和MAC地址添加到自己的ARP緩存表中。接下來主機A就可以向主機B發送消息了。
       如果想查看ARP緩存表,可以在CMD下輸入ARP -a



       分析ARP數據包
 
     我們通過觀察ARP請求包,在Frame幀中,可以知道該數據包的大小爲42個字節。觀察Ethernet發現數據包中的目的地址是ff:ff:ff:ff:ff:ff,這是一個廣播地址,說明這個數據包會被廣播到當前網段中的所有設備上。而這個數據包中以太網的源地址就是本機的MAC地址。
      然後對ARP請求的頭部進行分析。按照順序依次爲硬件類型、協議類型、硬件地址長度、協議長度、操作碼(該值爲1,表示這是一個ARP請求包)、源MAC地址、源IP地址、目的IP地址、目標的MAC地址未知,所以就以全0的形式顯示。



 
       ARP響應的數據包和ARP請求數據包很像,不同之處在於,用於響應的操作碼(Opcode)現在是2,表明這是一個用於響應的數據包;發送方的MAC地址和IP地址變成了目標的MAC地址和IP地址;ARP請求包中的目的MAC地址和IP地址已經獲取到,寫入到響應包中。


       免費ARP
       當網絡中的設備IP地址改變,網絡主機中緩存的IP地址和MAC地址不在生效。那麼爲了防止由於映射失敗造成通信錯誤,免費的ARP請求會被髮送到網絡中,強制所有收到它的設備使用新的IP以及MAC地址映射來更新緩存。通常,它發生在系統引導期間進行接口配置或者IP地址出現變化的時候。

 
       首先我們可以看到這個數據包是以廣播的形式發出的,這樣這個網絡的主機都能接收到它。接下來我們發現,發送方的IP地址和接收方的IP地址是一致的。網絡中的其他主機收到這個數據包之後,它會讓這些主機使用新的IP地址和MAC地址映射關係來更新它們的ARP緩存。由於這個ARP數據包是源主機未經請求主動發出的,並導致了目標主機更新了ARP緩存,所以稱之爲免費的ARP。
 
       ARP協議是用來將IP地址解析爲MAC地址的協議
 
       主機B已經確定自己就是主機A的目標是,包含有自己的MAC地址的ARP響應消息直接通過單播的形式回覆給主機A。
 
       在請求包中當目標的MAC地址未知,所以就以全0的形式顯示。
 

DI4.jpg (25.52 KB, 下載次數: 0)

下載附件  保存到相冊

昨天 21:14 上傳


       免費ARP會在它發生在系統引導期間進行接口配置或者IP地址出現變化的時候發送。


相關鏈接:http://bbs.ichunqiu.com/thread-9072-1-1.html?from=csdnJG

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