ARP協(xié)議原理入門
ARP協(xié)議的相關(guān)知識雖然是老生常談,但是由于它是網(wǎng)絡(luò)攻擊中重要的一刻,所以關(guān)于它的基礎(chǔ)知識我們一直都是再三強調(diào)的。那么接下來還是從它的基本概念說起,這個協(xié)議的來頭是什么呢?
ARP協(xié)議簡介
ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議。從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體說來就是將網(wǎng)絡(luò)層(也就是相當(dāng)于OSI的第三層)地址解析為數(shù)據(jù)鏈路層(也就是相當(dāng)于OSI的第二層)的物理地址(注:此處物理地址并不一定指MAC地址)。
ARP原理:某機器A要向主機B發(fā)送報文,會查詢本地的ARP緩存表,找到B的IP地址對應(yīng)的MAC地址后,就會進(jìn)行數(shù)據(jù)傳輸。如果未找到,則廣播A一個ARP請求報文(攜帶主機A的IP地址Ia——物理地址Pa),請求IP地址為Ib的主機B回答物理地址Pb。
網(wǎng)上所有主機包括B都收到ARP請求,但只有主機B識別自己的IP地址,于是向A主機發(fā)回一個ARP響應(yīng)報文。其中就包含有B的MAC地址,A接收到B的應(yīng)答后,就會更新本地的ARP緩存。接著使用這個MAC地址發(fā)送數(shù)據(jù)(由網(wǎng)卡附加MAC地址)。因此,本地高速緩存的這個ARP表是本地網(wǎng)絡(luò)流通的基礎(chǔ),而且這個緩存是動態(tài)的。
ARP協(xié)議并不只在發(fā)送了ARP請求才接收ARP應(yīng)答。當(dāng)計算機接收到ARP應(yīng)答數(shù)據(jù)包的時候,就會對本地的ARP緩存進(jìn)行更新,將應(yīng)答中的IP和MAC地址存儲在ARP緩存中。因此,當(dāng)局域網(wǎng)中的某臺機器B向A發(fā)送一個自己偽造的ARP應(yīng)答,而如果這個應(yīng)答是B冒充C偽造來的,即IP地址為C的IP,而MAC地址是偽造的,則當(dāng)A接收到B偽造的ARP應(yīng)答后,就會更新本地的ARP緩存,這樣在A看來C的IP地址沒有變,而它的MAC地址已經(jīng)不是原來那個了。
由于局域網(wǎng)的網(wǎng)絡(luò)流通不是根據(jù)IP地址進(jìn)行,而是按照MAC地址進(jìn)行傳輸。所以,那個偽造出來的MAC地址在A上被改變成一個不存在的MAC地址,這樣就會造成網(wǎng)絡(luò)不通,導(dǎo)致A不能Ping通C!這就是一個簡單的ARP欺騙。
ARP協(xié)議的工作原理
在每臺裝有TCP IP協(xié)議的電腦里都有一個ARP緩存表,表里的ip地址與mac地址是一一對應(yīng)的。
arp緩存表以主機A(192.168.1.5)向主機B(192.168.1.1)發(fā)送數(shù)據(jù)為例。
當(dāng)發(fā)送數(shù)據(jù)時,主機A會在自己的ARP緩存表中尋找是否有目標(biāo)IP地址。如果找到了,也就知道了目標(biāo)的mac地址,直接把目標(biāo)的mac地址寫入幀里面發(fā)送就可以了;如果在ARP緩存表里面沒有目標(biāo)的IP地址,主機A就會在網(wǎng)絡(luò)上發(fā)送一個廣播,目標(biāo)mac地址是“ff-ff-ff-ff-ff-ff",這表示向同一網(wǎng)段的所有主機發(fā)出這樣的詢問:“192.168.1.1的mac地址是什么呀?"網(wǎng)絡(luò)上的其他主機并不回應(yīng)這一詢問,只有主機B接受到這個幀時才向A作出回應(yīng):“192.168.1.1的mac地址是00-aa-0-62-c6-09。(如上表)"這樣,主機A就知道了主機B的mac地址,就可以向主機B發(fā)送信息了。
同時,它還更新了自己的ARP緩存表,下次再向B發(fā)送數(shù)據(jù)時,直接在ARP緩存表找就可以了。ARP緩存表采用老化的機制,在一段時間里表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢的速度。