今天在做題的時候發(fā)現(xiàn)ARP協(xié)議不是很懂,于是我去搜了一些資料,學習了一下,這里記錄一下自己的總結。
一、為什么會有ARP協(xié)議的產生呢?
答:這是因為在直接相連的網絡中,兩個節(jié)點是利用彼此的MAC地址互相傳送幀的。但是當網絡層數(shù)據(jù)報交付給源端系統(tǒng)時,該端系統(tǒng)只能獲得目的端系統(tǒng)的ip地址,依然不能進行數(shù)據(jù)的傳送,所以需要一個協(xié)議來根據(jù)已知的ip地址獲得對應得MAC地址,這個時候就產生了ARP協(xié)議,ARP協(xié)議將解析到的目的IP和MAC地址存儲在本地的ARP緩沖中(地址映射表),供下次使用。ARP全稱是:Address Resolution protocol (地址解析協(xié)議)。
二、ARP適用于哪些場景呢?
答:1. 兩個端系統(tǒng)位于同一個子網,這種情況下只需要簡單的進行子網內部的ARP即可獲得目的MAC地址;2. 兩個端系統(tǒng)位于不同的子網內部,需要在路由器之間進行轉發(fā),比前一個復雜,不過依然使用的是ARP協(xié)議。
三、地址解析需要哪些步驟?
答:1.兩個端系統(tǒng)在同一個子網內部時:
源端系統(tǒng)A的IP:10.10.10.1
源端系統(tǒng)A的MAC:11-11-11-11-11-11
目的端系統(tǒng)B的IP:10.10.10.3
目的端系統(tǒng)B的MAC:22-22-22-22-22-22
a.首先在源端系統(tǒng)的ARP緩沖中查找是否有目的端的地址映射表,如果有,那么就可以直接傳送數(shù)據(jù)而不用ARP解析地址
b.如果沒有的話,那么源端系統(tǒng)A以廣播的方式發(fā)起一個ARP請求分組,ARP請求分組的內容是:“我的IP地址是10.10.10.1,MAC地址是11-11-11-11-11-11,請IP地址為10.10.10.3的端系統(tǒng)告訴我你的MAC地址“
c.子網中所有運行ARP進程的端系統(tǒng)都會收到這個ARP請求分組,如果其他的端系統(tǒng)收到后檢查不是自己的IP,便會丟棄該ARP請求
d.如果端系統(tǒng)B收到后。檢查發(fā)現(xiàn)是自己的IP地址,B就會響應A的請求,給A單播自己的MAC地址,回應的內容大致是:“我的IP地址是10.10.10.3,MAC地址是22-22-22-22-22-22”。并且將A的IP和MAC地址存儲在B的ARP緩沖中
e.端系統(tǒng)A收到端系統(tǒng)B給自己的響應分組后,將B的IP到MAC地址的映射存儲在本地的ARP表中
當下次A再次向B發(fā)送數(shù)據(jù)時,就不用再執(zhí)行上邊的ARP過程了。
2.兩個端系統(tǒng)位于不同的子網內部時:
源端系統(tǒng)A的IP地址:10.10.10.1
源端系統(tǒng)A的MAC地址:11-11-11-11-11-11
所在的路由器左接口的IP:10.10.10.4
所在的路由器左接口的MAC:44-44-44-44-44-44
所在路由器右接口的IP地址:10.10.11.6
所在路由器右接口的MAC地址:66-66-66-66-66-66
目的端系統(tǒng)B的IP地址:10.10.11.5
目的端系統(tǒng)B的MAC地址:55-55-55-55-55-55
a.端系統(tǒng)A首先利用子網的網絡地址和目的端所在的網絡地址進行比較,發(fā)現(xiàn)并沒有在一個子網內,因此,端A首先將獲得路由器的左接口的MAC地址,因為他本身配置默認網關的IP地址,所以A以廣播的形式發(fā)起一個ARP請求,獲得了網關(路由器的左接口)的MAC地址
b.端系統(tǒng)A與該路由器的左接口進行數(shù)據(jù)幀的傳送(包括了A向B的ARP請求,有自己的IP、MAC、還有目的B的IP)
c.該子網的路由器適配器發(fā)現(xiàn)有鏈路層數(shù)據(jù)幀尋址,就將此數(shù)據(jù)幀向上傳遞給路由器的網絡層,此時,該路由器通過路由轉發(fā)表將該數(shù)據(jù)報轉發(fā)到了正確的接口(路由器的右接口)
d.右接口將ARP數(shù)據(jù)報中的目的IP與該子網內的網絡地址進行比較,發(fā)現(xiàn)是同一子網,于是該接口以廣播的形式發(fā)起一個ARP請求,接收到B的MAC地址后,路由器右側的接口向端系統(tǒng)B發(fā)送數(shù)據(jù)幀。
至此,完成了源端系統(tǒng)向目的端系統(tǒng)發(fā)送數(shù)據(jù)的過程。
注意:如果源端系統(tǒng)和目的端系統(tǒng)之間有多個路由器的話,可多次重復步驟3
四、ARP表中的地址映射是固定的嗎?或者說如果是固定的話會不會有其他的隱患呢?
答:ARP表中的地址需要動態(tài)的更新,不是固定的。必然存在隱患。為什么呢?一端系統(tǒng)接口的MAC地址是固定的,但是IP地址一定是固定的嗎?當然不是;二、端系統(tǒng)更換接口卡,或者一個端系統(tǒng)未開機的情況下,他的地址映射表是變化的,所以我們需要動態(tài)的更新映射的內容。如果該映射表中的內容是固定不變的話,那么如果一個端系統(tǒng)C改變了自己使用的網絡適配器,那么當端系統(tǒng)A向端系統(tǒng)C發(fā)送數(shù)據(jù)幀時,就會發(fā)送到以前的MAC地址上,造成通信失敗,故ARP協(xié)議中采用了壽命值的方法對存儲的ARP表中的映射進行設置壽命(TTL 值為10~20分鐘),超時就會從ARP表中刪除該表項,重新進行ARP過程。
五、ARP有沒有什么風險?
答:有,因為這個協(xié)議建立在端系統(tǒng)之間相互信任的基礎上,所以當ARP請求發(fā)起時,端系統(tǒng)之間會不用檢查直接存儲在本地的ARP緩沖中,這樣就有攻擊者趁機進行ARP欺騙。首先,它會以目的端系統(tǒng)對ARP請求進行響應,將自己的MAC地址發(fā)送給源端系統(tǒng),而源端系統(tǒng)接收到MAC地址后又不會進行檢查,而是直接將IP和MAC的映射存儲在本地的緩沖中,這樣以后每次源端向目的端發(fā)送數(shù)據(jù)幀,都會經過攻擊者的端系統(tǒng)。這個就是著名的ARP欺騙。
六、有沒有什么措施可以防御ARP欺騙的?
答:1.不要將信任建立在IP或者MAC上,而應該建立在IP+MAC上
2.管理員定期用響應的IP包中獲得一個RARP請求,然后檢查ARP響應的真實性
3.使用硬件屏蔽主機,設置好路由,確保IP地址到達合法的路徑,注意:使用交換集線器和網橋無法阻止ARP欺騙
4.使用防火墻鏈接監(jiān)控網絡
5.若感染了ARP病毒,可以清空ARP緩存、指定ARP對應關系、添加路由信息、使用防病毒軟件等方式解決。
七、什么是RARP?
答:反向地址轉換協(xié)議,是局域網的物理機器從網關服務器的ARP表中或者緩存中根據(jù)MAC地址請求IP地址的協(xié)議,其功能與地址解析協(xié)議相反。