Wireshark之抓包原理剖析

1. 網卡

     網卡(NIC)是局域網(LAN,全稱是:Local Area NetWork)中連接計算機和傳輸介質的接口,它工作在物理層(L1)。它是處於主機箱內的一塊網絡接口板,因爲它的存在,從而使得本機能夠與外部局域網進行連接通信。任何一臺計算機,想要進行上網、通信功能,就必須使用網卡。網卡的書面語是網絡適配器/網絡接口卡。如圖1所示,爲Inter I250網卡示意圖。
在這裏插入圖片描述
                         圖1 Intel i350網絡適配器(網卡)

  • 局域網LAN
         用於機構內部通信與信息傳遞。通常使用以太網技術在公司、學習等局部的範圍內部構建一個網絡。LAN可以分爲有線(使用雙絞線,光纖、電纜等)LAN無線(使用電波)LAN

  • 網卡位於主機中的位置
    在這裏插入圖片描述
                            圖2 主機中的網卡位置

1.1 網卡工作原理

      LAN(局域網)可以使用以太網幀格式的以太網(Ethernet)協議標準進行通信。同時在網絡中還可以使用支持該標準協議的交換機、路由器等。在使用線纜連接局域網LAN時候,個人計算機可以使用以太網(Ethernet)雙絞線連接到交換機,然後交換機連接到路由器,而最終路由器處理跨越異構子網和發送至互聯網進行通信。以太網上傳輸的數據在數據鏈路層(TCP/IP網絡模型或OSI(Open Systems Interconnection)開發系統互聯-網絡模型)以數據幀(以太網幀-Ethernet II格式)的形式存在。當本機發送數據時候,會將數據幀/MAC幀並行寫到網卡的緩存中,然後網卡對緩存中要傳輸的數據進行編碼(常見的編碼格式有:曼徹斯特、4B5B、4D-PAM5等,如圖2所示),並最終轉換爲傳輸媒介UTP線纜上的電氣信號進行網絡傳輸。
在這裏插入圖片描述
                         圖3 不同傳輸速率的以太網加密方式

     接收數據時候,則採用相反的一個處理流程。以太網採用小端(Little Endian)順序來傳輸比特流,即對於一個字節(8bit)的數據,會從最低位開始傳送。

  • 小端模式
       高字節存放在高存儲器地址,低字節存放在低存儲器地址

     網路上傳輸的二進制數據使用的字節排列順序也稱呼爲網路字節序,TCP/IP網路模型中數據是採用大端(Big Endian)順序來傳輸數據。

  • 大端模式
       低字節存放在高存儲器地址,高字節存放在低存儲器地址

這也就是爲什麼在網絡編程的時候,需要對數據進行網絡字節序的轉換再進行發送的緣故。假如現在有一個點分十進制表示的IPv4地址192.168.1.254, 那麼在大端模式和小端模式下內存中數據的存放順序如下圖3所示。
在這裏插入圖片描述
                         圖4 大端與小端存放數據順序的比較

1.2 網卡分類

     網卡種類很多,若按照數據鏈路層的控制來分,則有:以太網卡、令牌環網卡和ATM網卡等;若是按照物理層來分,則有無線網卡、光線網卡、同軸電纜網卡等。它們在數據鏈路層的控制、尋址及幀結構不同;物理上的鏈接方式不同、編碼方式不同、信號傳輸介質不同以及電平高低位不同等。

1.3 網卡產商

     網卡生產廠商比較有名的幾個分別是:Intel、Realtek、Broadcom、VIA和SIS。最爲常用的要數Intel了,其官網地址《英特爾® 以太網網絡適配器》, 可以看到當前形形色色的網路適配器。如圖3所示。裏面有對各種網卡參數,如傳輸速率、網卡工作模式(VF混雜模式,非混雜模式)、CPU消耗等詳細參數。
在這裏插入圖片描述
                         圖5 Intel 各種類型的網路適配器(網卡)

2. Wireshark簡介

     協議分析(Protocol Analysis)(也稱呼爲網絡分析-Network Analysis)是進入網絡通信系統,捕獲穿行在網絡中的數據,蒐集網絡統計信息,將數據包解碼爲可閱讀形式的過程。Wireshark 是使用最爲廣泛的網絡協議分析器,從本質上來說,協議分析器是竊聽網絡通信。Wireshark通常被用來 診斷網絡通信故障、測試網絡、蒐集網絡性能趨勢數據等 。其官網是《Wireshark》, 在官網的首頁有下面這一段描述:
在這裏插入圖片描述
                         圖6 Wireshark官網描述

     總而言之,Wireshark就一個用於分析網絡協議的工具。通常將分析器安裝在網絡上,並配置爲捕獲存在問題的通信序列。通過讀取電纜系統中傳輸的數據包,能夠識別出通信過程中存在的缺陷和錯誤。

2.1 Wireshark協議分析器原理圖

     網絡上傳輸的數據包通過網卡進入到網絡協議分析器系統。協議分析器所使用的網卡和網卡 驅動程序必須能夠支持“混雜模式操作(Promiscuous Mode Operation)”。因爲只有運行在混雜模式下的網卡才能夠捕獲到網絡中傳輸到其他設備的“廣播數據包、多播數據包、單播數據包以及錯誤數據包等等”,兩者一起協同工作。圖7爲分析器原理圖。
在這裏插入圖片描述
                                 圖7 協議分析器原理圖和要素

      正如上面所描述,分析器所使用的網卡需要支持“混雜模式”,這樣才能使用分析器抓取網卡上面的流通的數據包。如 Intel i325 網卡官方說明書中就有特別強調過該網卡支持:VF Promiscuous modes(VF 混雜模式)表明該Intel i325網卡處於“混雜模式”工作狀態,支持 VLAN ,單播,多播等。如圖8所示。
在這裏插入圖片描述
                               圖8 Intel i325網卡支持VF混雜模式

2.1.1 混雜模式與監視模式區別

      要弄清混雜模式和監視模式之間的區別:監視模式僅用於無線卡,混雜模式用於無線和有線。 監控模式使卡無需關聯接入點即可偵聽無線數據包。 混雜模式使卡可以偵聽所有數據包,即使不是針對其的數據包。

2.1.2 數據包過濾器

     包過濾器可以告知協議分析器想要捕獲的數據包類型。上面的圖7展示了數據包流的流動方向,如果想要捕獲特定類型的協議數據包,則可以在圖7中的“捕獲過濾器”處設置一個特定的過濾器,則最終經過該過濾器的數據包流便爲我們想要的特定類型的數據包流。即位於“捕獲過濾器”上層的數據。此處的捕獲過濾器也稱爲預過濾器。對應Wireshark中的 菜單欄[捕獲]-[捕獲過濾器], 或是Wireshark主界面處的捕獲過濾器功能。如圖9所示。
在這裏插入圖片描述
                                圖9 Wireshark中的捕獲過濾器

通過圖7可以看到,在“捕獲過濾器”的上一層中,還有一個“顯示過濾器”, 這裏的顯示過濾器類似於Wireshark界面中左上角的Filter功能。如圖10所示,使用“顯示過濾器”可以更容易的解析出我們想要的某個具體的數據包。因爲前面的“捕獲過濾器”得到的數據包是大批量的,因此需要使用“顯示過濾器”來篩選出我們最終需要的某條具體數據包信息。

在這裏插入圖片描述
                               圖10 顯示過濾器和Wireshark中的Filter功能

     顯示過濾器支持若干的過濾選項:源MAC, 目的MAC, 源IP, 目的IP, TCP/UDP傳輸協議,應用層協議(HTTP, DHCP等待), 源端口Port, 目的端口Port等。如圖11所示。

在這裏插入圖片描述
                               圖11 Wireshark中的顯示過濾器

  • 顯示過濾器
    Wireshark官網描述到:
         Wireshark’s most powerful feature is its vast array of display filters (over 242000 fields in 3000 protocols as of version 3.0.6). They let you drill down to the exact traffic you want to see and are the basis of many of Wireshark’s other features, such as the coloring rules.(Wireshark最強大的功能是其廣泛的顯示過濾器列表(從3.0.6版開始,共有3000協議的242000個字段)。它們使您能夠深入瞭解想要查看的確切流量,並且是Wireshark其他功能(例如着色規則)的基礎)。

2.1.3 跟蹤緩存區

     每一個協議分析器內部都維護有一個“跟蹤緩衝區”內存空間區域。它用於暫存從網絡上面複製而來的數據包流。數據包流從“捕獲過濾器”流入到協議分析器的跟蹤緩存區中,該緩衝區中的數據包能夠在被捕獲之後立即查看或是以其他文件格式保持到磁盤上面。比如Wireshark協議分析器工具,打開之後,點擊[開始捕獲], 然後便可立刻查看捕獲到的數據包信息。此時的這些數據包就是放在協議分析器的“跟蹤緩衝區”中的。Wireshark的內置跟蹤緩衝區大小,暫時沒有找到資料信息,不過肯定是有一個大小限制的。
     

2.1.4 解碼功能

     協議分析器的解碼功能使得我們可以直觀且以可讀的方式去讀取,分析跟蹤緩衝區中的數據包。解碼是數據包的翻譯工具。如圖12所示,協議分析器的解碼功能能夠分離數據包的首部、源ip地址、目的ip地址、報文協議、數據包長度、數據包的詳細信息等等。如果沒有協議分析器的解碼功能,若想要查看和閱讀數據包,還需藉助其他工具。因此,協議分析器的解碼功能爲我們提供了極大的便利。
在這裏插入圖片描述
                           圖12 Wireshark協議分析器的解碼功能

3. 總結

     本節提到了計算機中網卡所扮演的重要角色,以及說明了網卡對於每一臺計算機上網通信的功能與作用。正因爲網卡的存在,才使得我們計算和能夠上網,並且與其他計算機之間進行通信。而Wireshark協議分析器主要是用來對網絡中流入到本機計算機的數據包進行捕獲並分析,因此它和網卡的關係極爲親近,沒有網卡就沒有協議分析器。這也是本文在講解Wireshark工具之前先對網卡進行說明的重要原因。

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