網(wǎng)絡(luò)協(xié)議基礎(chǔ):ARP簡(jiǎn)析
關(guān)于ARP的簡(jiǎn)述
ARP:Address Resolution Protocol 地址解析協(xié)議。
RARP:Reverse Address Resolution Protocol 逆向地址解析協(xié)議。
不同的網(wǎng)絡(luò),如以太網(wǎng),令牌網(wǎng)...,在數(shù)據(jù)鏈路層都有不同的尋址機(jī)制。
在以太網(wǎng)的局域網(wǎng)中,一臺(tái)主機(jī)和另外一臺(tái)主機(jī)通信發(fā)包,是根據(jù)48bit的以太網(wǎng)地址來(lái)確定目的接口的,設(shè)備驅(qū)動(dòng)程序從不檢查IP數(shù)據(jù)報(bào)中的目的IP地址。
地址解析協(xié)議(ARP)為這兩種不同的地址形式提供映射:32bit的IP地址和數(shù)據(jù)鏈路層48bit地址的轉(zhuǎn)換。RFC 826[Plummer1982]是ARP規(guī)范描述文檔。
ARP為IP地址到對(duì)應(yīng)的硬件地址之間提供動(dòng)態(tài)映射。RARP是被那些沒(méi)有磁盤驅(qū)動(dòng)器的系統(tǒng)使用(一般是無(wú)盤工作站或X終端),它需要系統(tǒng)管理員進(jìn)行手工設(shè)置。
ARP通信過(guò)程解析:
(1).比如在一個(gè)局域網(wǎng)上,一臺(tái)主機(jī)A(192.168.0.12)要訪問(wèn)機(jī)器B(192.168.0.11)。他會(huì)發(fā)送一份稱作ARP請(qǐng)求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個(gè)主機(jī)(廣播包)。ARP請(qǐng)求數(shù)據(jù)幀中包含目的主機(jī)的IP地址,意思就是:“如果你是這個(gè)IP地址的擁有者,請(qǐng)回答你的硬件地址。”
(2).目的主機(jī)收到這份廣播報(bào)文后,識(shí)別出這是發(fā)送端在尋問(wèn)它的IP地址,于是發(fā)送一個(gè)ARP應(yīng)答。這個(gè)ARP應(yīng)答包含IP地址及對(duì)應(yīng)的硬件地址。(非廣播)
(3).收到ARP應(yīng)答后,系統(tǒng)的ARP緩存便會(huì)記錄MAC-IP的對(duì)應(yīng)信息(ARP攻擊點(diǎn)),在CMD里打ARP -a便可查詢現(xiàn)在機(jī)器的ARP緩存情況?,F(xiàn)在IP數(shù)據(jù)報(bào)現(xiàn)在就可以傳送了。
在ARP背后有一個(gè)基本概念,那就是網(wǎng)絡(luò)接口有一個(gè)硬件地址(一個(gè)48bit的值,標(biāo)識(shí)不同的以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)接口)。在硬件層次上進(jìn)行的數(shù)據(jù)幀交換必須有正確的接口地址。但是,TCP/IP有自己的地址:32 bit的IP地址。
知道主機(jī)的IP地址并不能讓內(nèi)核發(fā)送一幀數(shù)據(jù)給主機(jī)。內(nèi)核(如以太網(wǎng)驅(qū)動(dòng)程序)必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。ARP的功能是在32bit的IP地址和采用不同網(wǎng)絡(luò)技術(shù)的硬件地址之間提供動(dòng)態(tài)映射。
值得注意:
ARP協(xié)議是不可靠和無(wú)連接的,通常即使主機(jī)沒(méi)有發(fā)出ARP請(qǐng)求,也會(huì)接受發(fā)給它的 ARP回應(yīng),并將回應(yīng)的mac和ip對(duì)應(yīng)關(guān)系放入自己的ARP緩存中。此外,內(nèi)核為2.4.x的linux系統(tǒng)在ARP實(shí)現(xiàn)中,考慮到了ARP欺騙,不會(huì)接受未經(jīng)請(qǐng)求的ARP回應(yīng),因此直接向這種系統(tǒng)發(fā)送ARP reply也是無(wú)效的,不過(guò),有意思的是雖然它不會(huì)接受未經(jīng)請(qǐng)求的ARP reply,但是只要接收到ARP的request,它就會(huì)更新自己的ARP緩存。
【編輯推薦】