1. 程式人生 > >【RL-TCPnet網絡教程】第23章 RL-TCPnet之地址解析協議ARP

【RL-TCPnet網絡教程】第23章 RL-TCPnet之地址解析協議ARP

本地 我們 請求 報文格式 由器 計算 了解 工作 分組

第23章 RL-TCPnet之地址解析協議ARP

本章節為大家講解ARP(Address Resolution Protocol,地址解析協議),通過前面章節對TCP和UDP的學習,需要大家對ARP也有個基礎的認識。

(本章的知識點主要整理自網絡)

23.1 初學者重要提示

23.2 ARP基礎知識參考資料

23.3 ARP基礎知識點

23.4 ARP函數

23.5 總結

23.1 初學者重要提示

通過前面幾個章節對TCP和UDP的學習,需要初學者對ARP的基礎知識點也有個認識。

23.2 ARP基礎知識參考資料

為了對TCP和UDP有更全面的認識,需要對ARP協議的一些基礎知識有個了解。大家可以從以下地址獲得ARP協議基礎知識:

  • RFC826地址 : ftp://ftp.rfc-editor.org/in-notes/rfc826.txt 。
  • wiki百科中文版:地址鏈接(這個是超鏈接)
  • wiki百科英文版:地址鏈接(這個是超鏈接)
  • 百度百科:地址鏈接(這個是超鏈接)

對於初學者來說,學習上面四個參考資料就夠了。如果大家有網絡方面的書籍,比如《TCP/IP詳解》,也可以直接看書籍。

23.3 ARP基礎知識點

(這裏的知識點整理自上面的參考資料地址)

教程這裏也對ARP的基礎知識做個介紹,方便大家先有個大概的認識。

23.3.1 ARP簡要說明

ARP(Address Resolution Protocol,地址解析協議)基本功能為透過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。它是IPv4中網絡層必不可少的協議,不過在IPv6中已不再適用,並被NDP(Neighbor Discovery Protocol,鄰居發現協議)所替代。

在以太網協議中規定,同一局域網中的一臺主機要和另一臺主機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議中,網絡層和傳輸層只關心目標主機的IP地址。這就導致在以太網中使用IP協議時,數據鏈路層的以太網協議接到上層IP協議提供的數據中,只包含目的主機的IP地址。於是需要一種方法,根據目的主機的IP地址,獲得其MAC地址。這就是ARP要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。

另外,當發送主機和目的主機不在同一個局域網中時,即便知道目的主機的MAC地址,兩者也不能直接通信,必須經過路由轉發才可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一臺可以通往局域網外的路由器的MAC地址。於是此後發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱為委托ARP或ARP代理(ARP Proxy)。

在點對點鏈路中不使用ARP,實際上在點對點網絡中也不使用MAC地址,因為在此類網絡中分別已經獲取了對端的IP地址。

23.3.2 ARP工作過程

工作條件:

  • 主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01。
  • 主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02。

工作過程:

當主機A要與主機B通信時,地址解析協議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:

  • 第1步:根據主機A上的路由表內容,IP確定用於訪問主機B的轉發IP地址是192.168.1.2。然後A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。
  • 第2步:如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每臺主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。
  • 第3步:主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。
  • 第4步:主機B將包含其MAC地址的ARP回復消息直接發送回主機A。
  • 第5步:當主機A收到從主機B發來的ARP回復消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束後,將再次重復上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B發送IP通信了。

23.3.3 ARP緩存表

ARP緩存是個用來儲存IP地址和MAC地址的緩沖區,其本質就是一個IP地址到MAC地址的對應表,表中每一個條目分別記錄了網絡上其他主機的IP地址和對應的MAC地址。每一個以太網或令牌環網絡適配器都有自己單獨的表。當地址解析協議被詢問一個已知IP地址節點的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發送ARP請求向局域網查詢。

為使廣播量最小,ARP維護IP地址到MAC地址映射的緩存以便將來使用。ARP緩存可以包含動態和靜態項目。動態項目隨時間推移自動添加和刪除。每個動態ARP緩存項的潛在生命周期是10分鐘。新加到緩存中的項目帶有時間戳,如果某個項目添加後2分鐘內沒有再使用,則此項目過期並從ARP緩存中刪除;如果某個項目已在使用,則又收到2分鐘的生命周期;如果某個項目始終在使用,則會另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜態項目一直保留在緩存中,直到重新啟動計算機為止。

電腦端的ARP緩存表獲取方法如下:

  • WIN+R組合鍵打開“運行”窗口,輸入cmd。

技術分享圖片

  • 彈出的命令窗口中,輸入arp -a。

技術分享圖片

  • 輸入arp -a後,回車。

技術分享圖片

這就是電腦端的ARP緩存表。

23.3.4 ARP報文格式

為了把IP地址映射到48位以太網地址用於傳輸,需要一個體現地址轉換協議的包格式。下面是含以太網首部數據的ARP報文格式:

技術分享圖片
  • 以太網傳輸層
    • 目標以太網地址:目標MAC地址。FF:FF:FF:FF:FF:FF (二進制全1)為廣播地址。
    • 源以太網地址:發送方MAC地址。
    • 幀類型:以太類型,ARP為0x0806
  • 以太網報文數據
    • 硬件類型:如以太網(0x0001)、分組無線網。
    • 協議類型:如IP網際協議(0x8000)、IPv6(0x86DD)。
    • 硬件地址長度:每種硬件地址的字節長度,一般為6(以太網)。
    • 協議地址長度:每種協議地址的字節長度,一般為4(IPv4)。
    • 操作碼:1為ARP請求,2為ARP回顯,3為RARP請求,4為RARP應答。
    • 源硬件地址:n個字節,n由硬件地址長度得到,一般為發送方MAC地址。
    • 源協議地址:m個字節,m由協議地址長度得到,一般為發送方IP地址。
    • 目標硬件地址:n個字節,n由硬件地址長度得到,一般為目標MAC地址。
    • 目標協議地址:m個字節,m由協議地址長度得到,一般為目標IP地址。

23.3.5 ARP欺詐/ARP攻擊

ARP欺騙(ARP spoofing),又稱ARP毒化(ARP poisoning,網絡上多譯為ARP病毒)或ARP攻擊,是針對以太網地址解析協議的一種攻擊技術。此種攻擊可讓攻擊者獲取局域網上的數據包甚至可篡改數據包,且可讓網絡上特定電腦或所有電腦無法正常連接。

ARP欺騙是黑客常用的攻擊手段之一,ARP欺騙分為二種:

  • 一種是對路由器ARP表的欺騙。

第一種ARP欺騙的原理是——截獲網關數據。它通知路由器一系列錯誤的內網MAC地址,並按照一定的頻率不斷進行,使真實的地址信息無法通過更新保存在路由器中,結果路由器的所有數據只能發送給錯誤的MAC地址,造成正常PC無法收到信息。

  • 另一種是對內網PC的網關欺騙。

第二種ARP欺騙的原理是——偽造網關。它的原理是建立假網關,讓被它欺騙的PC向假網關發數據,而不是通過正常的路由器途徑上網。在PC看來,就是上不了網了,網絡掉線了。

一般來說,ARP欺騙攻擊的後果非常嚴重,大多數情況下會造成大面積掉線。有些網管員對此不甚了解,出現故障時,認為PC沒有問題,交換機沒掉線的“本事”,電信也不承認寬帶故障。而且如果第一種ARP欺騙發生時,只要重啟路由器,網絡就能全面恢復,那問題一定是在路由器了。為此,寬帶路由器背了不少“黑鍋”。

----------------------------------

對於這個知識點,涉及到的知識點比較廣泛,我們這裏就為大家介紹這麽多,更多相關知識可在如下地址學習:

  • wiki百科中文版:地址鏈接(這個是超鏈接)。
  • wiki百科英文版:地址鏈接(這個是超鏈接)。
  • 百度百科:地址鏈接(這個是超鏈接)。

23.4 ARP函數

關於ARP,RL-TCPnet提供了如下三個函數:

  • arp_cache_ip

函數功能:根據已知的IP地址查找ARP緩存表中是否存在相應的MAC地址,如果沒有的話,會強制RL-TCPnet網絡協議棧進行解析。協議棧會向網絡發一個arp請求,得到響應的話,會把IP地址和返回的MAC地址存到ARP緩沖區。

  • arp_cache_mac

函數功能:根據已知的MAC地址查找ARP緩存表中是否存在相應的IP地址,如果沒有的話,會強制RL-TCPnet網絡協議棧進行解析。協議棧會向網絡發一個arp請求,得到響應的話,會把MAC地址和返回的IP地址存到ARP緩沖區。

  • arp_get_info

函數功能:根據IP地址返回ARP緩存表中記錄的對應MAC地址或者根據MAC地址返回ARP緩存表中記錄的對應IP地址,均支持。

關於這3個函數的詳細講解及其使用舉例可以看教程第 3 章 3.4 小節裏面說的參考資料 rlarm.chm 文件,我們這裏就不再專門做例子進行說明了(註意,下面這幾個函數都不支持重入,也就是不支持多任務):

技術分享圖片

23.5 總結

本章節就為大家講解這麽多,更多ARP的相關知識需要大家查閱相關書籍進行學習,或者網上搜索相關資料進行學習。

【RL-TCPnet網絡教程】第23章 RL-TCPnet之地址解析協議ARP