摘 要:目前以太網(wǎng)中的通信協(xié)議,通常都是基于TCP/IP協(xié)議的,ARP協(xié)議是TCP/IP協(xié)議族中非常重要的協(xié)議之一,也是爭議最大的網(wǎng)絡協(xié)議之一。
關(guān)鍵詞:ARP;計算機通信;ARP欺騙
中圖分類號:TP393.18
1 ARP協(xié)議及計算機網(wǎng)絡通信過程的相關(guān)介紹
1.1 ARP協(xié)議的概述。ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)。在計算機網(wǎng)絡的通信中,任意兩臺計算機要完成通信,都要把數(shù)據(jù)按照TCP/IP協(xié)議從應用層到網(wǎng)絡接口層逐一封裝。只有完成封裝的數(shù)據(jù)才能被源計算機從網(wǎng)絡接口卡中發(fā)送出去。數(shù)據(jù)在封裝的過程中,必須要把邏輯地址、物理地址等信息封裝到數(shù)據(jù)中。通過邏輯地址獲得物理地址的協(xié)議就是ARP協(xié)議。
1.2 ARP協(xié)議的相關(guān)術(shù)語。IP地址:TCP/IP協(xié)議簇中網(wǎng)際層的地址,通常也稱邏輯地址,此層主要完成路由選擇功能,IP地址就是用于路由選擇時的唯一標識。MAC地址(Media Access Control address):通常也稱物理地址,通常是由網(wǎng)卡生產(chǎn)廠家燒入網(wǎng)卡的閃存芯片,它存儲的是傳輸數(shù)據(jù)時真正賴以標識發(fā)送數(shù)據(jù)的源計算機的地址和接收數(shù)據(jù)的目的主機的地址,是識別以太網(wǎng)節(jié)點的唯一標識。也就是說,在網(wǎng)絡底層的傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。
1.3 計算機網(wǎng)絡通信過程及ARP協(xié)議的作用。在此網(wǎng)絡中,客戶機(PC1)在IE瀏覽器中輸入網(wǎng)址:“http://www.******.com:8080”。確認后的通信過程如下:客戶機(PC1)就會產(chǎn)生一個域名解析請求包發(fā)送給“首選DNS(PC2)”,當DNS服務器(PC2)接收到這個請求包后會把域名對應的IP地址回應給客戶機(PC1)??蛻魴C(PC1)利用獲得的IP地址建立連接,在應用層的數(shù)據(jù)前封裝一個傳輸層頭部,其中傳輸層頭部信息中,最重要的兩個字段是目的端口號和源端口號,目的端口號是從網(wǎng)址中提取出來的,而源端口號則是從1024到65535之間隨機產(chǎn)生。
把封裝了傳輸層頭部信息的數(shù)據(jù),再封裝IP包頭。其中在網(wǎng)際層頭部信息中,最重要的兩個字段是目的IP地址和源IP地址,目的IP地址在DNS回應包中獲得,源IP地址則是自己的IP地址。
從TCP/IP協(xié)議的網(wǎng)際層到網(wǎng)絡接口層的封裝,則要加上目的MAC地址和源MAC地址。如果數(shù)據(jù)的目的網(wǎng)絡號與數(shù)據(jù)包所在的網(wǎng)絡號不同時,數(shù)據(jù)包應該發(fā)送給自己網(wǎng)絡內(nèi)的網(wǎng)關(guān)(在本例中,這個數(shù)據(jù)要發(fā)送給路由器的FA1/0端口)。(1)此時計算機會產(chǎn)生一個ARP請求幀(如下圖),并且我們可以看出ARP請求包是一個廣播幀(“FFFF-FFFF-FFFF”是廣播幀),當交換機接收到此幀時,會作出泛洪(除接收數(shù)據(jù)的端口外,向所有端口發(fā)出這個廣播幀)處理,此時在同一個廣播域內(nèi)的計算機都會接收到這個ARP請求幀,所有計算機都會查看自己的IP地址是不是192.168.1.1;(2)路由器的FA1/0端口(與客戶機在同一個廣播域內(nèi))也會收到這個廣播幀,并會產(chǎn)生一個ARP回應幀,ARP回應幀是以單播的方式通告PC1自己的MAC地址(ARP協(xié)議回應幀格式如下),為了減少ARP協(xié)議廣播的次數(shù),操作系統(tǒng)建立了一個ARP表,當客戶機(PC1)獲得一個ARP回應幀(MAC地址)后,主機就會把MAC地址與對應的IP地址暫時存入高速緩存(ARP表)。通過ARP協(xié)議客戶機(PC1)獲得了網(wǎng)關(guān)FA1/0端口的MAC地址,此時客戶機(client)就可以完成封裝。
此時,從TCP/IP的應用層-傳輸層-網(wǎng)際層-網(wǎng)絡接口層都已經(jīng)完成了封裝。封裝好的數(shù)據(jù)會傳遞給網(wǎng)卡驅(qū)動程序,由網(wǎng)卡驅(qū)動程序產(chǎn)生脈沖傳給網(wǎng)絡鏈路。通過網(wǎng)絡鏈路,網(wǎng)關(guān)(路由器FA1/0)接收到這個數(shù)據(jù)幀后,會查看數(shù)據(jù)幀中的目的MAC地址與自己FA1/0的MAC地址是否相同。確認相同后,路由器繼續(xù)查看網(wǎng)際層的目的IP地址,并且與路由器的路由條目逐一比較,找到這個數(shù)據(jù)包的出口(FastEthernet1/1)。
路由器在發(fā)送此數(shù)據(jù)包前,還要把數(shù)據(jù)包的網(wǎng)絡接口層頭部信息重新封裝。當數(shù)據(jù)包的目的網(wǎng)絡號與數(shù)據(jù)包所在的網(wǎng)絡號相同時,數(shù)據(jù)包就可以直接發(fā)送給目的主機(WEB SERVER),所以路由器直接發(fā)送一個ARP請求包,得到WEB SERVER的 MAC地址,完成數(shù)據(jù)的封裝(如圖1)。
封裝好的數(shù)據(jù)幀才能正常的被路由器從FA1/1端口發(fā)送出去,然后通過網(wǎng)絡鏈路,WEB SERVER接收到這個數(shù)據(jù)幀,并且一一解封裝,最后這個請求被處理,處理好的數(shù)據(jù)還會發(fā)出回應包。回應包的通信過程與請求包的通信過程相同。當客戶機接收到回應包后,此時這次的數(shù)據(jù)通信才結(jié)束。
1.4 ARP協(xié)議在實際運用中存在的問題。(1)ARP協(xié)議是以廣播的方式發(fā)送請求包,這個廣播包會傳遍整個廣播域內(nèi)的主機,廣播域;(2)免費ARP(gratuitous ARP),如果發(fā)送免費ARP的主機正好改變了硬件地址,那么這個分組就可以使其他主機高速緩存中舊的硬件地址進行相應的更新。如果主機收到某個IP地址的ARP請求,而且它已經(jīng)在接收者的高速緩存中,那么就要用ARP請求中的發(fā)送端硬件地址。對高速緩存中相應的內(nèi)容進行更新。[1]
2 分析校園網(wǎng)內(nèi)的ARP欺騙及解決方法
2.1 網(wǎng)絡現(xiàn)狀。某?,F(xiàn)有三幢樓,內(nèi)網(wǎng)中有網(wǎng)上辦公系統(tǒng),每幢樓中都有很多計算機需要在校園內(nèi)網(wǎng)上辦公,目前學校內(nèi)網(wǎng)的所有計算機都在同一個廣播域中。時常出現(xiàn)無法連接互聯(lián)網(wǎng)、網(wǎng)速慢、計算機頻繁中毒、打開網(wǎng)頁時時常會彈出很多廣告等現(xiàn)象。
2.2 網(wǎng)絡分析。當學校內(nèi)網(wǎng)中有一臺計算機運行了病毒程序(如:網(wǎng)絡執(zhí)法官),那么很有可能整個內(nèi)網(wǎng)計算機無法上網(wǎng),或者所有內(nèi)網(wǎng)用戶的個人信息正在被別人分析。如果計算機(PC1)每秒鐘發(fā)出10個ARP REPLY(如圖2)。
這個ARP回應幀是一個廣播幀,所以在整個學校的內(nèi)網(wǎng)都會收到這個數(shù)據(jù)幀,收到這個回應幀的計算機都會修改自己ARP表中的相關(guān)信息。在這個數(shù)據(jù)幀中,IP:192.168.1.1的MAC地址是bb-bb-bb-bb-bb-bb。但是真正的網(wǎng)關(guān)(192.168.1.1)的MAC地址:aa-aa-aa-aa-aa-aa。
如果這時網(wǎng)絡中有計算機(PC2)想上互聯(lián)網(wǎng)打開新浪(IP:122.193.0.175)網(wǎng)頁,產(chǎn)生的請求包格式(如圖3)。
封裝好的數(shù)據(jù)幀,會從網(wǎng)卡中傳送出來,通過網(wǎng)絡傳輸,MAC地址為BBBB-BBBB-BBBB的計算機(PC1)會收到這個數(shù)據(jù)幀,并會根據(jù)自己(PC1)的路由表(可使用route print命令查看),把數(shù)據(jù)包重新封裝起來,再次發(fā)送出去,如果這里的路由表、ARP表都正確,那么這個數(shù)據(jù)包就可以正常的進入真正的網(wǎng)關(guān),然后被真正的網(wǎng)關(guān)發(fā)送出去,其實這個過程對于內(nèi)網(wǎng)的用戶來說是透明的,還是可以正常的上網(wǎng),但是內(nèi)網(wǎng)中所有發(fā)往互聯(lián)網(wǎng)的數(shù)據(jù)都會被計算機(PC1)獲取,包括用戶傳給服務器的密碼等重要個人信息。
2.3 解決方案。(1)劃分VLAN;(2)保護端口;(3)在網(wǎng)關(guān)上做PPPoE服務器;(4)IPv6。綜合這四點分析它們各自的優(yōu)點與缺點,其中考慮到劃分VLAN、保護端口這兩個技術(shù)都需要網(wǎng)絡設備的支持。IPv6協(xié)議需要所有操作系統(tǒng)的支持,但是IPv6技術(shù)卻是最佳的解決方案。PPPoE服務器只需要找一臺淘汰的計算機(奔騰Ⅲ以上)運行路由軟件(RouterOS)就可實現(xiàn),讓整個校園網(wǎng)工作在點到點的網(wǎng)絡模式下,因為在點到點的網(wǎng)絡中是不需要ARP協(xié)議的,但是在這樣的網(wǎng)絡里組播技術(shù)是很難實現(xiàn)的。
參考文獻:
[1]W.Richard Stevens.TCP/IP詳解 卷1:協(xié)議[M].北京:機械工業(yè)出版社,2007.
作者簡介:白月英(1976.11-),女,呼和浩特人,2007年畢業(yè)于內(nèi)蒙古師范大學教育學專業(yè),同濟大學軟件學院2013級軟件工程專業(yè)碩士研究生,高級教師,研究方向:計算機網(wǎng)絡、軟件工程。
作者單位:同濟大學 軟件學院,上海 200092;內(nèi)蒙古農(nóng)業(yè)大學附屬中學,呼和浩特 010010