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