地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個(gè)TCP/IP協(xié)議。主機(jī)發(fā)送信息時(shí)將包含目標(biāo)IP地址的ARP請求廣播到局域網(wǎng)絡(luò)上的所有主機(jī),并接收返回消息,以此確定目標(biāo)的物理地址;收到返回消息后將該IP地址和物理地址存入本機(jī)ARP緩存中并保留一定時(shí)間,下次請求時(shí)直接查詢ARP緩存以節(jié)約資源。地址解析協(xié)議是建立在網(wǎng)絡(luò)中各個(gè)主機(jī)互相信任的基礎(chǔ)上的,局域網(wǎng)絡(luò)上的主機(jī)可以自主發(fā)送ARP應(yīng)答消息,其他主機(jī)收到應(yīng)答報(bào)文時(shí)不會(huì)檢測該報(bào)文的真實(shí)性就會(huì)將其記入本機(jī)ARP緩存;由此攻擊者就可以向某一主機(jī)發(fā)送偽ARP應(yīng)答報(bào)文,使其發(fā)送的信息無法到達(dá)預(yù)期的主機(jī)或到達(dá)錯(cuò)誤的主機(jī),這就構(gòu)成了一個(gè)ARP欺騙。ARP命令可用于查詢本機(jī)ARP緩存中IP地址和MAC地址的對應(yīng)關(guān)系、添加或刪除靜態(tài)對應(yīng)關(guān)系等。相關(guān)協(xié)議有RARP、代理ARP。NDP用于在IPv6中代替地址解析協(xié)議。
地址解析協(xié)議由互聯(lián)網(wǎng)工程任務(wù)組(IETF)在1982年11月發(fā)布的RFC 826中描述制定。地址解析協(xié)議是IPv4中必不可少的協(xié)議,而IPv4是使用較為廣泛的互聯(lián)網(wǎng)協(xié)議版本(IPv6仍處在部署的初期)。OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網(wǎng)發(fā)送IP數(shù)據(jù)包時(shí),需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的包頭,但由于發(fā)送時(shí)只知道目標(biāo)IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協(xié)議。使用地址解析協(xié)議,可根據(jù)網(wǎng)絡(luò)層IP數(shù)據(jù)包包頭中的IP地址信息解析出目標(biāo)硬件地址(MAC地址)信息,以保證通信的順利進(jìn)行。
工作過程主機(jī)A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;主機(jī)B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;當(dāng)主機(jī)A要與主機(jī)B通信時(shí),地址解析協(xié)議可以將主機(jī)B的IP地址(192.168.1.2)解析成主機(jī)B的MAC地址,以下為工作流程:第1步:根據(jù)主機(jī)A上的路由表內(nèi)容,IP確定用于訪問主機(jī)B的轉(zhuǎn)發(fā)IP地址是192.168.1.2。然后A主機(jī)在自己的本地ARP緩存中檢查主機(jī)B的匹配MAC地址。第2步:如果主機(jī)A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網(wǎng)絡(luò)上的所有主機(jī)。源主機(jī)A的IP地址和MAC地址都包括在ARP請求中。本地網(wǎng)絡(luò)上的每臺(tái)主機(jī)都接收到ARP請求并且檢查是否與自己的IP地址匹配。如果主機(jī)發(fā)現(xiàn)請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。第3步:主機(jī)B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機(jī)A的IP地址和MAC地址映射添加到本地ARP緩存中。第4步:主機(jī)B將包含其MAC地址的ARP回復(fù)消息直接發(fā)送回主機(jī)A。第5步:當(dāng)主機(jī)A收到從主機(jī)B發(fā)來的ARP回復(fù)消息時(shí),會(huì)用主機(jī)B的IP和MAC地址映射更新ARP緩存。本機(jī)緩存是有生存期的,生存期結(jié)束后,將再次重復(fù)上面的過程。主機(jī)B的MAC地址一旦確定,主機(jī)A就能向主機(jī)B發(fā)送IP通信了。
ARP緩存是個(gè)用來儲(chǔ)存IP地址和MAC地址的緩沖區(qū),其本質(zhì)就是一個(gè)IP地址-->MAC地址的對應(yīng)表,表中每一個(gè)條目分別記錄了網(wǎng)絡(luò)上其他主機(jī)的IP地址和對應(yīng)的MAC地址。每一個(gè)以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)適配器都有自己單獨(dú)的表。當(dāng)?shù)刂方馕鰠f(xié)議被詢問一個(gè)已知IP地址節(jié)點(diǎn)的MAC地址時(shí),先在ARP緩存中查看,若存在,就直接返回與之對應(yīng)的MAC地址,若不存在,才發(fā)送ARP請求向局域網(wǎng)查詢。為使廣播量最小,ARP維護(hù)IP地址到MAC地址映射的緩存以便將來使用。ARP緩存可以包含動(dòng)態(tài)和靜態(tài)項(xiàng)目。動(dòng)態(tài)項(xiàng)目隨時(shí)間推移自動(dòng)添加和刪除。每個(gè)動(dòng)態(tài)ARP緩存項(xiàng)的潛在生命周期是10分鐘。新加到緩存中的項(xiàng)目帶有時(shí)間戳,如果某個(gè)項(xiàng)目添加后2分鐘內(nèi)沒有再使用,則此項(xiàng)目過期并從ARP緩存中刪除;如果某個(gè)項(xiàng)目已在使用,則又收到2分鐘的生命周期;如果某個(gè)項(xiàng)目始終在使用,則會(huì)另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜態(tài)項(xiàng)目一直保留在緩存中,直到重新啟動(dòng)計(jì)算機(jī)為止。