ARP和RARP協議詳解
ARP概述
為什麼要用ARP?即ARP的作用
(1) TCP/IP 的32bit的IP地址,僅知道主機的IP地址不能讓核心傳送資料幀給主機
(2) 網路介面的硬體地址,它是一個48bit的值,用來標識不同的乙太網或令牌環網路介面
在硬體層次上,進行資料交換必須有正確的介面地址,核心必須知道目的端的硬體地址才能傳送資料
在乙太網中,一臺主機要把資料幀傳送到同一區域網上的另一臺主機時
裝置驅動程式必須知道乙太網地址才能傳送資料
而我們只知道IP地址,這時就需要採用ARP協議將IP地址對映為乙太網地址
( 乙太網地址即:硬體地址 MAC )
ARP在OSI模型中的位置
OSI模型有七層,TCP在第4層傳輸層,IP在第3層網路層,而ARP在第2層資料鏈路層
高層對低層是有強依賴的,所以TCP的建立前要進行ARP的請求和應答
ARP快取記憶體表在IP層使用
如果每次建立TCP連線都發送ARP請求,會降低效率,因此在主機、交換機、路由器上都會有ARP快取表
建立TCP連線時先查詢ARP快取表,如果有效,直接讀取ARP表項的內容進行第二層資料包的傳送;
只有表失效時才進行ARP請求和應答進行MAC地址的獲取,以建立TCP連線
ARP快取記憶體
每個主機都有一個ARP快取記憶體表,這樣避免每次發包時都需要傳送ARP請求來獲取硬體地址
預設老化時間是20分鐘,利用 arp -a
命令可以檢視顯示系統中快取記憶體的內容
Windows下 arp -d
命令可以清除arp快取記憶體表
ARP分組幀格式
欄位1 ARP請求的目的乙太網地址,全1時代表廣播地址
欄位2 傳送ARP請求(源主機)的乙太網地址
欄位3 乙太網幀型別;於ARP協議,該欄位為0x0806;對於RARP協議,該欄位為0x8035
欄位4 硬體地址的型別,硬體地址不只乙太網一種,是乙太網型別時此值為1
欄位5 表示要對映的協議地址的型別,要對IPv4地址進行對映,此值為0x0800。
欄位6和7表示硬體地址長度和協議地址長度,MAC地址佔6位元組,IP地址佔4位元組。
欄位8 操作型別欄位,ARP請求(1),ARP應答(2),RARP請求(3),RARP應答(4)
欄位9 傳送端ARP請求或應答的硬體地址,這裡是乙太網地址,和欄位2相同。
欄位10 傳送ARP請求或應答的IP地址
欄位11和12是目的端的硬體地址和協議地址。
下邊兩張圖,分別是,ARP請求包和響應包
代理ARP
代理ARP就是通過使用一個主機(通常為router)
來作為指定的裝置使用自己的 MAC 地址來對另一裝置的ARP請求作出應答
為什麼要用代理ARP
先要了解,路由器的重要功能之一就是把區域網的廣播包限制在該網內,阻止其擴散,否則會造成網路風暴。
ARP請求是個廣播包,它詢問的物件如果在同一個區域網內,就會收到應答
但是如果詢問的物件不在同一個區域網該如何處理?路由器就提供的代理ARP為這個問題提供瞭解決方案。
工作過程
兩臺主機A和B處於同一網段但不同的廣播段時,主機A傳送ARP請求主機B的MAC地址時
因為路由器不轉發廣播包的原因,ARP請求只能到達路由器
如果路由器啟用了代理ARP功能,並知道主機B屬於它連線的網路
那麼路由器就用自己介面的MAC地址代替主機B的MAC地址來對主機A進行ARP應答
主機A接收ARP應答,但並不知道代理ARP的存在
優點:
代理ARP能在不影響路由表的情況下新增一個新的Router,使子網對該主機變得透明化
一般代理ARP應該使用在主機沒有配置預設閘道器或沒有任何路由策略的網路上
缺點:
從工作工程可以看到,這其實是一種ARP欺騙。
而且,通過兩個物理網路之間的路由器的代理ARP功能
其實互相隱藏了物理網路,這導致無法對網路拓撲進行網路概括。
此外,代理ARP增加了使用它的那段網路的ARP流量,主機需要更大的ARP快取空間
也不會為不使用ARP進行地址解析的網路工作
RARP:逆地址解析協議
將區域網中某個主機的實體地址轉換為IP地址
比如區域網中有一臺主機只知道實體地址而不知道IP地址
那麼可以通過RARP協議發出徵求自身IP地址的廣播請求,然後由RARP伺服器負責回答
RARP協議廣泛應用於無盤工作站引導時獲取IP地址。
RARP允許區域網的物理機器從網管伺服器ARP表或者快取上請求其IP地址。
存在的問題
RARP通過非常精簡的互動實現了IP地址的獲取,但同時也暴露了一些問題:
① RARP Server必須提前將MAC和IP的對映靜態繫結在本地;
若沒有提前繫結,則電腦用自己MAC詢問時,Server也不會迴應;
② RARP Server只能給電腦分配IP地址,不包括其他資訊,包括閘道器、DNS等資訊;
③ RARP基於二層封裝,只能執行在同一網段;每個網段分配地址,都需要一個RARP Server。
在RARP的基礎上,後面又有了Bootp協議,直譯過來便是"啟動協議",功能同RARP
也是用於電腦接入網路時,用來獲取IP地址的
但是畢竟做了增強,Bootp協議能讓電腦啟動時不僅僅獲取IP地址
而且能獲取到閘道器地址從而讓電腦實現跨網段通訊
Bootp協議雖然讓電腦能夠獲取到更多的資訊,但是仍然沒有解決最大的問題:
伺服器仍然需要提前手工繫結MAC和IP地址,而對於現在的行動網路或者公共網路而言,這根本無法實現。
因為使用者什麼時候接入,接入的MAC是多少,管理員沒法提前知道。
這就有了後面的DHCP,DHCP通過動態分配的方式解決了這個詬病
並且通過DHCP中繼技術實現了跨網段地址分配,實現了全網IP地址的統一管理。
小結:
RARP是一種逝去的地址分配技術,是Bootp和DHCP的鼻祖
目前我們的電腦基本不會用到這個協議,只有部分無盤工作站等情況需要用到
IARP反向地址解析協議
(Inverse Address Resolution Protocol)是DLCI到IP的對映,他應用的場景不是乙太網,而是在幀中繼網路裡面
DLCI即資料鏈路連線標識(Data Link Connection Identifier)
是幀中繼網路裡面的二層地址,好比以太網裡面的MAC地址,用於標記幀中繼裡面的虛擬專線
幀中繼協議是一種統計複用的協議,它在單一物理傳輸線路上能夠提供多條虛電路
DLCI由SAPI和TEI組成,用來唯一的識別一個數據鏈路連線
DLCI只具有區域性意義,即交換機上不同的埠可以使用相同的DLCI號
IARP不像ARP協議可以實時互動,它是週期性執行的
通訊雙方若丟失IARP對映表,則需要等待到固定的時間互動才能重新生成並通訊。
另外不同廠商不同型號對IARP的相容性也可能不同。
基於這些原因,一般建議直接關閉IARP協議,採用靜態繫結的方式生成對映表
總結
ARP是把IP地址轉換為MAC地址的協議;一般ARP協議只適用於區域網
RARP用於實現MAC到IP的對映,本質就是為了獲取IP地址,是Bootp和DHCP協議的鼻祖;
IARP用於實現幀中繼網路中DLCI到IP地址的對映,生成幀中繼對映表(類似ARP表),實現資料封裝與通訊;
相比ARP、免費ARP、代理ARP、ARP攻防等技術,RARP和IARP隨著技術的更新迭代正在退出歷史舞臺
成為"被遺忘的兄弟協議" (對於初學者來說,也算是個好事,因為終於不用"翻轉""反向""逆向"各種分不清了)