一、設計原理
1.PCAP文件構成
參考http://blog.csdn.net/gulu_gulu_jp/article/details/50494909
PCAP文件由一個PCAP文件頭和多個PCAP數據包組成,PCAP數據又由數據包頭和數據包內容組成。數據包內容才是我們將要進行分析還原的TCP/IP協議數據。PCAP總體結構如圖 11所示:
圖 11 PCAP文件總體結構
以TCP協議為例,詳細解析PCAP文件格式。PCAP前24個字節為文件頭,包含了文件信息,其結構如圖 11所示。接着16個字節為TCP協議數據包包頭,記錄這個包頭的一些信息。再接着為協議數據包內容,長度不定,本例為TCP,其結構為:以太網幀、IP頭、TCP頭、數據域。如圖 12所示:
圖 12 PCAP文件舉例
2.TCP/IP協議棧
計算機網絡的各層及其協議的集合就構成了網絡的體系結構,即計算機網絡及其構成所完成的精確定義。OSI參考模型如圖 13所示,其中每個實體通常定義兩種不同的接口:一個是為同一計算機上使用它的通信服務的其他上層實體定義的服務接口,簡稱服務;另一個是為另一台計算機上對等實體定義的對等接口,即協議。
圖 13 OSI參考模型
在實際應用中,OSI並沒有被采用,TCP/IP協議族才是實際的標准,如圖 14所示。鏈路層,TCP/IP協議族的最低層,也稱為網絡接口層,通常包含操作系統中的設備驅動程序和對應的網絡接口卡,對應於OSI參考模型中的數據鏈路層和物理層。網絡層,也稱為互聯網層,由於該層的主要協議為IP,通常也簡稱為IP層。傳輸層,通常所說的兩台計算機之間的通信其實是指兩台計算機上對應的應用程序之間的數據通信,傳輸層提供的就是應用程序間的通信,一般也稱為端到端的通信。應用層向用戶提供一組常用的應用程序。
圖 14 TCP/IP協議族
3.各個協議格式
本設計將實現對ARP、IPv4、ICMP、UDP、DHCP等協議進行實際解包分析。
ARP數據包格式如圖 15所示:
圖 15 ARP數據包格式
IPv4數據包格式如圖 16所示:
圖 16 IPv4數據包格式
ICMP數據包格式如圖 17所示:
圖 17 ICMP數據包格式
UDP數據包格式如圖 18所示:
圖 18 UDP數據包格式
DHCP數據包格式如圖 19、圖 20所示:
圖 19 DHCP數據包結構
圖 20 DHCP數據包格式
二、設計方案及實現
1.整體框架
PCAP文件分析器由3個包實現,分別是com.qiusongde.packet、com.qiusongde.pacpparser、com.qiusongde.UI,如圖 21所示:
圖 21 PCAP文件分析器代碼架構
在com.qiusongde.UI這個包中:MyUI類主要實現用戶交互界面,實現選擇文件,根據文件路徑創建輸入流InputStream,並展示分析結果;ExtensionFileFilter類實現文件過濾器,只能打開PCAP文件。
在com.qiusongde.pcapparser這個包中:Pcappparser類主要根據圖 11、圖 12實現讀取PCAP文件並轉換成相應的數據結構Pcap、PcapHeader、PcapData,方便后邊進行分析,ProtocolJudge類根據圖 14判斷其協議類型。
com.qiusongde.packet這個包主要根據圖 15、圖 16、圖 17、圖 18、圖 19、圖 20、圖 21,實現對轉換后的PCAP等數據結構進行分析。
整體交互示意圖 22如所示:
圖 22 整體交互示意圖
2.界面
主界面,如圖 23所示,左邊表格將用來顯示PCAP文件中包含的網絡數據簡介,右邊的兩個文本框將分別用來展示原網絡數據和分析后的詳細信息。
圖 23 主界面
文件選擇器,如圖 24所示,讓用戶自由瀏覽並選擇要打開的PCAP文件。
圖 24 文件選擇器
打開相應的PCAP文件后,左邊表格添加相應的項,用來顯示PCAP文件中攜帶的網絡數據,如圖 25。
圖 25 表格界面
選中相應的表格行之后,將在右邊的文本框顯示分析結果,並以16進制格式顯示原網絡數據,如圖 26所示。
圖 26 文本框界面