計算機網路課程設計報告

2022-10-22 10:12:02 字數 3747 閱讀 8293

課程設計

課程名稱計算機網路課程設計

題目名稱監控ip包流量

學生學院資訊工程學院

專業班級電子資訊工程

目錄一、課程設計目的3

二、課程設計要求3

三、課程設計主要思路分析3

四、設計流程圖4

五、執行結果5

六、總結6

參考文獻6

源**6

一、課程設計目的

隨著internet技術的發展,基於ip協議的應用成為網路技術研究與軟體開發的乙個重要基礎,因此學習網路層以基本概念,了解ip協議的基本內容,對於掌握tcp/ip協議的主要內容和學習網路課程是十分重要的,通過本次課程設計,有助於熟悉ip包格式和加深對ip協議的理解。

二、課程設計要求

編制程式,監控網路,捕獲一段時間內網路上的ip資料報,按ip資料報的源位址統計出該源位址在該時間段內發出的ip包的個數,將其寫入日誌檔案中或用圖形表示出來(建議用圖形表示出統計結果)。

程式的具體要求如下:

用命令列執行:ipstatistic time logfile

其中,ipstatistic是程式名;time是設定的統計時間間隔(單位為分鐘,比如,2表示2分鐘);logfile表示統計結果寫入的日誌檔名(若用圖形表示統計結果則可以不選這個引數)。

相關知識:

ip是icp/ip協議體系中的網路層協議,tcp、udp、icmp和igmp等其他協議都是以ip 協議為基礎的。ip的特點如下:

(1) ip協議是一種不可靠、無連線的資料報傳送協議。

(2) ip協議是點對點的網路層通訊協議。

(3) ip協議向通訊層隱藏了物理網路的差異。

三、課程設計主要思路分析

1.課程設計中的重點及難點

(1)程式中會用到winpcap, winpcap是windows packet capture的縮寫,這是unix下的lipbcap移植到windows下的產物,是win32環境下資料報捕獲的開放**函式庫。winpcap由核心級的資料報過濾器,底層動態鏈結庫(和乙個高層的獨立於系統的庫(組成。

winpcap提供以下功能:

1) 捕獲原始資料報,包括共享網路上各主機傳送/接收的資料報以及各主機之間交換的資料報。

2) 在資料報發往應用程式之前,按照自定義的規則過濾某些特殊的資料報。

3) 將使用者構造的資料報傳送到網路中。

4) 統計網路的流量。

winpcap的主要功能在於獨立於主機協議(如tcp/ip)傳送和接收原始資料報。也就是說,winpcap不能阻塞、過濾或控制其他應用程式資料報的收發,它只是監聽共享網路上傳送的資料報。因此,它不能用於qos排程程式或個人防火牆。

基於winpcap的應用程式一般按照下面幾個步驟編寫:

1) 獲取網路裝置列表。

2) 選擇網絡卡並開啟。

3) 當捕獲資料報時,可能需要設定過濾器。

4) 捕獲資料報或者傳送資料報。

相關資料結構

typedef struct_adapter adapter //描述乙個網路介面卡

typedef struct_packet packet具 //描述一組網路資料報的結構

typedef struct nettype nettype //描述網路型別的資料結構

typedef struct npf_if_addr npf_if_addr //描述乙個網路介面卡的ip位址

struct bpf_hdr資料報頭部

struct bpf_stat當前捕獲資料報

(2)列出網絡卡列表,讓使用者選擇可用的網絡卡。

(3)注意過濾器的使用,只需捕獲ip所,別的包都需過濾掉。

2.參考演算法

(1)取得當前網路裝置列表(在標準輸出上顯示,以讓使用者進行選擇)。

(2)將使用者選擇的ethernet卡以混雜模式開啟,以接收到所有的資料報。

(3)設定過濾器,此處的過濾器「ip」。

(4)捕獲ip包並按包的源位址進行統計(用鍊錶結構進行實現)。程式流程如圖1-1所示:

四、設計流程圖。

圖1-1程式流程圖

五、執行結果:

安裝好winpcap軟體,在vc++介面上點選工具->選項->目錄。新增include資料夾下的所有檔案和lib下的所有內容,除錯完程式無誤後,點選開始—>執行「cmd」進入目標資料夾debug下執行檔案並加入引數2 此時程式會檢測電腦系統中的網絡卡數,然後選擇程式執行時的網路介面,耐心等待兩分鐘後就會得到程式的執行結果.

圖1-2系統中網路介面數

圖1-3選擇第乙個網路介面

圖1-4 1分鐘之後捕獲的ip位址和資料報

六、總結:

通過本次計算機網路課程設計,我更加充分的理解了課本上的知識,並能夠加以擴充套件,從而應用於實踐當中,這幾天的課程設計令我受益匪淺,我意識到我們所學的東西將來都是要付諸實踐的,所以一切要從實際情況出發,理論聯絡實際,這樣才能真正發揮我們所具備的能力。這次計算機網路課程設計歷時二個星期,在整整十多天的日子裡,可以說得是苦多於甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前對於程式設計工具的使用還處於一知半解的狀態上,但是經過一段上機的實踐,對於怎麼去排錯、查錯,怎麼去看每一步的執行結果。

通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。這次課程設計終於順利完成了,在設計中遇到了很多程式設計問題,最後在老師的辛勤指導下,終於遊逆而解。

同時,在老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝!

參考文獻

[1] 吳功宜胡曉英.計算機網課程設計北京:機械工業出版社,2007.12.

[2] 張蕘學郭國強.計算機網路與internet教程(第二版) 北京:清華大學出版社2006.11.

[3] 王春曉趙豔標.計算機網路教程北京:機械工業出版社,2005.08.

[4] 張仁何雲.計算機網路課程設計指導北京:清華大學出版社 2006.05.

源**:

//主程式

#include <>

#include <>

#include <>

#include <>

#include <>

#include <>

#include ""

//#include ""

#pragma comment(lib,"")

#pragma comment(lib,"ws2_")

//ip包的頭部包括

struct ip_header;

class ipnode

//資料報個數加1

void addcount()

//返回資料報個數

long getcount()

//返回ip位址

long getipaddress()

};//結點鍊錶

class nodelist

~nodelist()

//ip結點加入鍊錶

void addnode(long sourceip)

{if(phead==null當鍊表為空時

ptail=new ipnode(sourceip);

phead=ptail;

ptail->pnext=null;

else不為空時

計算機網路課程設計報告

資訊與通訊工程學院 題目 北郵校園區域網組網 指導教師 吳老師 劉老師 2011年 11月14日 11月25日 第二版序 在第一版上交經老師悉心指導後,我們發現我們的報告中有很多不足之處,主要問題出現在三大方面 第一,在拓補結構及其設定中,我們未能將拓撲分析與北郵校園網的實際需求關聯起來 第二,在技...

計算機網路課程設計

計算機網路作業 中小型區域網的設計 姓名 學號 專業 指導老師 完成時間 一 設計題目 規劃並設計乙個小型區域網 分布在同一建築的三層樓內,計算機數約100臺,寫出規劃方案,畫出拓撲結構,並詳細列出該區域網的設定。二 情景假設 我們假設這三層樓由三個部門組成,分別是一樓生產部,二樓研發部,三樓行政辦...

計算機網路課程設計要求

一.課程設計的目標 通過該課程設計,使學生熟悉路由器 交換機的配置及相關命令。根據網路案例設計出包括網路拓撲結構圖 ip分配及規劃 特殊網路應用技術和網路測試及協議分析。從而提高設計方案的分析 設計 論證 實現及文件規範書寫的能力和解決實際問題的能力。二 設計內容 計算機網路方案設計 完成需求分析 ...