ARP地址解析協議的概念數據結構
我們在網絡中常說到ARP攻擊等安全問題。這里的ARP是什么呢?就是ARP地址解析協議。在這里,關于它的安全問題我們暫且不談,那么我們現在來簡單說一下它的基本含義和數據結構。
ARP地址解析協議
ARP(Address Resolution Protocol)地址解析協議用于將計算機的網絡地址(IP地址32位)轉化為物理地址(MAC地址48位)[RFC826]。ARP協議是屬于鏈路層的協議,在以太網中的數據幀從一個主機到達網內的另一臺主機是根據48位的以太網地址(硬件地址)來確定接口的,而不是根據32位的IP地址。內核(如驅動)必須知道目的端的硬件地址才能發送數據。當然,點對點的連接是不需要地址解析協議的。
ARP協議的數據結構
以下是引用片段:
typedefstructarphdr
{
unsignedshortarp_hrd;/*硬件類型*/
unsignedshortarp_pro;/*協議類型*/
unsignedchararp_hln;/*硬件地址長度*/
unsignedchararp_pln;/*協議地址長度*/
unsignedshortarp_op;/*ARP操作類型*/
unsignedchararp_sha[6];/*發送者的硬件地址*/
unsignedlongarp_spa;/*發送者的協議地址*/
unsignedchararp_tha[6];/*目標的硬件地址*/
unsignedlongarp_tpa;/*目標的協議地址*/
}ARPHDR,*PARPHDR;
為了解釋地址解析協議的作用,就必須理解數據在網絡上的傳輸過程。這里舉一個簡單的PING例子。
假設我們的計算機IP地址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過ICMP協議發送ICMP數據包。該過程需要經過下面的步驟:
1、應用程序構造數據包,該示例是產生ICMP包,被提交給內核(網絡驅動程序);
2、內核檢查是否能夠轉化該IP地址為MAC地址,也就是在本地的ARP緩存中查看IP-MAC對應表;
3、如果存在該IP-MAC對應關系,那么跳到步驟9;如果不存在該IP-MAC對應關系,那么接續下面的步驟;
4、內核進行ARP廣播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令類型為REQUEST(1),其中包含有自己的MAC地址;
5、當192.168.1.2主機接收到該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協議的所有操作都是內核自動完成的,同其他的應用程序沒有任何關系。同時需要注意的是,地址解析協議只使用于本網絡。