1. 程式人生 > >Winpcap網路程式設計一之前言,實驗要求,實驗目標

Winpcap網路程式設計一之前言,實驗要求,實驗目標

Hi,大家好,現在計算機網路課程設計開始啦,本次為大家帶來計算機網路實驗的系列講解,希望對於小夥伴們的計網課設有一定幫助哦。

寫在前面:首先,這次計網課程設計的實驗學校為山東大學,年級為2012級,對號入座哈。另外,對於上學期學的計算機網路課程知識,可以說我就是為了應付考試最後狂背下來的,感覺對於計算機網路裡的一些原理真的沒有理解。純粹看一些概念性的東西真的是太抽象啦,這次計網課設的目的就是讓我們用程式設計實現網路分析技術和網路功能模擬,來深入瞭解計算機網路知識。可以說這些才是學習計算機網路最重要的一環,大家加油。

一、實驗要求:

1、基本任務(達標任務)
   完成兩臺主機之間的資料通訊(資料鏈路層)

  • 模擬ARP協議獲得網段內主機的MAC表
  • 使用幀完成兩臺主機的通訊(Hello! I’m …)        
2、高階任務(優秀任務)
    完成兩臺主機通過中間主機的資料通訊(網路層)
  •  增加基於IP地址的轉發功能
  •  增加網路層封裝
本次任務呢分為基本任務和高階任務,當然我們的目標當然不僅限於基本任務咯。

二、實驗概述

一句話,我們需要利用winpcap這個庫用C語言程式設計來實現以上的任務。

三、winpcap講解

那麼winpcap是什麼?

大多數網路應用程式通過被廣泛使用的作業系統原件來訪問網路,如socket。由於作業系統已經處理了底層的細節問題(如協議的處理、資料包的封裝等),並提供了與讀寫檔案類似的函式介面,因此使用該方法可以很容易的訪問網路中的資料
然而有些時候,這種簡單的方式並不能滿足任務要求,有些應用程式需要直接訪問網路中的資料包,也就是說,需要訪問哪些沒有被作業系統處理過的資料包
WinPcap就是為Windows平臺的應用程式提供這種訪問方式,提供下列功能:

  •  捕獲原始資料包。無論是傳送到執行WinPcap的機器上的資料包,還是在其它主機(存在網路共享介質上的主機)上進行交換的資料包,都可以被捕獲
  • 在資料包傳遞給應用程式之前,根據使用者指定的規則過濾資料包
  • 將原始資料包傳送到網路上
  • 收集網路流量與網路狀態的統計資訊  
它提供給我們什麼呢? 它包含一個核心空間資料包過濾器(Netgroup Packet Filter, NPF),一個底層動態連結庫(Packet.dll)和一個高層獨立於作業系統的動態連結庫(wpcap.dll)。各部分關係見下圖
NPF:為了能夠訪問網路上傳輸的原始資料,資料包捕獲系統需要繞過作業系統的協議棧。這就需要有一部分程式執行在作業系統的核心中,只有這樣才能與網路介面驅動直接互動。在WinPcap中,與作業系統密切相關的是一個名為NPF的裝置驅動程式,同時對不同版本的作業系統提供了不同版本的驅動程式。這些驅動程式提供了資料包捕獲與傳送的基本功能,同時提供了一個可程式設計的資料包過濾系統、一個網路監視引擎等高階功能。
動態連結庫:為了讓應用程式能夠使用核心驅動提供的功能,資料包捕獲系統必須匯出相關的介面。對此,WinPcap提供兩個不同層次的動態連結庫:Packet.dll和wpcap.dll。 Packet.dll提供底層的API,用來直接訪問驅動程式的函式,用來提供獨立於微軟公司不同作業系統的程式設計介面。 wpcap.dll庫匯出了更強大、更高層的捕獲函式介面,具有與UNIX捕獲庫libpcap的相容性。這兩個庫可使資料包的捕獲獨立於底層的網路硬體與作業系統。
四、實驗流程 瞭解了winpcap之後,我們要做的就是利用它提供的類庫來實現網路傳輸,網路解析等一系列的功能。 需要我們做好的準備有:
  • C語言的相關基礎
  • 計算機網路的基礎知識
  • 對開發環境的相關了解
如果對於上述中任何一個不熟悉,請先去補習一下基礎知識吧。 五、參考書目
  • 吳功宜等,《計算機網路高階軟體程式設計技術》(第2版),清華大學出版社
  • 徐恪等, 《高階計算機網路》,清華大學出版社
  • A.S. Tannenbaum,《計算機網路》(第5版),清華大學出版社
  • 呂雪峰等, 《網路分析技術揭祕(原理、實踐與WinPcap深入解析》,機械工業出版社
下一節,我們將講解在Eclipse環境下搭建winpcap環境的具體步驟。本次講解到此結束,謝謝大家。