ARP協議(轉)

ARP協議是“Address Resolution Protocol”(地址解析協議)的縮寫。在局域網中,網絡中實際傳輸的是“幀”,幀裏面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂“地址解析”就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。

 
ARP(AddressResolutionProtocol)地址解析協議用於將計算機的網絡地址(IP地址32位)轉化爲物理地址(MAC地址48位)[RFC826]。ARP協議是屬於數據鏈路層的協議,在以太網中的數據幀從一個主機到達網內的另一臺主機是根據48位的以太網地址(硬件地址)來確定接口的,而不是根據32位的IP地址。內核(如驅動)必須知道目的端的硬件地址才能發送數據。當然,點對點的連接是不需要ARP協議的。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 什麼是ARP?
ARP (Address Resolution Protocol) [1]是個地址解析協議。最白的說法是:在IP-以太網中,當一個上層協議要發包時,有了節點的IP地址,ARP就能提供該節點的MAC地址。
2. 爲什麼要有ARP? OSI 模式把網絡工作分爲七層,彼此不直接打交道,只通過接口(layre interface). IP地址在第三層, MAC地址在第二層。協議在發生數據包時,得先封裝第三層 (IP地址),第二層 (MAC地址)的報頭, 但協議只知道目的節點的IP地址,不知道其MAC地址,又不能跨第二、三層,所以得用ARP的服務。
3. 什麼是ARP cache? ARP cache 是個用來儲存(IP, MAC)地址的緩衝區。當ARP被詢問一個已只IP地址節點的MAC地址時,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才發送ARP request向局域網查詢。
4. ARP 有什麼命令行?常用的包括:(格式因操作系統路由器而異,但作用類似)- 顯示ARP cache: show arp; arp -a - 清除ARP cache: arp -d 
ARP屬於OSI哪一層?
ARP介於數據鏈接層與網絡層之間,應屬於2.5層。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
和ARP的處理機制類似的還有RARP,就是通過和ARP相反的方法通過MAC地址來檢測IP地址。
爲了解釋ARP協議的作用,就必須理解數據在網絡上的傳輸過程。這裏舉一個簡單的PING例子。
假設我們的計算機IP地址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過ICMP協議發送ICMP數據包。該過程需要經過下面的步驟:
1、應用程序構造數據包,該示例是產生ICMP包,被提交給內核(網絡驅動程序);
2、內核檢查是否能夠轉化該IP地址爲MAC地址,也就是在本地的ARP緩存中查看IP-MAC對應表[1]
3、如果存在該IP-MAC對應關係,那麼跳到步驟7;如果不存在該IP-MAC對應關係,那麼接續下面的步驟;
4、內核進行ARP廣播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令類型爲REQUEST(1),其中包含有自己的MAC地址;
5、當192.168.1.2主機接收到該ARP請求後,將源主機的IP地址及MAC更新至自己的arp緩衝中,然後發送一個ARP的REPLY(2)命令,其中包含自己的MAC地址;
6、本地獲得192.168.1.2主機的IP-MAC地址對應關係,並保存到ARP緩存中;
7、內核將把IP轉化爲MAC地址,然後封裝以太網頭結構中,再把數據發送出去;
使用arp-a命令就可以查看本地的ARP緩存內容,所以,執行一個本地的PING命令後,ARP緩存就會存在一個目的IP的記錄了。當然,如果你的數據包是發送到不同網段的目的地,那麼就一定存在一條網關的IP-MAC地址對應的記錄。
知道了ARP協議的作用,就能夠很清楚地知道,數據包的向外傳輸很依靠ARP協議,當然,也就是依賴ARP緩存。要知道,ARP協議的所有操作都是內核自動完成的,同其他的應用程序沒有任何關係。同時需要注意的是,ARP協議只使用於本網絡。  
發佈了32 篇原創文章 · 獲贊 17 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章