一.什麼是arp
位址解析協議,即arp(address resolution protocol),是根據ip位址獲取實體地址的乙個tcp/ip協議。主機傳送資訊時將包含目標ip位址的arp請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的實體地址;收到返回訊息後將該ip位址和實體地址存入本機arp快取中並保留一定時間,下次請求時直接查詢arp快取以節約資源。
二.arp協議工作過程:
1. 原理:(arp協議只使用於區域網中)
1> 在區域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的mac位址的。
2> 在乙太網中,乙個主機要和另乙個主機進行直接通訊,必須要知道目標主機的mac位址。但這個目標mac位址是如何獲得呢?它就是通過位址解析協議獲得的。所謂「位址解析」就是主機在傳送幀前將目標ip位址轉換成目標mac位址的過程。
3> arp協議的基本功能就是通過目標裝置的ip位址,查詢目標裝置的mac位址,以保證通訊的順利進行。
4> 點對點的連線是不需要arp協議的
2. 工作過程:
1> 當主機a向本區域網上的某個主機b傳送ip資料報時,就先在自己的arp緩衝表中檢視有無主機b的ip位址。
2> 如果有,就可以查出其對應的硬體位址,再將此硬體位址寫入mac幀,然後通過乙太網將資料報傳送到目的主機中。
3> 如果查不到主機b的ip位址的表項。可能是主機b才入網,也可能是主機a剛剛加電。其高速緩衝表還是空的。在這中情況下,主機a就自動執行arp。
(1)arp程序在本區域網上廣播乙個arp請求分組。arp請求分組的主要內容是表明:我的ip位址是192.168.0.2,我的硬體位址是00-00-c0-15-ad-18.我想知道ip位址為192.168.0.4的主機的硬體位址。
(2)在本區域網上的所有主機上執行的arp進行都收到此arp請求分組。
(3)主機b在arp請求分組中見到自己的ip位址,就向主機a傳送arp響應分組,並寫入自己的硬體位址。其餘的所有主機都不理睬這個arp請求分組。arp響應分組的主要內容是表明:「我的ip位址是192.168.0.4,我的硬體位址是08-00-2b-00-ee-aa」,請注意:雖然arp請求分組是廣播傳送的,但arp響應分組是普通的單播,即從乙個源位址傳送到乙個目的位址。
(4)主機a收到主機b的arp響應分組後,就在其arp高速緩衝表中寫入主機b的ip位址到硬體位址的對映。
3. 事例說明:用ping說明arp工作的原理
假設我們的計算機ip位址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過icmp協議傳送icmp(乙太網控制報文協議)資料報
該過程需要經過下面的步驟:
1> 應用程式構造資料報,該示例是產生icmp包,被提交給核心(網路驅動程式);
2> 核心檢查是否能夠轉化該ip位址為mac位址,也就是在本地的arp快取中檢視ip-mac對應表;
3> 如果存在該ip-mac對應關係,那麼跳到步驟<7;
如果不存在該ip-mac對應關係,那麼接續下面的步驟;
4> 核心進行arp廣播,目的mac位址是ff-ff-ff-ff-ff-ff,arp命令型別為request(1),其中包含有自己的mac位址;
5> 當192.168.1.2主機接收到該arp請求後,就傳送乙個arp的reply(2)命令,其中包含自己的mac位址;
6> 本地獲得192.168.1.2主機的ip-mac位址對應關係,並儲存到arp快取中;
7> 核心將把ip轉化為mac位址,然後封裝在乙太網頭結構中,再把資料傳送出去;
4. 特殊情況:
arp是解決同乙個區域網上的主機或路由器的ip位址和硬體位址的對映問題。如果所要找的目標裝置和源主機不在同乙個區域網上。
1>此時主機a就無法解析出主機b的硬體位址(實際上主機a也不需要知道遠端主機b的硬體位址);
2>此時主機a需要的是將路由器r1的ip位址解析出來,然後將該ip資料報傳送給路由器r1.
3>r1從路由表中找出下一跳路由器r2,同時使用arp解析出r2的硬體位址。於是ip資料報按照路由器r2的硬體位址**到路由器r2。
4>路由器r2在**這個ip資料報時用類似方法解析出目的主機b的硬體位址,使ip資料報最終交付給主機b.
說明:? 如果你的資料報是傳送到不同網段的目的地,那麼就一定存在一條閘道器的ip-mac位址對應的記錄。
? 知道了arp協議的作用,就能夠很清楚地知道,資料報的向外傳輸很依靠arp協議,當然,也就是依賴arp快取。要知道,arp協議的所有操作都是核心自動完成的,同其他的應用程式沒有任何關係。同時需要注意的是,arp協議只使用於本網路。
三.編寫arp指令碼實現抓取主機mac位址
先熟悉下命令
使用arp-a命令就可以檢視本地的arp快取內容
測試**如下:
#!/bin/bash
i=1count=0
while [ $i -le 254 ]
do if [ $count -gt 20 ];then
count=0
sleep 1
fiping -c1 "192.168.3".$i"&
let i++
let count++
done
執行結果;
出現了沒有收到包的通知
ping 百度試試…
網路沒有問題,後續問題待解決中
ARP協議及指令碼編寫u
一.什麼是arp 位址解析協議,即arp address resolution protocol 是根據ip位址獲取實體地址的乙個tcp ip協議。主機傳送資訊時將包含目標ip位址的arp請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的實體地址 收到返回訊息後將該ip位址和實體地址存入本機...
ARP與RARP協議及arp指令碼
位址解析協議,即arp address resolution protocol 是根據ip位址獲取實體地址的乙個tcp ip協議。在 絡通訊時,源主機的應 程式知道 的主機的ip位址和端 號,卻不知道 的主機的硬體位址,資料報 先是被 卡接收到再去處理上層協議的,如果接收到的資料報的硬體位址與本機不...
ARP協議及應用
arp協議 即位址解析協議,是根據ip位址獲取實體地址的乙個tcp ip協議。主機傳送資訊時將包含目標ip位址的arp請求廣播 乙太網幀首部的硬體位址為ff ff ff ff ff ff表示廣播 到網路上的所有主機,並接收返回訊息,以此確定目標的實體地址 收到應答訊息後將該ip位址和實體地址存入本機...