三、ARP協議和ICMP協議


一、ARP協議

網絡設備有數據要發送到另一台網絡設備時,必須要知道對方的網絡層地址(IP)。IP地址由網絡層來提供,但是僅有IP地址是不夠的,IP數據報文必須封裝成幀才能通過數據鏈路進行發送。數據幀必須要包含目的MAC地址,因此發送端還必須獲取到目的MAC地址。通通過目的IP地址而獲取目的MAC地址的過程是ARP(Address Resolution Protocol)協議來實現的
 
ARP協議是二層的廣播協議
 

1、ARP原理及流程

1.1.ARP請求

任何時候,當主機需要找出這個網絡中的另一個主機的物理地址時,它就可以發送一個ARP請求報文,這個報文包好了發送方的MAC地址和IP地址以及接收方的IP地址。因為發送方不知道接收方的物理地址,所以這個查詢分組會在網絡層中進行廣播。(見圖1)

 

 

 

1.2.ARP響應

局域網中的每一台主機都會接受並處理這個ARP請求報文,然后進行驗證,查看接收方的IP地址是不是自己的地址,只有驗證成功的主機才會返回一個ARP響應報文,這個響應報文包含接收方的IP地址和物理地址。這個報文利用收到的ARP請求報文中的請求方物理地址以單播的方式直接發送給ARP請求報文的請求方。(見圖2)

 

 

 

1.3舉例

PC1(10.1.1.1)和PC2(10.1.1.2)進行通信,PC1和PC2都不知道大家的mac地址只知道對方的IP地址。

 

 

 使用arp -a命令查看當前主機的arp緩存表是空的

 

 

 

 

 

現使用pc1去ping pc2。在ping完后,我們可以在抓包工具中看到,當PC1發送數據時會先發送ARP請求報文,以廣播報的形式發送到局域網后,當pc2檢測到IP地址與自己的IP相同,就會發送給PC1響應報文。pc1收到pc2回應的mac地址后,pc1再把數據封裝后發送到pc2。
對於ARP響應包來說,源IP,目地IP,源MAC,目地MAC都是知道的。
再用arp -a命令,就可以分別查看到pc1和pc2中都有對方的mac地址。

1.4舉例

如下圖:在pc1 ping pc2

 

 

 

 用pc1去ping pc2時,pc1會發一個arp的廣播報文,這時候pc1獲取到響應的mac地址是路由器接口GE0/0/0的mac地址,而不是pc2的mac地址。當pc1把數據封裝完后發送到網關,網關會跟據自身獲取到的ip路由和mac地址進行數據的轉發,把數據跟據ip和mac地址發送到pc2。

 

2、免費ARP可以用來探測IP地址是否沖突。

主機被分配了IP地址或者IP地址發生變化后,必須立刻檢測其所分配的IP地址在網絡上是否是唯一的,以避免地址沖突。主機通過發送ARP request報文來進行地址沖突檢測。
主機A將ARP request廣播報文中的目的IP地址字段設置為自己的IP地址,該網絡中所有主機包括網關都會接收到此報文。當目的IP地址已經被某一個主機或網關使用時,該主機或網關就會回應ARP reply報文。通過這種方式,主機A就能探測到IP地址沖突了。

 總結:

1)網絡設備在什么情況下回發送ARP request?
源設備在發送數據給目的設備前,會首先查看自身的ARP緩存,查找ARP緩存是否在目的設備的IP地址和MAC地址的映射。如果存在則直接使用,如果不存在則會發送ARP request。
2)網絡設備什么時候會產生免費ARP?
當網絡上的一個設備被分配了IP地址或者IP地址發生變化后,可以通過免費ARP來檢查IP地址是否沖突。
 

二、ICMP協議

ICMP協議是一個網絡層網絡控制報文協議。

一個新搭建好的網絡,往往需要先進行一個簡單的測試,來驗證網絡是否暢通;但是IP協議並不提供可靠傳輸。如果丟包了,IP協議並不能通知傳輸層是否丟包以及丟包的原因。

如目標不可達時,會反回不可達報文到發送端設備。

 

就像我們使用ping命令去ping百度一樣,測試本機到百度網站的聯通性,還會把詳細的信息顯示出來。

 

 tracert 命令也是常用的檢查聯通信的命令,它可以測試pc從哪個路由路徑到達目的地址。它也是基於ICMP協議的

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM