工作過程
主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;
主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;
當主機A要與主機B通信時,地址解析協(xié)議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:
第1步:根據(jù)主機A上的路由表內容,IP確定用于訪問主機B的轉發(fā)IP地址是192.168.1.2。然后A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。
第2步:如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網(wǎng)絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網(wǎng)絡上的每臺主機都接收到ARP請求并且檢查是否與自己的IP地址匹配。如果主機發(fā)現(xiàn)請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。
第3步:主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。
第4步:主機B將包含其MAC地址的ARP回復消息直接發(fā)送回主機A。
第5步:當主機A收到從主機B發(fā)來的ARP回復消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束后,將再次重復上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B發(fā)送IP通信了。
工作要素:ARP緩存

ARP緩存是個用來儲存IP地址和MAC地址的緩沖區(qū),其本質就是一個IP地址-->MAC地址的對應表,表中每一個條目分別記錄了網(wǎng)絡上其他主機的IP地址和對應的MAC地址。每一個以太網(wǎng)或令牌環(huán)網(wǎng)絡適配器都有自己單獨的表。當?shù)刂方馕鰠f(xié)議被詢問一個已知IP地址節(jié)點的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發(fā)送ARP請求向局域網(wǎng)查詢。
為使廣播量最小,ARP維護IP地址到MAC地址映射的緩存以便將來使用。ARP緩存可以包含動態(tài)和靜態(tài)項目。動態(tài)項目隨時間推移自動添加和刪除。每個動態(tài)ARP緩存項的潛在生命周期是10分鐘。新加到緩存中的項目帶有時間戳,如果某個項目添加后2分鐘內沒有再使用,則此項目過期并從ARP緩存中刪除;如果某個項目已在使用,則又收到2分鐘的生命周期;如果某個項目始終在使用,則會另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜態(tài)項目一直保留在緩存中,直到重新啟動計算機為止。
ARP欺騙
地址解析協(xié)議是建立在網(wǎng)絡中各個主機互相信任的基礎上的,它的誕生使得網(wǎng)絡能夠更加高效的運行,但其本身也存在缺陷:
ARP地址轉換表是依賴于計算機中高速緩沖存儲器動態(tài)更新的,而高速緩沖存儲器的更新是受到更新周期的限制的,只保存最近使用的地址的映射關系表項,這使得攻擊者有了可乘之機,可以在高速緩沖存儲器更新表項之前修改地址轉換表,實現(xiàn)攻擊。ARP請求為廣播形式發(fā)送的,網(wǎng)絡上的主機可以自主發(fā)送ARP應答消息,并且當其他主機收到應答報文時不會檢測該報文的真實性就將其記錄在本地的MAC地址轉換表,這樣攻擊者就可以向目標主機發(fā)送偽ARP應答報文,從而篡改本地的MAC地址表。[5]ARP欺騙可以導致目標計算機與網(wǎng)關通信失敗,更會導致通信重定向,所有的數(shù)據(jù)都會通過攻擊者的機器,因此存在極大的安全隱患。
防御措施
不要把網(wǎng)絡安全信任關系建立在IP基礎上或MAC基礎上(RARP同樣存在欺騙的問題),理想的關系應該建立在IP+MAC基礎上。
設置靜態(tài)的MAC-->IP對應表,不要讓主機刷新設定好的轉換表。
除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應表中。
使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這臺ARP服務器不被黑。
使用“proxy”代理IP的傳輸。
使用硬件屏蔽主機。設置好路由,確保IP地址能到達合法的路徑(靜態(tài)配置路由ARP條目),注意,使用交換集線器和網(wǎng)橋無法阻止ARP欺騙。
管理員定期用響應的IP包中獲得一個RARP請求,然后檢查ARP響應的真實性。
管理員定期輪詢,檢查主機上的ARP緩存。
使用防火墻連續(xù)監(jiān)控網(wǎng)絡。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。[6]
若感染ARP病毒,可以通過清空ARP緩存、指定ARP對應關系、添加路由信息、使用防病毒軟件等方式解決。