天天看點

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

本節書摘來自異步社群《wireshark資料包分析實戰(第2版)》一書中的第6章6.1節位址解析協定,作者【美】chris sanders,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

第6章 通用底層網絡協定

wireshark資料包分析實戰(第2版)

無論是處理延遲問題,還是甄别存在錯誤的應用,抑或對安全威脅進行聚焦檢查,都是為了發現異常的流量,而你必須首先了解正常的流量。在下面的幾章中,你将會學到正常的網絡流量在資料包級别是如何工作的。

我們将介紹最常見的幾種協定,包括最基礎的tcp、udp和ip,以及如http、dhcp、dns等最常用的應用層協定。在每個協定的相關部分,都會至少有一個捕獲檔案供你下載下傳,并可以讓你直接上手分析。在這一章中,我們将着重關注在osi分層模型中從第1層到第4層的底層協定。

這應該是這本書中最重要的幾章。如果跳過了這些内容,你會感到如同周末晚餐中沒有牛角面包那樣不完整,即使你對每個協定是如何工作的都了然于胸,那也請至少快速浏覽一遍,以便複習每個協定資料包的結構。

6.1 位址解析協定

網絡上的通信會使用到邏輯位址和實體位址。邏輯位址可以使得不同網絡以及沒有直接相連的裝置之間能夠進行通信。實體位址則用來在單一網段中交換機直接連接配接的裝置之間進行通信。在大多數情況下,正常通信需要這兩種位址協同工作。

我們假設這樣一個場景:你需要和你網絡中的一個裝置進行通信,這個裝置可能是某種伺服器,或者隻是你想與之共享檔案的另一個工作站。你所用來建立這個通信的應用已經得到了這個遠端主機的ip位址(通過dns服務,這将在第7章中介紹),也意味着系統已經擁有了用來建構它想要在第3層到第7層中傳遞的資料包所有需要的資訊。這時它所需要的唯一資訊就是第2層包含目标主機mac位址的資料鍊路層資料。

之是以需要mac位址,是因為網絡中用于連接配接各個裝置的交換機使用了内容尋址寄存器(cam)。這個表列出了它在每一個端口的所有連接配接裝置的mac位址。當交換機收到了一個指向特定mac位址的流量,它會使用這個表,來确定應該使用哪一個端口發送流量。如果目标的mac位址是未知的,這個傳輸裝置會首先在它的緩存中查找這個位址,如果沒有找到,那麼這個位址就需要在網絡上額外的通信來進行解析了。

tcp/ip網絡(基于ipv4)中用來将ip位址解析為mac位址的過程稱為位址解析協定(address resolution protocol, arp)。這個協定在rfc826中進行了定義,它的解析過程隻使用兩種資料包:一個arp請求與一個arp響應,如圖6-1所示。

12-1248 資料包分析實用技術-使用wireshark解決現實世界中的網絡問題(第2版)(改三校)0601.tif

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

注意

這個傳輸計算機會發出一個arp請求,基本上就是問“大家好,我的ip位址是xx.xx.xx.xx,mac位址是xx:xx:xx:xx:xx:xx。我需要向那個ip位址是xx.xx.xx.xx的家夥發些東西,但我不知道它的硬體位址,你們誰有這個ip位址的,可否請回複給我你的mac位址?”

這個資料包将被廣播給網段中的所有裝置。不是這個ip位址的裝置将簡單地丢棄這個資料包,而擁有這個ip位址的裝置将發送一個arp響應,就像是說:“你好,傳輸裝置,我就是你所找的那個擁有ip位址為xx.xx.xx.xx的,我的mac位址是xx:xx:xx:xx:xx:xx。”

一旦這個解析過程完成了,傳輸裝置就會對這個裝置mac和ip對應關系的緩存進行更新,并且開始傳輸資料。

 在windows主機中,你可以通過在指令行中鍵入arp -a來檢視arp表。

通過實際情況來看位址解析的這個過程,有助于你更好地了解它究竟是怎麼工作的。但是在看一些例子之前,我們先介紹一下arp資料標頭。

6.1.1 arp頭

如圖6-2所示,arp頭包含下列的幾個域。

硬體類型:資料鍊路層使用的類型資料。在大多數情況下,這個類型都是以太網(類型1)。

協定類型:arp請求正在使用的高層協定。

硬體位址長度:正在使用的硬體位址的長度(八位組/位元組)。

12-1248資料包分析實用技術-使用wireshark解決現實世界中的網絡問題tu0

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

協定位址長度:對于指定協定類型所使用的邏輯位址的長度(八位組/位元組)。

操作:arp資料包的功能:1表示請求,2表示響應。

發送方硬體位址:發送者的硬體位址。

發送方協定位址:發送者的高層協定位址。

目标硬體位址:目标接收方的硬體位址(arp請求中為0)。

目标協定位址:目标接受方的高層協定位址。

現在打開arp_resolution.pcap這個檔案,就可以看到實際的解析過程。我們将對這個過程中的每個資料包單獨進行分析。

6.1.2 資料包1:arp請求

如圖6-3所示,第1個資料包是一個arp請求。我們可以通過在wireshark的packet details面闆中,檢查以太網頭,來确定這個資料包是否是一個真的廣播資料包。這個資料包的目的位址是ff:ff:ff:ff:ff:ff圖示1。這是一個以太網的廣播位址,所有發送到這個位址的資料包都會被廣播到目前網段中的所有裝置。這個資料包中以太網頭的源位址就是我們的mac位址圖示2。

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

在這個給定的結構中,我們可以确定這的确是一個在以太網上使用ip的arp請求。這個arp頭列出了發送方的ip(192.168.0.114)和mac位址(00:16:ce:6e:8b:24)圖示3,以及接收方的ip位址192.168.0.1圖示4。我們想要得到的目标mac位址,還是未知的,是以這裡的目的mac位址填寫為00:00:00:00:00:00。

6.1.3 資料包2:arp響應

在我們對最初請求的響應中(如圖6-4所示),第一個資料包中的源mac位址成為了這個以太網頭中的目的位址。這個arp響應和之前的arp請求看上去很像,除了以下幾點。

資料包的操作碼(opcode)現在是0x0002,用來表示這是一個響應而不是請求。

位址資訊進行了颠倒——發送方的mac位址和ip位址現在變成了目的mac位址和ip位址。

最重要的是,現在資料包中所有的資訊都是可用的,也就是說我們現在有了192.168.0.1主機的mac位址(00:13:46:0b:22:ba)。

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

6.1.4 無償的arp

在我的家鄉,當一些事是所謂的“無償”的時候,那通常沒有什麼好的含義。但無償發送的arp卻是一個好東西。

在多數情況下,一個裝置的ip位址是可以改變的。當這樣的改變發生後,網絡主機中緩存的ip和mac位址映射就不再有效了。為了防止造成通信錯誤,無償的arp請求會被發送到網絡中,強制所有收到它的裝置去用新的ip和mac位址映射更新緩存(如圖6-5所示)。

12-1248 資料包分析實用技術-使用wireshark解決現實世界中的網絡問題(第2版)(改二校)改0605.tif

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

幾個不同的情形都會産生無償arp資料包,其中一個最常見的就是ip位址的改變。打開arp_gratuitous.pcap這個捕獲檔案,你就會看到一個實際例子。這個檔案隻包含一個資料包(如圖6-6所示),因為這就是無償資料包的全部了。

《Wireshark資料包分析實戰(第2版)》—第6章6.1節位址解析協定

檢查這個以太網頭,你會看見這個資料包是以廣播的形式發送,以便網絡上的所有主機能夠接收到它圖示1。這個arp頭看上去和arp請求很像,除了發送方的ip位址圖示2和目标ip位址圖示3是相同的。當這個資料包被網絡中的其他主機接收到之後,它會讓這些主機使用新的ip和mac位址關系更新它們的arp表。由于這個arp資料包是未經請求的,卻導緻用戶端更新arp緩存,是以會稱之為無償。

你會在一些不同的情形下注意到無償arp資料包的存在。如上所示,裝置ip位址的改變會生成它,并且一些作業系統也會在啟動時進行無償arp的發送。此外,你可能會注意到一些系統使用無償arp資料包對流入流量進行負載均衡。

繼續閱讀