版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于Wireshark的網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容解析</p><p> 摘 要 本課程設(shè)計是利用抓包軟件Wireshark,對網(wǎng)絡(luò)服務(wù)器與客戶端進行網(wǎng)絡(luò)數(shù)據(jù)收發(fā)過程中產(chǎn)生的包進行抓取,然后對所抓取的包進行分析,并結(jié)合的協(xié)議進行分析,達到了解各種數(shù)據(jù)包結(jié)構(gòu)的目的。設(shè)計過程中對各種包進行抓取分析,各種包之間比較,了解每種包的傳輸過程與結(jié)構(gòu),通過本次課程設(shè)計,能很好的運用Wireshark對數(shù)據(jù)包分析
2、和Wireshark各種運用,達到課程設(shè)計的目的。</p><p> 關(guān)鍵詞 IP協(xié)議;TCP協(xié)議;UDP協(xié)議;ARP協(xié)議;Wireshark;計算機網(wǎng)絡(luò);</p><p><b> 1 引 言</b></p><p> 本課程設(shè)計主要是設(shè)計一個基于Wireshark的網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容解析,抓取數(shù)據(jù)包,然后對所抓取的包進行分析,并結(jié)合的協(xié)
3、議進行分析,達到了解各種數(shù)據(jù)包結(jié)構(gòu)的目的</p><p> 1.1 課程設(shè)計目的</p><p> Wireshark是一個網(wǎng)絡(luò)封包分析軟件??梢詫W(wǎng)絡(luò)中各種網(wǎng)絡(luò)數(shù)據(jù)包進行抓取,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料,計算機網(wǎng)絡(luò)課程設(shè)計是在學(xué)習(xí)了計算機網(wǎng)絡(luò)相關(guān)理論后,進行綜合訓(xùn)練課程,其目的是:</p><p> 1.了解并會初步使用Wireshark,能在所用
4、電腦上進行抓包;</p><p> 2.了解IP數(shù)據(jù)包格式,能應(yīng)用該軟件分析數(shù)據(jù)包格式。</p><p> 1.2 課程設(shè)計要求</p><p> (1)按要求編寫課程設(shè)計報告書,能正確闡述設(shè)計結(jié)果。</p><p> ?。?)通過課程設(shè)計培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,認(rèn)真的工作作風(fēng)和團隊協(xié)作精神。</p><p>
5、 (3)學(xué)會文獻檢索的基本方法和綜合運用文獻的能力。</p><p> ?。?)在老師的指導(dǎo)下,要求每個學(xué)生獨立完成課程設(shè)計的全部內(nèi)容。</p><p> 1.3 課程設(shè)計背景</p><p> 一、Wireshark(前稱Ethereal)是一個網(wǎng)絡(luò)封包分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是擷取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。</p>
6、<p> 網(wǎng)絡(luò)封包分析軟件的功能可想像成 "電工技師使用電表來量測電流、電壓、電阻" 的工作 - 只是將場景移植到網(wǎng)絡(luò)上,并將電線替換成網(wǎng)絡(luò)線。 在過去,網(wǎng)絡(luò)封包分析軟件是非常昂貴,或是專門屬于營利用的軟件。Wireshark的出現(xiàn)改變了這一切。在GNUGPL通用許可證的保障范圍底下,使用者可以以免費的代價取得軟件與其源代碼,并擁有針對其源代碼修改及客制化的權(quán)利。Wireshark是目前全世界最廣泛的
7、網(wǎng)絡(luò)封包分析軟件之一。</p><p> 網(wǎng)絡(luò)嗅探需要用到網(wǎng)絡(luò)嗅探器,其最早是為網(wǎng)絡(luò)管理人員配備的工具,有了嗅探器網(wǎng)絡(luò)管理員可以隨時掌握網(wǎng)絡(luò)的實際情況,查找網(wǎng)絡(luò)漏洞和檢測網(wǎng)絡(luò)性能,當(dāng)網(wǎng)絡(luò)性能急劇下降的時候,可以通過嗅探器分析網(wǎng)絡(luò)流量,找出網(wǎng)絡(luò)阻塞的來源。網(wǎng)絡(luò)嗅探是網(wǎng)絡(luò)監(jiān)控系統(tǒng)的實現(xiàn)基礎(chǔ)。</p><p> 網(wǎng)絡(luò)嗅探需要用到網(wǎng)絡(luò)嗅探器,其最早是為網(wǎng)絡(luò)管理人員配備的工具,有了嗅探器網(wǎng)絡(luò)管理
8、員可以隨時掌握網(wǎng)絡(luò)的實際情況,查找網(wǎng)絡(luò)漏洞和檢測網(wǎng)絡(luò)性能,當(dāng)網(wǎng)絡(luò)性能急劇下降的時候,可以通過嗅探器分析網(wǎng)絡(luò)流量,找出網(wǎng)絡(luò)阻塞的來源。嗅探器也是很多程序人員在編寫網(wǎng)絡(luò)程序時抓包測試的工具,因為我們知道網(wǎng)絡(luò)程序都是以數(shù)據(jù)包的形式在網(wǎng)絡(luò)中進行傳輸?shù)?,因此難免有協(xié)議頭定義不對的。</p><p> 網(wǎng)絡(luò)嗅探的基礎(chǔ)是數(shù)據(jù)捕獲,網(wǎng)絡(luò)嗅探系統(tǒng)是并接在網(wǎng)絡(luò)中來實現(xiàn)對于數(shù)據(jù)的捕獲的,這種方式和入侵檢測系統(tǒng)相同,因此被稱為網(wǎng)絡(luò)嗅探
9、。網(wǎng)絡(luò)嗅探是網(wǎng)絡(luò)監(jiān)控系統(tǒng)的實現(xiàn)基礎(chǔ),首先就來詳細(xì)地介紹一下網(wǎng)絡(luò)嗅探技術(shù),接下來就其在網(wǎng)絡(luò)監(jiān)控系統(tǒng)的運用進行闡述。</p><p> 2 網(wǎng)絡(luò)協(xié)議基礎(chǔ)知識</p><p><b> 2.1 IP協(xié)議</b></p><p> ?。?) IP協(xié)議介紹</p><p> IP是英文Internet Protocol(網(wǎng)
10、絡(luò)互連的協(xié)議)的縮寫,中文簡稱為“網(wǎng)協(xié)”,也就是為計算機網(wǎng)絡(luò)相互連接進行通信而設(shè)計的協(xié)議。在因特網(wǎng)中,它是能使連接到網(wǎng)上的所有計算機網(wǎng)絡(luò)實現(xiàn)相互通信的一套規(guī)則,規(guī)定了計算機在因特網(wǎng)上進行通信時應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計算機系統(tǒng),只要遵守 IP協(xié)議就可以與因特網(wǎng)互連互通。</p><p> ?。?)IP協(xié)議的網(wǎng)絡(luò)互連實現(xiàn)</p><p> 各個廠家生產(chǎn)的網(wǎng)絡(luò)系統(tǒng)和設(shè)備,如以太網(wǎng)、分組
11、交換網(wǎng)等,它們相互之間不能互通,不能互通的主要原因是因為它們所傳送數(shù)據(jù)的基本單元(技術(shù)上稱之為“幀”)的格式不同。IP協(xié)議實際上是一套由軟件程序組成的協(xié)議軟件,它把各種不同“幀”統(tǒng)一轉(zhuǎn)換成“IP數(shù)據(jù)包”格式,這種轉(zhuǎn)換是因特網(wǎng)的一個最重要的特點,使所有各種計算機都能在因特網(wǎng)上實現(xiàn)互通,即具有“開放性”的特點。</p><p><b> (3)IP數(shù)據(jù)報</b></p><
12、p> TCP/IP協(xié)議定義了一個在因特網(wǎng)上傳輸?shù)陌?,稱為IP數(shù)據(jù)報(IP Datagram)。這是一個與硬件無關(guān)的虛擬包, 由首部和數(shù)據(jù)兩部分組成,其格式如圖2.1所示:</p><p> 圖2-1 IP數(shù)據(jù)報一般格式</p><p> IP數(shù)據(jù)報的詳細(xì)格式如圖2.2所示:</p><p> 0 3 7 15
13、 31</p><p> 圖2-2 IP數(shù)據(jù)報的詳細(xì)格式</p><p> IP數(shù)據(jù)報固定部分各字段含義:</p><p> (1)版本 占4位,指IP協(xié)議的版本。通信雙方使用的IP協(xié)議版本必須一致。目前廣泛使用的IP協(xié)議版本號為4(即IPv4)。關(guān)于IPv6,目前還處于草案階段。 </p>
14、<p> (2)首部長度 占4位,可表示的最大十進制數(shù)值是15。請注意,這個字段所表示數(shù)的單位是32位字長(1個32位字長是4字節(jié)),因此,當(dāng)IP的首部長度為1111時(即十進制的15),首部長度就達到60字節(jié)。當(dāng)IP分組的首部長度不是4字節(jié)的整數(shù)倍時,必須利用最后的填充字段加以填充。因此數(shù)據(jù)部分永遠在4字節(jié)的整數(shù)倍開始,這樣在實現(xiàn)IP協(xié)議時較為方便。首部長度限制為60字節(jié)的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少
15、開銷。最常用的首部長度就是20字節(jié)(即首部長度為0101),這時不使用任何選項。 </p><p> (3)區(qū)分服務(wù) 占8位,用來獲得更好的服務(wù)。這個字段在舊標(biāo)準(zhǔn)中叫做服務(wù)類型,但實際上一直沒有被使用過。1998年IETF把這個字段改名為區(qū)分服務(wù)DS(Differentiated Services)。只有在使用區(qū)分服務(wù)時,這個字段才起作用。 </p><p> (4)總長度總長度指首
16、部和數(shù)據(jù)之和的長度,單位為字節(jié)??傞L度字段為16位,因此數(shù)據(jù)報的最大長度為216-1=65535字節(jié)。 </p><p> 在IP層下面的每一種數(shù)據(jù)鏈路層都有自己的幀格式,其中包括幀格式中的數(shù)據(jù)字段的最大長度,這稱為最大傳送單元MTU(Maximum Transfer Unit)。當(dāng)一個數(shù)據(jù)報封裝成鏈路層的幀時,此數(shù)據(jù)報的總長度(即首部加上數(shù)據(jù)部分)一定不能超過下面的數(shù)據(jù)鏈路層的MTU值。 </p>
17、<p> (5)標(biāo)識(identification) 占16位。IP軟件在存儲器中維持一個計數(shù)器,每產(chǎn)生一個數(shù)據(jù)報,計數(shù)器就加1,并將此值賦給標(biāo)識字段。但這個“標(biāo)識”并不是序號,因為IP是無連接服務(wù),數(shù)據(jù)報不存在按序接收的問題。當(dāng)數(shù)據(jù)報由于長度超過網(wǎng)絡(luò)的MTU而必須分片時,這個標(biāo)識字段的值就被復(fù)制到所有的數(shù)據(jù)報的標(biāo)識字段中。相同的標(biāo)識字段的值使分片后的各數(shù)據(jù)報片最后能正確地重裝成為原來的數(shù)據(jù)報。 </p>
18、<p> (6)標(biāo)志(flag) 占3位,但目前只有2位有意義。 </p><p> 標(biāo)志字段中的最低位記為MF(More Fragment)。MF=1即表示后面“還有分片”的數(shù)據(jù)報。MF=0表示這已是若干數(shù)據(jù)報片中的最后一個。 </p><p> 標(biāo)志字段中間的一位記為DF(Don’t Fragment),意思是“不能分片”。只有當(dāng)DF=0時才允許分片。 </p
19、><p> (7)片偏移 占13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置。也就是說,相對用戶數(shù)據(jù)字段的起點,該片從何處開始。片偏移以8個字節(jié)為偏移單位。這就是說,每個分片的長度一定是8字節(jié)(64位)的整數(shù)倍。 </p><p> (8)生存時間 占8位,生存時間字段常用的的英文縮寫是TTL(Time To Live),表明是數(shù)據(jù)報在網(wǎng)絡(luò)中的壽命。由發(fā)出數(shù)據(jù)報的源點設(shè)
20、置這個字段。其目的是防止無法交付的數(shù)據(jù)報無限制地在因特網(wǎng)中兜圈子,因而白白消耗網(wǎng)絡(luò)資源。最初的設(shè)計是以秒作為TTL的單位。每經(jīng)過一個路由器時,就把TTL減去數(shù)據(jù)報在路由器消耗掉的一段時間。若數(shù)據(jù)報在路由器消耗的時間小于1秒,就把TTL值減1。當(dāng)TTL值為0時,就丟棄這個數(shù)據(jù)報。 </p><p> (9)協(xié)議 占8位,協(xié)議字段指出此數(shù)據(jù)報攜帶的數(shù)據(jù)是使用何種協(xié)議,以便使目的主機的IP層知道應(yīng)將數(shù)據(jù)部分上交給哪
21、個處理過程。 </p><p> (10)首部檢驗和 占16位。這個字段只檢驗數(shù)據(jù)報的首部,但不包括數(shù)據(jù)部分。這是因為數(shù)據(jù)報每經(jīng)過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標(biāo)志、片偏移等都可能發(fā)生變化)。不檢驗數(shù)據(jù)部分可減少計算的工作量。 </p><p> (11)源地址 占32位。 </p><p> (12)目的地址 占3
22、2位。</p><p> IP數(shù)據(jù)報可選部分字段含義:</p><p> IP首部的可變部分就是一個可選字段。選項字段用來支持排錯、測量以及安全等措施,內(nèi)容很豐富。此字段的長度可變,從1個字節(jié)到40個字節(jié)不等,取決于所選擇的項目。某些選項項目只需要1個字節(jié),它只包括1個字節(jié)的選項代碼。但還有些選項需要多個字節(jié),這些選項一個個拼接起來,中間不需要有分隔符,最后用全0的填充字段補齊成為4字
23、節(jié)的整數(shù)倍。</p><p> 2.2 ARP協(xié)議</p><p> ?。ㄒ唬〢RP協(xié)議簡介:</p><p> ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)的縮寫。在局域網(wǎng)中,網(wǎng)絡(luò)中實際傳輸?shù)氖恰皫?,幀里面是有目?biāo)主機的MAC地址的。在以太網(wǎng)中,一個主機要和另一個主機進行直接通信,必須要知道目標(biāo)主機的MAC地址。A
24、RP是通過地址解析協(xié)議獲得的。所謂“地址解析”就是主機在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程。ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進行。</p><p> 硬件類型,ar_hrd(ARPHRD_ETHER)</p><p> 協(xié)議類型,ar_pro(ETHERTYPE_IP)</p><p>
25、硬件地址長度,ar_hln(6)</p><p> 協(xié)議地址長度,ar_pln(4)</p><p> ether_dhost ether_ahost ether_type ar_op arp_sha arp_spa arp_tha arp_tpa</p><p> 6 bytes 6 2
26、 2 2 1 1 2 6 4 6 4</p><p> 以太網(wǎng)首部 ARP首部</p><p> ether_header() arphdr() 以太網(wǎng)ARP字段</p><p> ther_arp()
27、 </p><p> 圖2-3 ARP請求回答格式</p><p> (二)ARP協(xié)議的利用和相關(guān)原理介紹:</p><p><b> 一、交換網(wǎng)絡(luò)的嗅探</b></p><p> ARP協(xié)議并不只在發(fā)送了ARP請求才接收ARP應(yīng)答。當(dāng)計算機接收到ARP應(yīng)答數(shù)據(jù)包的時候,就會對本地的ARP緩存進行更
28、新,將應(yīng)答中的IP和MAC地址存儲在ARP緩存中。因此,在上面的假設(shè)網(wǎng)絡(luò)中,B向A發(fā)送一個自己偽造的ARP應(yīng)答,而這個應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應(yīng)該是CC-CC-CC-CC-CC-CC,這里被偽造了)。當(dāng)A接收到B偽造的ARP應(yīng)答,就會更新本地的ARP緩存,將本地的IP-MAC對應(yīng)表更換為接收到的數(shù)據(jù)格式,由于這一切都是A的系
29、統(tǒng)內(nèi)核自動完成的,A可不知道被偽造了。</p><p> ARP欺騙的主要用途就是進行在交換網(wǎng)絡(luò)中的嗅探。有關(guān)交換網(wǎng)絡(luò)的嗅探不是本文的討論內(nèi)容。</p><p><b> 二、IP地址沖突</b></p><p> 在網(wǎng)絡(luò)連接的時候,如果網(wǎng)絡(luò)中存在相同IP地址的主機的時候,就會報告出IP地址沖突的警告。</p><p&
30、gt; 假設(shè)某主機B規(guī)定IP地址為192.168.0.1,如果它處于開機狀態(tài),那么其他機器A更</p><p> 改IP地址為192.168.0.1就會造成IP地址沖突。其原理就是:主機A在連接網(wǎng)絡(luò)(或更改IP地址)的時候就會向網(wǎng)絡(luò)發(fā)送ARP包廣播自己的IP地址,也就是freearp。如果網(wǎng)絡(luò)中存在相同IP地址的主機B,那么B就會通過ARP來reply該地址,當(dāng)A接收到這個reply后,A就會跳出IP地址沖突
31、的警告,當(dāng)然B也會有警告。</p><p> 因此用ARP欺騙可以來偽造這個ARPreply,從而使目標(biāo)一直遭受IP地址沖突警告的困擾。</p><p> 三、阻止目標(biāo)的數(shù)據(jù)包通過網(wǎng)關(guān)</p><p> 在一個局域網(wǎng)內(nèi)通過網(wǎng)關(guān)上網(wǎng),那么連接外部的計算機上的ARP緩存中就存在網(wǎng)關(guān)IP-MAC對應(yīng)記錄。如果,該記錄被更改,那么該計算機向外發(fā)送的數(shù)據(jù)包總是發(fā)送到了錯
32、誤的網(wǎng)關(guān)硬件地址上,這樣,該計算機就不能夠上網(wǎng)了。</p><p> 這里也主要是通過ARP欺騙進行的。以下兩種辦法達到這樣的目的:</p><p> 1、向目標(biāo)發(fā)送偽造的ARP應(yīng)答數(shù)據(jù)包,其中發(fā)送方的IP地址為網(wǎng)關(guān)的地址,而MAC地址則為一個偽造的地址。當(dāng)目標(biāo)接收到該ARP包,那么就更新自身的ARP緩存。如果該欺騙一直持續(xù)下去,那么目標(biāo)的網(wǎng)關(guān)緩存一直是一個被偽造的錯誤記錄。當(dāng)然,如果
33、有些了解的人查看ARP-a,就知道問題所在了。</p><p> 2、欺騙網(wǎng)關(guān)。向網(wǎng)關(guān)發(fā)送偽造的ARP應(yīng)答數(shù)據(jù)包,其中發(fā)送方的IP地址為目標(biāo)的IP地址,而MAC地址則為一個偽造的地址。這樣,網(wǎng)關(guān)上的目標(biāo)ARP記錄就是一個錯誤的,網(wǎng)關(guān)發(fā)送給目標(biāo)的數(shù)據(jù)報都是使用了錯誤的MAC地址。這種情況下,目標(biāo)能夠發(fā)送數(shù)據(jù)到網(wǎng)關(guān),卻不能接收到網(wǎng)關(guān)的任何數(shù)據(jù)。同時,目標(biāo)自己查看ARP-a卻看不出任何問題來。</p>
34、<p> 四、通過ARP檢測混雜模式節(jié)點</p><p> 在混雜模式中,網(wǎng)卡進行包過濾不同于普通模式。本來在普通模式下,只有本地地址的數(shù)據(jù)包或者廣播(多播等)才會被網(wǎng)卡提交給系統(tǒng)核心,否則的話,這些數(shù)據(jù)包就直接被網(wǎng)卡拋棄?,F(xiàn)在,混合模式讓所有經(jīng)過的數(shù)據(jù)包都傳遞給系統(tǒng)核心,然后被sniffer等程序利用。</p><p> 通過特殊設(shè)計的ARP請求可以用來在一定程度上檢測處
35、于混雜模式的節(jié)點,比如對網(wǎng)絡(luò)中的每個節(jié)點都發(fā)送MAC地址為FF-FF-FF-FF-FF-FE的ARP請求。對于網(wǎng)卡來說這不是一個廣播地址(FF-FF-FF-FF-FF-FF),所以處于普通模式的節(jié)點就會直接拋棄該數(shù)據(jù)包,但是多數(shù)操作系統(tǒng)核心都認(rèn)為這是一個廣播地址,如果有一般的sniffer程序存在,并設(shè)置網(wǎng)卡為混雜模式,那么系統(tǒng)核心就會作出應(yīng)答,這樣就可以判斷這些節(jié)點是否存在嗅探器了。</p><p> 可以查
36、看,很多基于ARP的攻擊都是通過ARP欺騙實現(xiàn)的。至于ARP欺騙的防范,還是盡可能使用靜態(tài)的ARP。對于WIN,使用arp-s來進行靜態(tài)ARP的設(shè)置。當(dāng)然,如果能夠完全使用靜態(tài)的IP+MAC對應(yīng),就更好了,因為靜態(tài)的ARP緩存只是相對的。</p><p> 可以有一些方法來實現(xiàn)ARP欺騙的檢測。設(shè)置一個ARP的嗅探器,其中維護著一個本地網(wǎng)絡(luò)的IP-MAC地址的靜態(tài)對應(yīng)表,查看所有經(jīng)過的ARP數(shù)據(jù),并檢查其中的I
37、P-MAC對應(yīng)關(guān)系,如果捕獲的IP-MAC對應(yīng)關(guān)系和維護的靜態(tài)對應(yīng)關(guān)系對應(yīng)不上,那么就表明是一個欺騙的ARP數(shù)據(jù)包了。</p><p> 3 網(wǎng)絡(luò)嗅探的工作原理與分析</p><p> 3.1 基于winpcap捕獲數(shù)據(jù)的機理</p><p> 運用以太網(wǎng)數(shù)據(jù)捕獲的原理使得信息捕獲系統(tǒng)能夠攔截到我們所要的信息,這是捕獲數(shù)據(jù)包的物理基礎(chǔ)。</p>
38、<p> 在網(wǎng)絡(luò)數(shù)據(jù)包的捕獲過程中,首先,數(shù)據(jù)包捕獲系統(tǒng)必須繞過操作系統(tǒng)的協(xié)議棧來訪問在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,這就要求一部分程序要運行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動交互。這個部分是系統(tǒng)依賴的,在WinPcap 的解決方案里它是由內(nèi)核級的數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序NPF 實現(xiàn)的。WinPcap 開發(fā)小組針對不同版本的Windows 操作系統(tǒng)提供了不同的驅(qū)動。這些驅(qū)動不僅提供了基本的特性,例如抓包和injection;
39、還有更高級的特性,例如可編程的過濾器系統(tǒng)和監(jiān)視引擎等。</p><p> 其次,數(shù)據(jù)包捕獲系統(tǒng)必須有用戶級的程序接口,通過這些接口,用戶程序可以利用內(nèi)核驅(qū)動提供的高級特性。在WinPcap 的解決方案中是由兩個不同的庫:Packet.dll 和Wpcap.dll 庫來實現(xiàn)的。WinPcap 的優(yōu)勢在于提供了一套標(biāo)準(zhǔn)的抓包接口與libpcap 兼容,可使得原來許多UNIX 平臺下的網(wǎng)絡(luò)分析工具快速移植過來便于開發(fā)
40、各種網(wǎng)絡(luò)分析工具,充分考慮了各種性能和效率的優(yōu)化,包括對于NPF 內(nèi)核層次上的過濾器支持, 支持內(nèi)核態(tài)的統(tǒng)計模式, 提供了發(fā)送數(shù)據(jù)包的能力。前者提供了一個底層API, 伴隨著一個獨立于Windows 操作系統(tǒng)的編程接口,這些API 可以直接用來訪問驅(qū)動的函數(shù);后者導(dǎo)出了一組更強大的與libpcap 一致的高層抓包函數(shù)庫(capture primitives)。這些函數(shù)使得WinPcap 在數(shù)據(jù)包的捕獲過程中可以以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)
41、無關(guān)的方式進行。</p><p> 3.2 基于winpcap數(shù)據(jù)包捕獲的過程</p><p> 在利用WinPcap 捕獲分析網(wǎng)絡(luò)數(shù)據(jù)時, 主要是調(diào)用Packet.dll 和Wpcap.dll 中提供的API 函數(shù)進行操作。以下是基于WinPcap 的網(wǎng)絡(luò)數(shù)據(jù)包捕獲流程及相應(yīng)的WinPcap 庫函數(shù)。</p><p><b> 獲取網(wǎng)絡(luò)適配器信息
42、</b></p><p> 利用WinPcap 捕獲數(shù)據(jù)包的第一步是要獲得本地的網(wǎng)絡(luò)適配器(網(wǎng)卡)列表。WinPcap 提供Pcap_findalldevs()和Pcap_findalldev_ex()這兩個函數(shù)來實現(xiàn)些功能,這兩個API 函數(shù)都返回一個pcap_if 結(jié)構(gòu)列表,列表的每項內(nèi)容都含有全面的網(wǎng)卡信息, 尤其是字段名字和含有名字的描述以及有關(guān)驅(qū)動器的易讀信息。</p>&l
43、t;p><b> 設(shè)置并編譯過濾器</b></p><p> WinPcap 使用的過濾規(guī)則兼容Tcpdump 的過濾規(guī)則, 它提供一種高效的方法來捕獲網(wǎng)絡(luò)數(shù)據(jù)包的某些數(shù)據(jù), 且常和系統(tǒng)的捕獲機制相集成。函數(shù)Pcap_compile()和Pcap_setfilter()用來實現(xiàn)過濾數(shù)據(jù)的功能。Pcap_compile()來編譯一個過濾設(shè)備,它通過一個高層的boolean 型變量和字
44、串產(chǎn)生一系列的能夠被底層驅(qū)動所解釋的二進制編碼。boolean 表示語法能夠在這個文件的過濾表示語法中找到。pcap_setfilter()用來聯(lián)系一個在內(nèi)核驅(qū)動上過濾的過濾器,這時所有網(wǎng)絡(luò)數(shù)據(jù)包都將流經(jīng)過濾器,并拷貝到應(yīng)用程序中。</p><p><b> 打開網(wǎng)絡(luò)設(shè)備</b></p><p> 使用函數(shù)Pcap_open()或者Pcap_open_line()
45、。函數(shù)有三個參數(shù)snaplen、promisc、to_ms。snaplen 用于指定要捕獲數(shù)據(jù)包的長度,最大為65535,如果設(shè)定一個值,則捕獲到大于這個設(shè)定值的數(shù)據(jù)時,后面的數(shù)據(jù)會被截斷掉。Promisc 表示是否把網(wǎng)卡設(shè)置為混雜模式,如果是1 表示設(shè)為混雜模式,在通常情況下網(wǎng)卡只接受發(fā)往它的數(shù)據(jù)包而忽略發(fā)往其他主機的數(shù)據(jù)包。但網(wǎng)卡處于混雜模式時它將接收所有的流經(jīng)它的數(shù)據(jù)包,這就意味著在共享介質(zhì)的情況下我們可以捕獲到其它主機的數(shù)據(jù)包;
46、大部分的數(shù)據(jù)包捕獲程序都將混雜模式設(shè)為默認(rèn)。to_ms 參數(shù)指定讀數(shù)據(jù)的超時控制,超時以毫秒計算,當(dāng)在超時時間內(nèi)網(wǎng)卡上沒有數(shù)據(jù)到來時對網(wǎng)卡的讀操作將返回。</p><p><b> 捕獲數(shù)據(jù)包</b></p><p> 一旦網(wǎng)卡被打開,就可以調(diào)用Pcap_next(),Pacp_next_ex()或Pcap_loop()進行數(shù)據(jù)包的捕獲。Pcap_next()和P
47、acp_next_ex()表示捕獲一個可用數(shù)據(jù)包就返回;而Pcap_loop()表示捕獲多個數(shù)據(jù)包,可以循環(huán)捕獲數(shù)據(jù)包,直到出現(xiàn)錯誤為止。這三個函數(shù)都有返回一個指向Pcap_pkthdr 結(jié)構(gòu)的指針,Pcap_next()與Pcap_next_ex()的功能相似,不過后者只在win32 環(huán)境下運行。</p><p><b> 讀取離線數(shù)據(jù)包</b></p><p>
48、 pcap_dump_open()被用來打開一個savefile以供寫入數(shù)據(jù)包。pcap_open_offlin()被用來打開savefile,并用pcap_next()來逐條讀取數(shù)據(jù)包。</p><p> 4 基于Wireshark的網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容解析</p><p><b> 4.1 捕獲數(shù)據(jù)包</b></p><p> 運行W
49、ireshark軟件,點擊,點擊開始如圖:</p><p> 圖4-1 對數(shù)據(jù)包進行捕獲</p><p> 一段時間后,捕獲到網(wǎng)絡(luò)數(shù)據(jù)包,如圖:</p><p> 圖4-2 捕獲到的數(shù)據(jù)包</p><p> 4.2 數(shù)據(jù)包解析</p><p> 運用Wireshark捕獲的數(shù)據(jù)包,如圖</p>
50、;<p> 圖 4-3 捕獲數(shù)據(jù)包</p><p> 如上圖所示,可看到很多捕獲的數(shù)據(jù)。第一列是捕獲數(shù)據(jù)的編號;第二列是捕獲數(shù)據(jù)的相對時間,從開始捕獲算為0.000秒;第三列是源地址,第四列是目的地址;第五列是數(shù)據(jù)包的信息。</p><p> 選中其中7號數(shù)據(jù)包,雙擊,得到整體Wireshark的窗口,主要被分成三部分,如圖:</p><p>
51、; 圖4-4 數(shù)據(jù)幀整體圖</p><p> 上面部分是所有數(shù)據(jù)幀的列表;中間部分是數(shù)據(jù)幀的描述信息;下面部分是幀里面的數(shù)據(jù)。</p><p> 各層數(shù)據(jù)包解析:幀號 時間 源地址 目的地址 &
52、#160; 高層協(xié)議 包內(nèi)信息概況No. Time Source Destination Protocol Info1 0.000000 202.203.44.22
53、5 202.203.208.32 TCP 2764 > http [SYN] Seq=0 Len=0 MSS=1460 源端口>目的端口[請求建立TCP鏈接]</p><p>
54、;<b> 、物理層的數(shù)據(jù)幀:</b></p><p> Frame 1 (62 bytes on wire, 62 bytes captured) // 1號幀,線路62字節(jié),實際捕獲62字節(jié)</p><p> Arrival Time: Jan 21, 2008 15:17:33.910261000
55、60; // 捕獲日期和時間</p><p> [Time delta from previous packet:0.00000 seconds] // 此包與前一包的時間間隔</p><p> [Time since reference or first frame: 0.00 seconds] // 此包與第1幀的間隔時間</p><p>
56、 Frame Number: 1 //
57、0; 幀序號</p><p> Packet Length: 62 bytes //
58、;幀長度</p><p> Capture Length: 62 bytes // 捕獲長度</p&
59、gt;<p> [Frame is marked: False] // 此幀是否做了標(biāo)記:否</p>
60、<p> [Protocols in frame: eth:ip:tcp] // 幀內(nèi)封裝的協(xié)議層次結(jié)構(gòu)</p><p> [Coloring Rule Name: HTTP] &
61、#160; // 用不同顏色染色標(biāo)記的協(xié)議名稱:</p><p> HTTP[Coloring Rule String: http || tcp.port == 80] // 染色顯示規(guī)則的字符串:</p><p> ?。ǘ?shù)據(jù)鏈路層以太
62、網(wǎng)幀頭部信息:</p><p> Ethernet II, Src: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61), Dst: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) // 以太網(wǎng)協(xié)議版本II,源地址:廠名_序號(網(wǎng)卡地址),目的:廠名_序號(網(wǎng)卡地址) </p><p> Destination: Jet
63、cell_e5:1d:0a (00:d0:2b:e5:1d:0a) // 目的:廠名_序號(網(wǎng)卡地址) </p><p> Source: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61) // 源:廠名_序號(網(wǎng)卡地址) </p><p> Type: IP (0x0800)
64、 // 幀內(nèi)封裝的上層協(xié)議類型為IP(十六進制碼0800)</p><p> 互聯(lián)網(wǎng)層IP包頭部信息:</p><p> Internet Protocol, Src: 202.203.44.225 (202.203.44.225), Dst: 202.203.208.32 (202.203.208.32)
65、60; // 互聯(lián)網(wǎng)協(xié)議,源IP地址,目的IP地址Version: 4 互聯(lián)網(wǎng)協(xié)議</p><p> IPv4(IPv4數(shù)據(jù)報字段結(jié)構(gòu)),如圖</p><p> 圖4-5 IP數(shù)字報結(jié)構(gòu)</p><p> Header length: 20 bytes &
66、#160; // IP包頭部長度</p><p> Differentiated Services Field:0x00(DSC
67、P 0x00:Default;ECN:0x00) // 差分服務(wù)字段</p><p> 傳輸層TCP數(shù)據(jù)段頭部信息:</p><p> Transmission Control Protocol, Src Port: 2764 (2764), Dst Port: http (80), Seq: 0, Len: 0
68、 // 傳輸控制協(xié)議TCP的內(nèi)容Source port: 2764 (2764)源端口名稱(端口號)</p><p> Destination port: http (80) &
69、#160; // 目的端口名http(端口號80)</p><p> Sequence number: 0 (relative sequence number) // 序列號(相對序列號)
70、</p><p> Header length: 28 bytes
71、 // 頭部長度</p><p> Flags: 0x02 (SYN) // TCP標(biāo)記字段(本字段是SYN,是請求建立TCP連接)</p><p> Window size: 6553
72、5 // 流量控制的窗口大小</p><p>
73、; Checksum: 0xf73b [correct] // TCP數(shù)據(jù)段的校驗和</p><p> Options: (8 bytes)
74、; // &
75、#160; 可選項</p><p> 4.3 數(shù)據(jù)幀內(nèi)容分析</p><p> 在下圖中Filter的編輯框中輸入ARP,選中其中一個ARP的數(shù)據(jù)幀內(nèi)容解析。如圖:</p><p> 圖4-6 filter篩選出來的ARP數(shù)據(jù)幀</p><p> 選擇第一個幀進行內(nèi)容分析:</p><p>
76、; 這個幀分為三部分,先展開第一部分,如圖:</p><p> 圖4-7 幀的基本信息</p><p> 在上圖中我們看到這個幀的一些基本信息:</p><p> 幀的編號:1(捕獲時的編號)</p><p> 幀的大?。?0字節(jié)。再加上四個字節(jié)的CRC計算在里面,就剛好滿足最小64字節(jié)的要求。</p><p&
77、gt; 幀被捕獲的日期和時間:2012.14.06.58……</p><p> 因為是第一個幀,所以捕獲前一個幀跟第一個幀的時間都為0;</p><p> 幀裝載的協(xié)議:ARP</p><p> 展開幀的第二部分,如圖:</p><p> 圖4-8 幀的網(wǎng)絡(luò)信息</p><p> 目的地址(Destina
78、tion):ff:ff:ff:ff:ff:ff (這是個MAC地址,這個MAC地址是一個廣播地址,就是局域網(wǎng)中的所有計算機都會接收這個數(shù)據(jù)幀)</p><p> 源地址(Source):Compalin_20:49:b6(70:5a:b6:20:49:b6)</p><p> 幀中封裝的協(xié)議類型:0x0806,這個是ARP協(xié)議的類型編號</p><p> Tr
79、ailer:是協(xié)議中填充的數(shù)據(jù),為了保證幀最少有64字節(jié)</p><p> 展開幀的第三部分,如圖:</p><p> 圖4-9 幀的地址信息</p><p><b> 硬件類型:以太網(wǎng)</b></p><p><b> 協(xié)議類型:IP</b></p><p>&l
80、t;b> 硬件大?。?</b></p><p><b> 協(xié)議大?。?</b></p><p> 發(fā)送方MAC地址 Compalin_20:49:b6(70:5a:b6:20:49:b6)</p><p> 發(fā)送方IP地址 10.6.24.94</p><p> 目的MAC地
81、址 Broadcast(ff:ff:ff:ff:ff:ff)</p><p> 目的IP地址 10.6.24.254</p><p> 4.4 ARP協(xié)議作用分析</p><p> 如圖3-6,ARP幀的本機發(fā)出的信息:</p><p> Who has 10.6.24.254 // 本主機向
82、同一個網(wǎng)段內(nèi)各個主機詢問</p><p> Tell 10.6.24.94 // 請求回復(fù)本主機,地址為10.6.24.94</p><p> Broadcast(ff:ff:ff:ff:ff:ff) // 目標(biāo)MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網(wǎng)段內(nèi)的所有主機發(fā)出這樣的詢問:“10.6.24.254的MAC地址是什么</p&
83、gt;<p> Compalin_20:49:b6(70:5a:b6:20:49:b6) // 等到目的主機10.6.24.254收到本主機發(fā)出請求后,發(fā)出目標(biāo)主機地址</p><p> 目標(biāo)主機發(fā)出回復(fù),如圖:</p><p> 圖4-10 目的主機發(fā)送的回復(fù)</p><p> 00:03:of:00:ed:00 // 目的主
84、機回應(yīng)目標(biāo)MAC地址</p><p> 這樣,本主機就知道了目的主機的MAC地址,它就可以向目的主機發(fā)送信息了。同時它還更新了自己的ARP緩存表,下次再向目的主機發(fā)送信息時,直接從ARP緩存表里查找就可以了,這樣雙方就建立了通信。</p><p><b> 5 結(jié)束語</b></p><p> 經(jīng)過兩個星期的課程設(shè)計實習(xí),我有了很大的感受
85、。不同于平時學(xué)習(xí),做作業(yè),課程設(shè)計每個人都有一個自己的題目,完全得靠自己,不能有依賴心理。把平時書本的知識應(yīng)用在了實踐中。</p><p> 通過本次課程設(shè)計,真正加強了我對課本知識的理解,有機會去把課本中的知識運用到實踐中,我了解很多關(guān)于專業(yè)的知識,以前每次學(xué)這些時,總是不知道這些東西具體拿來有什么用,我這才發(fā)現(xiàn),原來身邊有個這么好的工具,而且通過這么些天的研究我知道了關(guān)于更多Wireshark的知識與用途。
86、鞏固了所學(xué)理論,培養(yǎng)了初步的實際工作能力和設(shè)計技術(shù)能力。</p><p> 學(xué)生在學(xué)習(xí)這門課程時,普遍感到計算機網(wǎng)絡(luò)的概念抽象,對其中的分析方法與基本理論不能很好地理解與掌握。因此,如何幫助學(xué)生理解與掌握課程中的基本概念、基本原理、基本分析方法以及綜合應(yīng)用所學(xué)知識解決實際問題的能力,是本課程教學(xué)中所要解決的關(guān)鍵問題。</p><p> Wireshark無疑是一款功能超強的運用軟件,基
87、于它可實現(xiàn)多領(lǐng)域的科學(xué)研究和開發(fā)。在本次課程設(shè)計中,收獲最多的是如何看待問題以及如何解決問題。一個很現(xiàn)實的問題就是搞科研開發(fā),遇到問題是必不可免,關(guān)鍵是如何看待這樣的問題,持怎樣的心態(tài),持怎樣的目的。再就是問題是遇到了,要如何解決以及用怎樣最優(yōu)的方案去處理,都得下心思去思考和摸索。再一個很現(xiàn)實的問題是,要學(xué)會學(xué)習(xí),學(xué)會自學(xué)。畢竟社會日新月異,科技蓬勃發(fā)展,新領(lǐng)域新知識不斷涌現(xiàn),怎么樣才能在社會保持有效的立足,怎樣才能翻弄潮流,面對社會變
88、遷做到運籌帷幄之中呢?在我看來,關(guān)鍵要保持良好心態(tài),保持一種積極永不妥協(xié)永不放棄的信念,不斷進取不斷開拓。</p><p> 在此我要特別感謝我們的指導(dǎo)老師們,還有各位同學(xué)的幫助,你們的教誨讓我受益非淺,我也將更加努力進步學(xué)習(xí)和完善自己。</p><p> 最后向老師和同學(xué)們表示最真誠的謝意。</p><p><b> 參考文獻</b>&
89、lt;/p><p> [1] 雷震甲.計算機網(wǎng)絡(luò)管理[M].第1版.西安:西安電子科技大學(xué)出版社,2006</p><p> [2]雷震甲.計算機網(wǎng)絡(luò)管理及系統(tǒng)開發(fā)[M].第1版.北京:電子工業(yè)出版社,2004</p><p> [3] 謝希仁.計算機網(wǎng)絡(luò)[M].第5版.北京:電子工業(yè)出版社,2009</p><p> [4]蔡學(xué)軍.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機網(wǎng)絡(luò)課程設(shè)計-- 解析ip數(shù)據(jù)包
- 解析arp數(shù)據(jù)包-計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計---網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包
- 計算機網(wǎng)絡(luò)課程設(shè)計---ip數(shù)據(jù)包解析報告
- 計算機網(wǎng)絡(luò)課程設(shè)計tcp數(shù)據(jù)包
- 計算機網(wǎng)絡(luò)課程設(shè)計---監(jiān)控ip數(shù)據(jù)包流量
- 計算機網(wǎng)絡(luò)課程設(shè)計--數(shù)據(jù)包發(fā)送和接受程序的實現(xiàn)
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 《計算機網(wǎng)絡(luò)課程設(shè)計》
- 計算機網(wǎng)絡(luò)課程設(shè)計---網(wǎng)絡(luò)設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計-監(jiān)控ip包流量
- 計算機網(wǎng)絡(luò)課程設(shè)計-- 小型網(wǎng)絡(luò)設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計--網(wǎng)絡(luò)互聯(lián)設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計報告
評論
0/150
提交評論