彭玉蘭,代琪怡,李佳芮,李宗雷
(1.電子科技大學成都學院 網絡空間安全系,四川 成都 611731;2.西南交通大學 自動化與智能工程系,四川 成都 611756)
“復旦共識”“天大行動”和“北京指南”新工科建設“三部曲”的推進,使得工科教育新路徑的開拓迫在眉睫。加之以大數據、人工智能、云計算、物聯網及區塊鏈等技術為驅動力的新經濟蓬勃發展,對科技人才的需求進一步增加,對轉型中的高校應用型人才培養提出了挑戰。
“網絡協議分析”是計算機網絡與高級編程語言相互融合而形成的一門綜合課程,在網絡工程、信息安全等專業的本專科生教學中占據重要地位。“網絡協議分析”分為理論課程和實驗課程,理論課程側重于講解TCP/IP 協議簇、協議分析技巧等,實驗課程重點是協議解析。當前高校的“網絡協議分析”課程教學常用模式為理論教學為主,少量課內實驗為輔。因此存在缺少實驗平臺,教學內容形式單一等問題,導致無法適應應用型人才培養的時代需求。
本文針對“網絡協議分析”實驗課程存在的上述問題,提出了一種新型的多軟件融合實驗教學方法。該教學方法同時運用網絡虛擬軟件GNS3、網絡協議分析軟件Wireshark及Libpcap 庫的各類接口分析網絡協議,因而能夠準確觀察到協議工作的中間過程。以ARP 協議為例,該教學方法清晰展示了ARP 協議實驗拓撲圖的構建、ARP 協議數據的觸發、捕獲及分析等。
“網絡協議分析”實驗課程傳統教學方法與所提出教學方法的對比如圖1所示。傳統教學方法步驟如圖1(a)所示,由于所有的流程由Wireshark 軟件一鍵完成,無法了解協議的具體工作過程。為了實現協議工作過程的準確觀察,構建了如圖1(b)所示的新型教學方法。首先,利用GNS3軟件搭建網絡拓撲結構,模擬網絡協議環境;進一步,使用Wireshark 軟件進行數據包的捕獲、分析和保存;最后在Linux 系統下調用Libpcap 接口編碼實現網絡協議的分析并與Wireshark 軟件分析結果對比,驗證所提出的網絡協議分析方法的有效性。

圖1 網絡協議分析方法對比

目前常用的網絡模擬軟件有PacketTracer、GNS3 等。其中的GNS3(Graphical Network Simulator)軟件具有圖形化界面且可運行在Windows、MacOS 及Linux/Unix 等眾多平臺,包含Dynamips、WinPCAP、Wireshark等多個應用組件。GNS3 軟件功能豐富,適合初學者使用。
Wireshark(原名Ethereal)軟件是一款免費開源的協議解析器,是目前世界范圍內應用最廣泛的網絡協議解析軟件之一。Wireshark 軟件是一款通用化的網絡數據嗅探器和協議分析器,可運行在Windows、MacOS 及Linux/Unix 等眾多平臺。通過Wireshark 軟件可以分析底層通信機制,對網絡進行故障定位和排查,以及對網絡黑客滲透攻擊進行快速定位并找出攻擊源等。
Libpcap(Packet Capture Library)是由Berkeley 勞倫斯國家實驗室開發的可運行在Linux/Unix 平臺下的網絡數據包捕獲函數庫。Libpcap 庫提供的C 函數接口能夠捕獲經過指定網絡接口的數據包、實現網絡數據包的過濾、網絡數據包分析及存儲。
ARP 協議稱為地址解析協議(Address Resolution Protocol),位于TCP/IP協議棧的網絡層,僅適用于局域網,為網絡地址(IP地址)與對應的硬件地址(MAC 地址)之間提供動態映射。
使用GNS3 軟件設計的ARP 實驗網絡拓撲結構如圖2所示,包括一個交換機和三臺PC。交換機SW 同時連接PC1(IP地址為192.168.1.1)、PC2(IP 地址為192.168.1.2)和PC3(IP地址為192.168.1.3)。

圖2 ARP 實驗拓撲圖
3.2.1 交換機配置
首先選擇路由器c3745,右鍵選擇“Changesymbol”修改圖標為交換機圖標;右鍵選擇“Configure”修改名稱為SW,將Slots 的slot 1 修改為NM-16ESW,即為以太網交換機接口。具體配置步驟如圖3所示。

圖3 交換機配置步驟
3.2.2 三臺PC 配置
PC1 配置信息如下:
PC1#conf t
PC1(config)#int f0/0
PC1(config-if)#no shutdown
PC1(config-if)#ip add 192.168.1.1 255.255.255.0
PC1(config-if)#end
PC2 配置信息如下:
PC2#conf t
PC2 (config)#int f0/0
PC2 (config-if)#no shutdown
PC2 (config-if)#ip add 192.168.1.2 255.255.255.0
PC2 (config-if)#end
PC3 配置信息如下:
PC3#conf t
PC3 (config)#int f0/0
PC3 (config-if)#no shutdown
PC3 (config-if)#ip add 192.168.1.3 255.255.255.0
PC3 (config-if)#end
ping 命令用于檢測網絡連通情況,根據域名獲取服務器IP 等。在ARP 協議實驗中利用ping 命令測試PC1 和PC3的連通情況。
在PC1 上執行ping 命令之前,分別執行命令“showarp”查看PC1、PC2和PC3上的ARP緩存表內容,結果如圖4所示。然后在PC1 上pingPC3,執行命令“ping 192.168.1.3”,命令執行結果為“Success rate is 80 percent (4/5)”。

圖4 ping 實驗之前緩存表內容
在GNS3 環境下調用Wireshark 軟件進行網絡數據包的捕獲,必須在執行ping 命令之前打開Wireshark 軟件。分別選中網絡拓撲結構中的三條鏈路(PC1 與SW、PC2 與SW、PC3 與SW 之間),右鍵選擇“Startcapture”后輸入與三條鏈路相對應的文件名PC1_SW.pcap、PC2_SW.pcap、PC3_SW.pcap,即可開始數據包的捕獲。捕獲的三條鏈路數據包中與ARP 協議相關的信息如圖5所示。

圖5 ARP 協議相關數據包
在3.3 節中執行ping 命令的成功率是80%,即第一個ping 包不通。這是因為當PC1 發送第一個ping 包時,發現沒辦法完成數據鏈路層的封包。原因是PC1 只知道PC3 的IP 地址為192.168.1.3(從圖4 可以看出,ARP 緩存表中只有PC1 的IP 地址和MAC 地址的對應關系),而并不知道PC3 的MAC 地址,于是封裝失敗,第一個ping 包沒有發送出去。與此同時,PC1 會馬上啟動一個ARP 進程,以廣播的方式發出一個ARP 請求,詢問PC3 的MAC 地址。
捕獲的ARP 協議數據包中的PC1_SW.pcap 與PC3_SW.pcap 的數據相同,均為一對ARP 請求應答,四對ICMP請求應答,而PC2_SW.pcap 中只有一個ARP 請求包。根據上述數據結果,說明ARP 協議是廣播請求單播應答,并且ARP 協議原理具有以下特征:PC1 將包含目標IP 地址(192.168.1.3)的ARP 請求廣播到局域網絡上的所有主機,PC2 和PC3 均捕獲到了PC1 的ARP 廣播請求包。PC2 收到廣播包后直接丟棄,PC3 收到詢問自己物理地址的ARP 請求時,首先查看ARP 表中是否包含PC1 的IP 地址和MAC 地址的相關記錄,如果沒有則更新ARP 緩存表(新增一條IP 地址為192.168.1.1,MAC 地址為c4:02:0c:c5:00:00 的記錄)并構建ARP 響應信息回復PC1。PC1 收到PC3 返回的響應消息,以此確定目標PC3 的物理地址為c4:04:0d:bc:00:00;PC1 收到回復消息后將該IP 地址和物理地址存入本機ARP 緩存中并保留一定時間,下次請求時直接查詢ARP 緩存以節約資源。
ping 命令執行結束后查看三臺PC 的ARP 緩存表,如圖6所示。PC2 的ARP 緩存表沒有任何變化,而PC1 和PC3的ARP 緩存表均發生變化。PC1 在之前的基礎上增加一條IP 為192.168.1.3 的記錄,PC3 在之前的基礎上增加一條IP為192.168.1.1 的記錄。

圖6 ARP 緩存表變化
在理解ARP 協議原理后查閱RFC 文檔獲得ARP 數據報文格式及ARP 數據包的詳細信息列表,如圖7所示。首先根據圖7 定義出ARP 協議數據報文格式的結構體。

圖7 ARP 數據報文格式
然后在Linux 平臺下進行C 語言編碼,調用Libpcap 接口捕獲ARP 協議數據并解析。首先調用接口pcap_open_oラine 讀取離線文件PC1_SW.pcap,再結合pcap_loop 和回調函數,在回調函數中進行數據解析,依次解析以太網協議、ARP 協議并與Wireshark 軟件結果對比,對比結果如圖8所示。圖8 表明,利用C 語言編碼可實現協議的正確解析。與Wireshark 軟件不同的是所提出的教學方法能夠準確觀察到協議的工作過程(如圖2—圖6),而Wireshark 軟件僅僅只能看到如圖8所示的最終協議解析結果。此外,隨著協議種類的增多,該教學方法還可以在Linux 系統上靈活地實現網絡流量識別、網絡行為審計、網絡攻防等系統的設計等,這是該教學方法相對于傳統教學方法的另一個優勢。

圖8 ARP 協議解析結果對比
為了克服目前“網絡協議分析”實驗課程缺少實驗平臺,教學內容形式單一等問題,提出了一種新型的將網絡虛擬軟件GNS3、Wireshark 與Libpcap 庫融合起來使用的實驗教學方法。該實驗教學方法有望加深學生對網絡協議工作中間過程的理解,進而提高學生網絡協議分析的能力,增強學生的網絡安全防范意識,對高校“網絡協議分析”實驗課程的授課具有一定的借鑒意義。