arp協議就是起到在ip位址到對應的硬體位址之間提供對映作用的,所以arp協議又叫位址解析協議。
任何時候,當我們發起乙個網路接連時,無非有以下的過程:
知道目標主機名,通過gethostname
函式將主機名轉換為ip位址,這個函式在dns(網域名稱系統)中稱為解析器,這裡推薦看一下阮一峰老師的博文:dns原理入門。
應用程式通過tcp或者udp使用得到的ip建立連線。
如果目標主機在本地網路上,知道ip位址,我們就可以找到對應的主機,如果目標主機在遠端網路中,系統就會找位於本地網路的下一站路由位址,通過ip選路讓路由器**ip資料報,這些操作屬於ip協議的核心,在此略過。
當主機知道ip位址,並把資料報發過去的過程之前,主機在鏈路層實際上是要知道目標主機的實體地址的,每台主機的實體地址又稱mac位址是全球唯一的。在這一步,就需要我們的arp協議。
arp協議傳送乙個arp請求,這個arp請求是乙個廣播資料幀,意味著區域網內,每一台機器都能收到,arp資料幀中包含著目的主機的ip位址,因為是廣播傳送,如果哪台主機擁有這個ip,則會反饋訊息,發回自己的硬體位址。
得到了目的主機的硬體位址後,就包含著ip資料報的乙太網資料幀就可以正常傳送了。
在乙太網中,arp請求和應答都有著下面的分組格式。
ff:ff:ff:ff:ff:ff
則為廣播位址,在本地區域網內,所有的乙太網介面都要接收這個資料幀。
幀型別:2個位元組長的幀型別,告訴我們這個乙太網資料幀攜帶的是什麼資料。對於arp來說這兩個位元組是0x0806
,對於ip資料報是0x0800
,還有rarp(逆位址解析協議)是0x8035
。
硬體型別和協議型別:這兩個字段就是用來描述arp分組的,硬體型別用來指代需要什麼樣的實體地址,協議型別則是需要對映的協議位址型別。用來描述arp時,表達的就是我有協議型別ip,我需要的硬體型別是乙太網的實體地址。那麼硬體位址就為1,表示乙太網位址,協議型別是0x0800
,看這邊與前面的幀型別中提到的ip資料報的幀型別是一樣的,這是有意設計的。
操作碼:1=>arp請求, 2=>arp應答,3=>rarp請求,4=>rarp應答。這些值用於區分具體操作型別,因為欄位都相同,所以必須指明操作碼,不然連請求還是應答都分不清。
最後四個字段:
知道了arp傳送的原理後,我們不禁疑惑,如果每次發之前都要傳送arp請求硬體位址會不會太慢,但是實際上arp的執行是非常高效的。那是因為每乙個主機上都有乙個arp快取記憶體,我們可以在命令列鍵入arp -a
獲取本機arp快取記憶體的所有內容:
快取記憶體中的每一項的生存時間一般為20分鐘,有了這些快取,我們經常直接使用硬體位址,加快速度了。
以上說的都是在乙個本地網路內完成的,如果arp請求是從乙個網路主機傳送到另乙個網路主機呢?下面介紹arp**的概念
如果arp請求是從乙個網路主機傳送到另乙個網路主機,那麼連線這兩個主機的路由器就可以回答該請求,這個過程稱為委託arp或者arp**。我們知道ip路由選擇,如果主機不相連,我們就把資料報傳送到一預設路由上,由路由器來**該資料報。在arp協議中,我們發往網路的請求主機實體地址也會由路由器回答,得到的就是路由器的實體地址,傳送方就根據這個實體地址把資料報傳送到路由器,由路由器**,再下面的事情由路由器完成,那是屬於ip協議的事了,當然在那個過程中,也不斷使用arp協議獲取每一步的實體地址。
目標ip與自己在同一網段
目標ip與自己不在同乙個網段
這種情況需要將包發給預設閘道器,所以主要獲取閘道器的mac位址
arp欺騙又叫arp毒化,英文arp spoofing
,是一種針對arp的攻擊方式,這裡簡略介紹一下。執行機制arp欺騙主要是攻擊者傳送大量假的arp資料報到網路上,尤其是閘道器上。假設你的閘道器的ip位址是192.168.0.2
,mac位址為00-11-22-33-44-55
,你傳送的資料都會從這個mac位址經過,這時候我傳送大量arp資料報,然而我的包是構造出來的,ip是你的ip,但是mac位址我替換成了我的mac位址,這時候你更新你的arp快取時,就會把我機器的mac位址當成192.168.0.2
的mac位址,於是你的流量都到我這來了,我可以把你的資料改改再發給閘道器,或者什麼都不做,你都上不了網了。防治方法最理想的用靜態arp,不過在大型網路不行,因為arp經常需要更新,另外一種方法,例如dhcp snooping
,網路裝置可藉由dhcp保留網路上各電腦的mac位址,在偽造的arp資料報發出時即可偵測到。此方式已在一些廠牌的網路裝置產品所支援。
TCP IP初識(包含ARP協議的理解)
tcp ip transmission control protocol internet protocol的簡寫 中譯名為傳輸控制協議 網際網路互聯協議,internet上所有應用 協議 網路裝置等都是基於這個協議的。那麼,什麼是協議?可以理解為一種秩序,一種規則,就像過馬路,會有交通規則 就像白...
ARP與RARP協議原理解析
arp是位址解析協議,每台主機都有乙個arp快取區,裡邊儲存著同網路中ip位址到mac位址的對映。他只能解析同一物理網路上的mac位址。下邊舉個例子來說明arp協議的工作原理,假設a要向b傳送資料,此時只知道b的ip位址,ip包總要通過物理網路傳輸,它需要知道目的主機的mac位址。ip位址並不標示一...
TCP IP協議 ARP協議
arp協議 以下就預設在乙太網型別的網路。這個協議的作用是通過ip位址 32bit 找到硬體位址 48bit 順便提一下 在乙個區域網裡,大家常見的裝置交換機,交換機上的主機在互相通訊時,實際用的就是硬體 mac 位址,它並不管誰的ip。因此說交換機是鏈路層上的裝置,而不是ip層上的裝置。舉乙個ft...