ARP幀、ARP過程、免費ARP、ACD的原理

ARP協議(地址解析協議)用於局域網中網絡設備按IP地址查詢對方的MAC地址,提供一種從網絡地址(僅ipv4,ipv6用ND協議替代)到硬件地址(各種鏈路層協議使用的地址)的映射。

1、ARP過程

簡單來說,對於即插即用的網絡而言,網絡中各個設備的IP地址甚至MAC地址都不是固定的,如果需要相互通信,這一時刻在網絡的各個層次都要找到對應的正確的銜接口。主機、交換機等設備在轉發數據報文時需要知道下一個處理報文的設備的物理地址,無論該報文目的地址是否爲本網段(跨網段則發到網關設備,網關也有物理地址),這時就能用ARP協議發起通告。

和學校裏面老師點名是一個道理:老師從廣播通知所有學生,“請叫李小明的同學告訴我你的家庭地址,我是王老師,我在辦公室1-1”,這裏面王老師這個稱呼就是Sender IP,李小明這個稱呼就是Target IP,辦公室1-1是Sender MAC,該通告報文中Target MAC字段是空的,全0,因爲此時老師還不知道學生的住址;學生收到消息發現是叫的自己後,立刻前往辦公室1-1報上自己的住址,即上個報文的想要的Target MAC(實際的ARP當然只是目標機回個報文而不是“前往”)。

再用計算機網絡的專業術語複述上面的過程:

  1. 源主機上的應用程序需要建立一個與1.1.1.1地址設備的連接
  2. 假設主機發現目的地址與自己的IP地址在同一網段同一局域網,則需要得到對方的物理地址,假設使用以太網協議則需要知道MAC地址
  3. 源主機發起ARP過程,廣播一個ARP Request報文,主要內容包含自己的MAC地址、自己的IP地址、希望響應的設備的IP地址
  4. 因爲在同一廣播域,目的主機收到ARP Request後解析,發現希望應答的IP地址是自己的IP地址,則回覆一個ARP Reply,相比ARP Request報文多了Target MAC字段
  5. 源主機收到ARP Reply,記錄MAC-IP表項(目的主機收到Request時可能也建立了表項,方便後面通信使用)
  6. 源主機得到設備1.1.1.1的物理地址,隨後建立連接開始通信

設備上一般會有專門維護ARP表項的表,比如在Windows系統中可以在控制檯輸入arp –a查看ARP表項。ARP表項通常是有老化時間的,當然有的系統也支持配置ARP表項永遠存在,一段時間內如果設備沒有與某些地址的設備通信則ARP表項會被刪除,下一次需要通信的時候會重新開始ARP過程。ARP表項老化操作也是即插即用網絡的一種體現。

2、ARP幀

幀類型及之前的部分是以太網幀的首部,是固定的部分,ARP協議的主要部分是幀類型以後:

·硬件類型:硬件地址的類型

·協議類型:映射的地址的類型,比如ipv4地址爲0x0800

·硬件地址長度、協議地址長度:即物理地址長度和映射的地址的長度,單位1byte

·op:操作類型,有4種,ARP請求(1)、ARP應答(2)、RARP請求(3)、RARP應答(4)

·發送者硬件地址:源主機的物理地址

·發送者協議地址:源主機的IP地址

·目標硬件地址:目的主機的物理地址

·目標協議地址:目的主機的IP地址

3、免費ARP

這是一種特殊的ARP報文,但並不是在協議格式上特殊,而是免費ARP報文的發送者IP地址和目標IP地址是相同的。免費ARP主要希望達到兩個目標:

·允許一臺主機確定當前廣播域中是否有與自己IP地址重複的設備,發送免費ARP的主機不希望收到免費ARP的迴應ARP報文,如果收到了說明當前自己的IP地址會在局域網中產生地址衝突,會提示系統用戶

·如果一臺主機更換了MAC地址,IP地址不變,發送免費ARP可以讓局域網內的其他設備更新自己的ARP表項

4、衝突地址檢測ACD

雖然有免費ARP,但並沒有解決多個主機可以使用同一IP地址的問題,在RFC5227中定義了ACD的概念,其中定義了兩種ARP報文:ARP Probe和ARP Announcement。ARP Probe用於探測當前廣播域是否有其他主機使用某個IP地址,與免費ARP的區別在於,ARP Probe報文的發送者IP地址字段是全0,這是爲了避免ARP污染(因爲ARP請求報文會在廣播域內廣播到每個主機上,所以主機收到帶發送者IP地址的ARP報文後都會創建緩存表項,太多ARP報文會造成域內主機上的緩存浪費)。ARP Announcement報文用於通告域內主機自己的IP地址和MAC地址,特徵是其目標硬件地址字段全0,該報文不希望某個特定的主機迴應,只需要域內主機創建起ARP表項即可。所以ACD定義的兩種報文其實也是免費ARP的兩個功能的更完善的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章