ARP協定的功能是透過目標設備的IP位址,查詢目標設備的MAC位址,以確保通訊的順利進行,將電腦的網路位址【IP位址32位元】轉換為實體位址【MAC位址【MAC位址48位】。 ARP位址解析協定用於將電腦的網路位址(IP位址32位元)轉換為實體位址(MAC位址48位元)。
本文操作環境:Windows7系統,Dell G3電腦。
ARP協定是「Address Resolution Protocol」(位址解析協定)的縮寫。在區域網路中,網路中實際傳輸的是“幀”,幀裡面是有目標主機的MAC位址的。在乙太網路中,一個主機要和另一個主機進行直接通信,必須知道目標主機的MAC位址。但這個目標MAC位址是如何取得的呢?它就是透過位址解析協定獲得的。所謂「位址解析」就是主機在傳送訊框前將目標IP位址轉換成目標MAC位址的過程。 ARP協定的基本功能就是透過目標設備的IP位址,查詢目標設備的MAC位址,以確保通訊的順利進行。
ARP(AddressResolutionProtocol)位址解析協定用於將電腦的網路位址(IP位址32位元)轉換為實體位址(MAC位址48位元)[RFC826]。 ARP協定是屬於連結層的協議,在乙太網路中的資料幀從一個主機到達網內的另一台主機是根據48位的乙太網路位址(硬體位址)來決定介面的,而不是根據32位的IP位址。核心(如驅動)必須知道目的端的硬體位址才能傳送資料。當然,點對點的連線是不需要ARP協定的。
ARP協定範例
為了解釋ARP協定的作用,就必須理解資料在網路上的傳輸過程。這裡舉一個簡單的PING例子。
假設我們的電腦IP位址是192.168.1.1,要執行這個指令:ping192.168.1.2。該指令會透過ICMP協定發送ICMP封包。
這個過程需要經過下面的步驟:
1、應用程式建構資料包,此範例是產生ICMP包,提交給核心(網路驅動程式);
# 2、核心檢查是否能夠轉換該IP位址為MAC位址,也就是在本機的ARP快取中查看IP-MAC對應表;
3、如果存在該IP-MAC對應關係,那麼跳到步驟9;如果不存在該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位址,然後封裝在乙太網路頭結構中,再把資料送出去;
使用arp-a指令就可以查看本地的ARP快取內容,所以,執行一個本地的PING指令後,ARP快取就會存在一個目的IP的記錄了。當然,如果你的封包是傳送到不同網段的目的地,那就一定存在一條網關的IP-MAC位址對應的記錄。
知道了ARP協議的作用,就能夠很清楚地知道,封包的向外傳輸很依賴ARP協議,當然,也就是依賴ARP快取。要知道,ARP協定的所有操作都是核心自動完成的,同其他的應用程式沒有任何關係。同時要注意的是,ARP協定只使用於本網路。
想了解更多程式設計學習,請關注php培訓欄位!
以上是ARP協議的作用是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!