




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、業(yè)設(shè)計(jì)(論文)數(shù)據(jù)包截獲技術(shù)的研究與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:指導(dǎo)教師姓名(職稱):論文提交日期:數(shù)據(jù)包截獲技術(shù)的研究與實(shí)現(xiàn)摘 要隨著網(wǎng)絡(luò)入侵的不斷發(fā)展,網(wǎng)絡(luò)安全變得越來越重要,于是網(wǎng)絡(luò)入侵取證系統(tǒng)的研究也變得日益重要。在網(wǎng)絡(luò)入侵取證系統(tǒng)中,對網(wǎng)絡(luò)上傳送的數(shù)據(jù)包進(jìn)行有效的監(jiān)聽即截獲包是目前取證的關(guān)鍵技術(shù),只有進(jìn)行高效的數(shù)據(jù)截獲,網(wǎng)絡(luò)管理員才能對所截獲的數(shù)據(jù)進(jìn)行一系列的分析,從而進(jìn)行可靠的網(wǎng)絡(luò)安全管理。本文對數(shù)據(jù)包截獲技術(shù)進(jìn)行了簡要的分析,介紹了tcp/ip基礎(chǔ)知識及數(shù)據(jù)包截獲的基本原理,分析了網(wǎng)絡(luò)數(shù)據(jù)包的類型及結(jié)構(gòu),研究了網(wǎng)絡(luò)數(shù)據(jù)包的截獲機(jī)制。利用原始套接字在windows
2、平臺下實(shí)現(xiàn)了一個數(shù)據(jù)包截獲程序,完成了對數(shù)據(jù)包進(jìn)行解包、分析數(shù)據(jù)包的功能,并對程序進(jìn)行了功能測試。關(guān)鍵詞: 網(wǎng)絡(luò)數(shù)據(jù)包;原始套接字;數(shù)據(jù)包截獲;winpcap;tcp/ip;the research and implementation of capture mechanism for network data packagesabstractbecause of the network intrusion of continuously development, the network security becomes more and more important, and the res
3、earch of network intrusion evidence obtaining system is also becoming important day by day. in such systems, the key technique is capturing the data package through the network. with these data, the administrator can carry on a series of analysis and manage the network safety. data packets capture t
4、echnology is analyzed first. it introduces the tcp/ip basic knowledge, and the captures basic principles, analyses the network data packets type and structure, researches how to do it. the raw socket is used to implement a program that can capture the data package under windows platform. it can unpa
5、ck the data package and analysis as well. the program is tested at last.key words: network packet; raw socket; data packet capture; winpcap; tcp/ip;目錄論文總頁數(shù):27頁1引 言11.1本課題的研究意義11.2本文研究的內(nèi)容22 數(shù)據(jù)包截獲的基本原理22.1 tcp/ip通信模型22.1.1基本概念22.1.2 tcp/ip 術(shù)語22.1.3 tcp/ip 體系結(jié)構(gòu)32.1.4 tcp/ip特點(diǎn)42.2數(shù)據(jù)包截獲技術(shù)概述52.2.1局域網(wǎng)的連接方式
6、52.2.2網(wǎng)卡工作模式62.3數(shù)據(jù)包截獲實(shí)現(xiàn)基礎(chǔ)62.4網(wǎng)絡(luò)數(shù)據(jù)截獲63數(shù)據(jù)包截獲機(jī)制的研究73.1 概述73.2 winpcap數(shù)據(jù)包截獲機(jī)制83.3 套接字?jǐn)?shù)據(jù)包截獲機(jī)制94基于原始套接字的設(shè)計(jì)與實(shí)現(xiàn)114.1原始套接字簡介114.2數(shù)據(jù)包截獲技術(shù)需求分析114.3數(shù)據(jù)包截獲程序設(shè)計(jì)流程圖124.4數(shù)據(jù)包截獲程序的具體實(shí)現(xiàn)原理134.5程序設(shè)計(jì)實(shí)現(xiàn)重點(diǎn)154.5.1數(shù)據(jù)包的截獲154.5.2數(shù)據(jù)包的解析175 功能測試225.1截獲udp數(shù)據(jù)包225.2截獲tcp包225.3截獲icmp包23結(jié) 論24參考文獻(xiàn)25致 謝26聲 明27 1引 言internet的發(fā)展與普及產(chǎn)生了巨大的社會
7、與經(jīng)濟(jì)效益,同時也給網(wǎng)絡(luò)管理員們帶來了越來越多的挑戰(zhàn)和煩惱,應(yīng)付無窮的網(wǎng)絡(luò)故障、黑客攻擊及入侵已成為他們每天必須面對的難題。因此,針對具體問題開發(fā)相應(yīng)的網(wǎng)絡(luò)管理工具已成為許多網(wǎng)絡(luò)專家及有識之士的共識。數(shù)據(jù)包的截獲(或稱嗅探)技術(shù)是開發(fā)這些工具的重要基礎(chǔ)之一。網(wǎng)絡(luò)數(shù)據(jù)包的截獲無論是在網(wǎng)絡(luò)安全還是在黑客攻擊方面均扮演很重要的角色。通過使用數(shù)據(jù)包截獲程序可以把網(wǎng)卡設(shè)置為混雜模式,并可以實(shí)現(xiàn)對網(wǎng)絡(luò)上傳輸數(shù)據(jù)包的截獲與分析。此分析結(jié)果可供網(wǎng)絡(luò)安全分析之用,但如為黑客所利用也可以為其發(fā)動進(jìn)一步的攻擊提供有價值的信息??梢?,數(shù)據(jù)包截獲程序?qū)嶋H上是一把雙刃劍。雖然數(shù)據(jù)包截獲技術(shù)被黑客利用后會對網(wǎng)絡(luò)安全構(gòu)成一定
8、的威脅,但數(shù)據(jù)包截獲程序本身的危害并不是很大,主要是用來為其他黑客軟件提供網(wǎng)絡(luò)情報,真正的攻擊主要是用其他黑客軟件來完成。而在網(wǎng)絡(luò)安全方面,網(wǎng)絡(luò)嗅探手段可以有效地探測在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包信息,通過對這些信息的分析利用是有助于網(wǎng)絡(luò)安全維護(hù)的。比如,我們可以截獲到在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包的mac地址、ip地址、協(xié)議類型端口號等細(xì)節(jié)。通過分析這些數(shù)據(jù),網(wǎng)絡(luò)管理員就可以知道網(wǎng)絡(luò)中到底有什么樣的數(shù)據(jù)包在活動了。與此同時,數(shù)據(jù)包截獲應(yīng)用程序不僅僅能用來做一般的嗅探工作外,我們還可以對截獲的數(shù)據(jù)包進(jìn)行更加深入地分析,如黑客可用來分析網(wǎng)絡(luò)中smtp數(shù)據(jù)包,截取用戶的郵件內(nèi)容,也可以用來分析網(wǎng)絡(luò)中的口令信息,并與其
9、它手段結(jié)合起來,入侵到相關(guān)的主機(jī)。對一些已知的網(wǎng)絡(luò)攻擊方法,我們還可以編制專門的分析程序,監(jiān)聽該類型的數(shù)據(jù)包,找到攻擊者,及時保護(hù)網(wǎng)絡(luò)安全。另外,我們也可以用它來監(jiān)測網(wǎng)絡(luò)中的數(shù)據(jù)流量,分析網(wǎng)絡(luò)故障。網(wǎng)絡(luò)包過濾、網(wǎng)絡(luò)日志等也是相關(guān)的應(yīng)用領(lǐng)域??傊钊胙芯繑?shù)據(jù)包截獲技術(shù),可以幫助我們找到網(wǎng)絡(luò)中存在的問題,更好地進(jìn)行網(wǎng)絡(luò)維護(hù)及安全管理。1.1本課題的研究意義計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,極大的改變了人們傳統(tǒng)的生活和工作模式,越來越多的社會經(jīng)濟(jì)活動開始依賴網(wǎng)絡(luò)來完成,可以說計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展已經(jīng)成為現(xiàn)代社會進(jìn)步的一個重要標(biāo)志。但與此同時,計(jì)算機(jī)犯罪、黑客攻擊、病毒入侵等惡性事件也頻頻發(fā)生。因此,信息安全已越
10、來越受到世界各國的重視。本文通過對數(shù)據(jù)包截獲技術(shù)對網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包的截獲與分析功能的進(jìn)一步了解,做到知己知彼。通過數(shù)據(jù)包截獲程序?qū)W(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行截獲和分析,獲取所需要的信息,利用對這些信息進(jìn)行網(wǎng)絡(luò)安全分析。因此,對數(shù)據(jù)包截獲技術(shù)的研究具有重要意義。1.2本文研究的內(nèi)容本文的研究主要圍繞以下幾個方面進(jìn)行。1. 數(shù)據(jù)包截獲的概念及技術(shù)的研究。主要包括數(shù)據(jù)包截獲技術(shù)的概念、數(shù)據(jù)包截獲技術(shù)的工作原理及常見數(shù)據(jù)包截獲技術(shù)的實(shí)現(xiàn)原理等。2. 數(shù)據(jù)包截獲程序的實(shí)現(xiàn)。主要工作包括:給出了一個數(shù)據(jù)包截獲程序的系統(tǒng)框架、數(shù)據(jù)包截獲程序的設(shè)計(jì)、數(shù)據(jù)包的解析等。3. 數(shù)據(jù)包截獲程序的功能測試與評價,得出結(jié)論
11、。2 數(shù)據(jù)包截獲的基本原理2.1 tcp/ip通信模型2.1.1基本概念tcp/ip(transmission control protocol/internet protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)是發(fā)展至今最成功的通信協(xié)議之一。它允許分布在各地安裝著完全不同系統(tǒng)的計(jì)算機(jī)互相通信。它是一個真正的開放系統(tǒng),該協(xié)議族的定義及其多種實(shí)現(xiàn)可以通過多重途徑無償?shù)玫健kS著pc的普及,tcp/ip以其開放的特點(diǎn),成為了internet的基礎(chǔ)。tcp/ip協(xié)議是由iso(internet standards organization,國際化標(biāo)準(zhǔn)組織)制定的一系列網(wǎng)絡(luò)協(xié)議的總稱。tcp/ip通信的基礎(chǔ)是
12、osi(open system internet connection,開放系統(tǒng)互連)osi模型將計(jì)算機(jī)網(wǎng)絡(luò)按功能分為7層,如圖1所示源機(jī) 目標(biāo)機(jī) 7、應(yīng)用層同層之間對等通信 7、應(yīng)用層6、表示層6、表示層信信息流5、會話層信信息流5、會話層4、傳輸層4、傳輸層3、網(wǎng)絡(luò)層3、網(wǎng)絡(luò)層2、數(shù)據(jù)鏈路層2、數(shù)據(jù)鏈路層1、物理鏈路層1、物理鏈路層信 息 流圖1 osi模型2.1.2 tcp/ip 術(shù)語internet 標(biāo)準(zhǔn)使用一套特定的術(shù)語來描述與 tcp/ip 網(wǎng)絡(luò)相關(guān)的網(wǎng)絡(luò)元素和概念。這些術(shù)語是后面各章節(jié)內(nèi)容的基礎(chǔ)。tcp/ip 中的常用術(shù)語和概念如下所述: 節(jié)點(diǎn) 任何運(yùn)行一個 ip 實(shí)現(xiàn)的設(shè)備(包
13、括路由器和主機(jī))。 上層協(xié)議 位于 ip 之上并將 ip 用作其傳輸層的協(xié)議。示例包括 internet 層協(xié)議(如 internet 控制消息協(xié)議 (icmp))和傳輸層協(xié)議(如傳輸控制協(xié)議 (tcp) 和用戶數(shù)據(jù)報協(xié)議 (udp))。(但是,將 tcp 和 udp 用作傳輸層的應(yīng)用層協(xié)議不屬于上層協(xié)議。文件傳輸協(xié)議 ftp 和域名系統(tǒng) dns 屬于這類應(yīng)用層協(xié)議)。有關(guān) tcp/ip 協(xié)議套件各層的詳細(xì)信息,請參見2.1.3“tcp/ip體系結(jié)構(gòu)”和2.1.4“tcp/ip特點(diǎn)”。 地址 在 internet 層分配給一個接口或一組接口的、可用作 ip 數(shù)據(jù)包的源或目標(biāo)的標(biāo)識符。 數(shù)據(jù)包
14、存在于 internet 層的、由 ip 標(biāo)頭和有效負(fù)載構(gòu)成的協(xié)議數(shù)據(jù)單元 (pdu)。2.1.3 tcp/ip 體系結(jié)構(gòu)tcp/ip協(xié)議實(shí)際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中tcp是提供傳輸層服務(wù),而ip則是提供網(wǎng)絡(luò)層服務(wù)。tcp/ip包括以下協(xié)議:(結(jié)構(gòu)如圖2)應(yīng)用層網(wǎng)絡(luò)層傳輸層鏈路層圖2 tcp/ip體系結(jié)構(gòu)ip: 網(wǎng)際協(xié)議(internet protocol) 負(fù)責(zé)主機(jī)間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲。同時為icmp,tcp,udp提供分組發(fā)送服務(wù)。用戶進(jìn)程通常不需要涉及這一層。arp: 地址解析協(xié)議(address resolution protocol)此協(xié)議將網(wǎng)絡(luò)地址映射到
15、硬件地址。rarp:反向地址解析協(xié)議(reverse address resolution protocol)此協(xié)議將硬件地址映射到網(wǎng)絡(luò)地址icmp:網(wǎng)際報文控制協(xié)議(internet control message protocol)此協(xié)議處理信關(guān)和主機(jī)的差錯和傳送控制。tcp: 傳送控制協(xié)議(transmission control protocol)這是一種提供給用戶進(jìn)程的可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進(jìn)程提供虛電路服務(wù),并為數(shù)據(jù)可靠傳輸建立檢查。(注:大多數(shù)網(wǎng)絡(luò)用戶程序使用tcp)udp: 用戶數(shù)據(jù)報協(xié)議(user datagram protocol) 這是提供給用戶進(jìn)程
16、的無連接協(xié)議,用于傳送數(shù)據(jù)而不執(zhí)行正確性檢查。ftp: 文件傳輸協(xié)議(file transfer protocol)允許用戶以文件操作的方式(文件的增、刪、改、查、傳送等)與另一主機(jī)相互通信。smtp:簡單郵件傳送協(xié)議(simple mail transfer protocol)smtp協(xié)議為系統(tǒng)之間傳送電子郵件。elnet:終端協(xié)議(telnet terminal protocol) 允許用戶以虛終端方式訪問遠(yuǎn)程主機(jī)http: 超文本傳輸協(xié)議(hypertext transfer protocol)tftp: 簡單文件傳輸協(xié)議(trivial file transfer protocol)2
17、.1.4 tcp/ip特點(diǎn)tcp/ip協(xié)議的核心部分是傳輸層協(xié)議(tcp、udp),網(wǎng)絡(luò)層協(xié)議(ip)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中實(shí)現(xiàn)。因此用戶一般不涉及。編程時,編程界面有兩種形式:(1)由內(nèi)核心直接提供的系統(tǒng)調(diào)用;(2)使用以庫函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)實(shí)現(xiàn),后者為核外實(shí)現(xiàn)。用戶服務(wù)要通過核外的應(yīng)用程序才能實(shí)現(xiàn),所以要使用套接字(socket)來實(shí)現(xiàn)。圖3是tcp/ip協(xié)議核心與應(yīng)用程序關(guān)系圖。圖3 tcp/ip協(xié)議核心與應(yīng)用程序關(guān)系圖2.2數(shù)據(jù)包截獲技術(shù)概述對前面的tcp/ip協(xié)議有了一定了解,對數(shù)據(jù)包截獲技術(shù)研究就奠定了一定基礎(chǔ)。數(shù)據(jù)包截獲技術(shù)又稱為網(wǎng)絡(luò)嗅探,放置
18、于網(wǎng)絡(luò)節(jié)點(diǎn)處,對網(wǎng)絡(luò)中的數(shù)據(jù)幀進(jìn)行截獲的一種被動監(jiān)聽手段,是一種常用的收集有用數(shù)據(jù)的方法,其基本原理對經(jīng)過網(wǎng)卡的數(shù)據(jù)包進(jìn)行截獲和解碼,從鏈路層協(xié)議開始進(jìn)行解碼分析,一直到應(yīng)用層的協(xié)議,最后獲取數(shù)據(jù)包中需要的內(nèi)容。這些數(shù)據(jù)可以是用戶的賬號和密碼,可以是一些商用機(jī)密數(shù)據(jù)等等。 2.2.1局域網(wǎng)的連接方式局域網(wǎng)的連接設(shè)備主要有hub和交換機(jī)。由于以hub連接的以太網(wǎng)等很多網(wǎng)絡(luò)是基于總線方式的,所以當(dāng)一個機(jī)器給另一個機(jī)器發(fā)送數(shù)據(jù)時,hub會將要傳送的數(shù)據(jù)包發(fā)送至本網(wǎng)段內(nèi)的所有主機(jī)。這種以廣播方式發(fā)送數(shù)據(jù)包的形式使得任何網(wǎng)絡(luò)接收設(shè)備都可以接收到所有正在傳送的通訊數(shù)據(jù),不過通常情況下主機(jī)只將判斷為應(yīng)該接收
19、的數(shù)據(jù)包傳給上層應(yīng)用程序處理。所以在共享hub情況下同一網(wǎng)段的所有機(jī)器的網(wǎng)卡都能接收到數(shù)據(jù)。 而交換機(jī)能記住每個端口的mac地址,該哪個機(jī)器接收就發(fā)往哪個端口,而不是像hub那樣發(fā)給所有的端口,所以交換機(jī)環(huán)境下只有該接收數(shù)據(jù)的機(jī)器的網(wǎng)卡能接收到數(shù)據(jù)。hub的工作模式使得共享決定了同一網(wǎng)段同一時間只能有兩個機(jī)器進(jìn)行數(shù)據(jù)通信,而交換機(jī)在兩個機(jī)器傳輸數(shù)據(jù)的時候其它端口沒有占用,所以其它端口之間也可以同時傳輸。這就是hub與交換機(jī)不同的兩個地方,hub是同一時間只能有一個機(jī)器發(fā)送數(shù)據(jù)并且所有機(jī)器都可以接收,只要不是廣播數(shù)據(jù),交換機(jī)同一時間可以有一對機(jī)器進(jìn)行數(shù)據(jù)傳輸并且數(shù)據(jù)是私有的。 2.2.2網(wǎng)卡工作
20、模式在實(shí)際的系統(tǒng)中,數(shù)據(jù)的收發(fā)由網(wǎng)卡來完成,網(wǎng)卡的主要工作原理是整理計(jì)算機(jī)發(fā)往網(wǎng)線上的數(shù)據(jù),并將數(shù)據(jù)包發(fā)送出去。當(dāng)網(wǎng)卡接收到傳輸來的數(shù)據(jù)時,根據(jù)接收數(shù)據(jù)幀的目的mac地址和網(wǎng)卡驅(qū)動程序設(shè)置的接收模式進(jìn)行判斷,對需要接收的就產(chǎn)生中斷信號送cpu,然后由操作系統(tǒng)調(diào)用驅(qū)動程序進(jìn)行接收;認(rèn)為不該接收的就丟棄不管,所以不該接收的數(shù)據(jù)在網(wǎng)卡處就截?cái)嗔?。對于網(wǎng)卡來說一般有四種接收模式: (1)廣播方式(broadcast):能夠接收網(wǎng)絡(luò)中的廣播信息。 (2)組播方式(multicast):網(wǎng)卡能夠接收組播數(shù)據(jù),也就是一個人發(fā)出的包可以同時被其他多個有資格的人接收,這些人就形成了一個組,他們在組內(nèi)的通信是廣播
21、式的。 (3)直接方式(directory):只有目的網(wǎng)卡才能接收該數(shù)據(jù)。 (4)混雜模式(promiscuous):能夠接收一切通過網(wǎng)卡的數(shù)據(jù)。 網(wǎng)卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀和發(fā)給自己的幀,而網(wǎng)絡(luò)數(shù)據(jù)包截獲程序一般采用第4種模式。 2.3數(shù)據(jù)包截獲實(shí)現(xiàn)基礎(chǔ)以太網(wǎng)數(shù)據(jù)幀是一組比特流,它們在傳輸介質(zhì)上進(jìn)行傳輸,從而實(shí)現(xiàn)信息的傳遞。以太網(wǎng)幀格式符合ieee802.3標(biāo)準(zhǔn),幀中包含目的地址和源地址,目的地址最高位為0是普通地址,為1時是組地址。當(dāng)一個幀送到組地址時,組內(nèi)的所有站點(diǎn)都會收到該幀。如果將它送到一個普通地址,一般情況下,只有一個站點(diǎn)收到這個幀,但是,以太網(wǎng)是以
22、廣播方式發(fā)送幀的,也即這個幀會傳播到其所在網(wǎng)段內(nèi)的所有站點(diǎn),只不過該站點(diǎn)不會接收目的地址不為本機(jī)地址的幀。為了截獲網(wǎng)段內(nèi)的所有幀(以后稱數(shù)據(jù)包),可以設(shè)置以太網(wǎng)卡的工作方式,以太網(wǎng)卡通常有正常模式(normal mode)和混雜模式(promiscuous mode)兩種工作模式。在正常模式下,網(wǎng)卡每接收到一個到達(dá)的數(shù)據(jù)包,就會檢查該數(shù)據(jù)包的目的地址,如果是本機(jī)地址和廣播地址,則將接收數(shù)據(jù)包放入緩沖區(qū),其它目的地址的數(shù)據(jù)包則直接丟掉。因此,正常模式下主機(jī)僅處理以本機(jī)為目的的數(shù)據(jù)包,網(wǎng)卡如果工作在混雜模式,則可以接收本網(wǎng)段內(nèi)傳輸?shù)乃袛?shù)據(jù)包。如果要進(jìn)行數(shù)據(jù)包截獲,必須利用網(wǎng)卡的混雜模式,獲得經(jīng)過
23、本網(wǎng)段的所有數(shù)據(jù)信息。2.4網(wǎng)絡(luò)數(shù)據(jù)截獲網(wǎng)絡(luò)數(shù)據(jù)截獲主要利用系統(tǒng)提供的協(xié)議編程接口來實(shí)現(xiàn),windows sockets是在windows環(huán)境下使用的一套網(wǎng)絡(luò)編程規(guī)范簡稱為winsock。在windows環(huán)境下winsock api依靠套接口(socket)進(jìn)行通訊。通信時,數(shù)據(jù)首先被寫入本地主機(jī)的socket中,然后該socket通過網(wǎng)絡(luò)接口卡(nic)的傳輸介質(zhì)將傳來的信息發(fā)送到另一臺主機(jī)的socket中如圖4所示圖4 網(wǎng)絡(luò)數(shù)據(jù)截獲原理圖套接口有三種類型:流式套接口、數(shù)據(jù)報套接口和原始套接口。前兩種套接字只能訪問到傳輸層。也就是說只能接收自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對于
24、其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗(yàn)證投遞地址并非自身地址之后將引起響應(yīng)。而原始套接口允許對網(wǎng)絡(luò)層協(xié)議如(ip或icmp)進(jìn)行直接訪問,對于流經(jīng)網(wǎng)卡的所有數(shù)據(jù)都可以接收到。原始套接字截獲到的數(shù)據(jù)包并不僅僅是單純的數(shù)據(jù)信息,而是包含有ip頭、tcp頭等信息頭的最原始的數(shù)據(jù)信息,通過對這些在低層傳輸?shù)脑夹畔⒌姆治隹梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。3數(shù)據(jù)包截獲機(jī)制的研究3.1 概述縱觀國內(nèi)外在數(shù)據(jù)包截獲技術(shù)中所使用的包截獲機(jī)制的方法,大致可歸納為兩類:一類是由操作系統(tǒng)內(nèi)核提供的截獲機(jī)制;另一類是由應(yīng)用軟件或系統(tǒng)開發(fā)包通過安裝包截獲驅(qū)動程序提供的截獲機(jī)制,該機(jī)制主要用
25、于win32平臺下的開發(fā)。操作系統(tǒng)提供的截獲機(jī)制主要有四種:bpf(berkeley packet filter),dlpi (data link provider interface),nit(network interface tap), sock packet類型套接口。bpf由基于bsd的unix系統(tǒng)內(nèi)核所實(shí)現(xiàn)。dlpi是solaris(和其它system v unix)系統(tǒng)的內(nèi)嵌子系統(tǒng)。從性能上看, sock packet最弱。windows操作系統(tǒng)沒有提供內(nèi)置的包截獲機(jī)制。它只提供了數(shù)量很少并且功能有限的api調(diào)用。winpcap(windows packet capture)是w
26、in32上的第一個用來截獲數(shù)據(jù)包的開放系統(tǒng)軟件包,它是一種新提出的強(qiáng)有力并且可擴(kuò)展的框架結(jié)構(gòu)。winpcap包含了一系列以前系統(tǒng)所沒有的創(chuàng)新特性。本文將對目前比較流行的winpcap軟件包提供的截獲機(jī)制進(jìn)行簡單介紹。3.2 winpcap數(shù)據(jù)包截獲機(jī)制winpcap的體系結(jié)構(gòu)如圖5所示:圖5 winpcap的體系結(jié)構(gòu)由winpcap體系結(jié)構(gòu)圖可以看出它采用的是分層化的驅(qū)動程序模型,并包含有三個組件:1.內(nèi)核級的數(shù)據(jù)包截獲驅(qū)動程序2.低級的動態(tài)連接庫(packet.dll)3.高級系統(tǒng)無關(guān)庫(wpcap.dll)winpcap(windows packet capture)是由微軟資助的一個項(xiàng)目
27、,其核心仍是基于ndis的,但它對ndis進(jìn)行封裝,它是windows平臺下一個免費(fèi)、公共的網(wǎng)絡(luò)訪問系統(tǒng),它為win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力.它提供了以下的各項(xiàng)功能:1.截獲原始數(shù)據(jù)報,包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送/接收以及相互之間交換的數(shù)據(jù)報;2.在數(shù)據(jù)報發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報過濾掉;3.在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)報;4.收集網(wǎng)絡(luò)通信過程中的統(tǒng)計(jì)信息。在windows nt下winpcap包截獲驅(qū)動和網(wǎng)卡設(shè)備驅(qū)動的交互是通過ndis(network device interface specification)來實(shí)現(xiàn)的。而且包截獲驅(qū)動既與網(wǎng)絡(luò)驅(qū)動通信又與用戶
28、應(yīng)用程序通信,所以它在ndis結(jié)構(gòu)中如同一個協(xié)議驅(qū)動,對windowsnt操作系統(tǒng)中的ndis結(jié)構(gòu)中的高端驅(qū)動進(jìn)行編程,這樣編制的程序與上層應(yīng)用程序更容易連接,應(yīng)用程序?qū)︱?qū)動設(shè)置的工作也更方便。如圖6所示:圖6 數(shù)據(jù)包截獲驅(qū)動在ndis中所處位置3.3 套接字?jǐn)?shù)據(jù)包截獲機(jī)制上世紀(jì)80年代初,加利福尼亞大學(xué)berkeley分校在unix操作系統(tǒng)下實(shí)現(xiàn)了tcp/ip協(xié)議,它們?yōu)閠cp/ip網(wǎng)絡(luò)通信開發(fā)了一個應(yīng)用程序接口(api),這個api稱為socket(套接字)接口。socket給程序員提供了一個高層接口,它的出現(xiàn)使得程序員在編寫網(wǎng)絡(luò)應(yīng)用程序時只需要調(diào)用函數(shù),對網(wǎng)絡(luò)的底層細(xì)節(jié)并不需要精通,因此
29、十分方便。socket實(shí)質(zhì)上是提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個端點(diǎn),否則是沒有辦法建立聯(lián)系并相互通信的。正如打電話之前,雙方必須擁有各自的電話機(jī)一樣。在網(wǎng)間和網(wǎng)內(nèi)部,每一個socket用一個半相關(guān)描述:(協(xié)議,本地地址,本地端口)一個完整的socket連接則用一個相關(guān)描述: (協(xié)議,本地地址,本地端口,遠(yuǎn)地地址,遠(yuǎn)地端口)每一個socket有一個本地唯一的socket號,由操作系統(tǒng)分配。最重要的是,socket是面向客戶服務(wù)器模型而設(shè)計(jì)出來的,針對客戶和服務(wù)器程序提供不同的socket系統(tǒng)調(diào)用??蛻綦S機(jī)申請一個socket(相當(dāng)于一個想打電話的人可以在任何一臺入網(wǎng)電
30、話上撥號呼叫),系統(tǒng)為之分配一個socket號,服務(wù)器擁有全局公認(rèn)的socket(在linux中,/etc/services用于存儲全局公認(rèn)的socket號),任何客戶都可以向它發(fā)出連接請求和信息請求。下面我們一一給出重要的socket系統(tǒng)調(diào)用。函數(shù)socket()可以創(chuàng)建一個socket對象,socket()函數(shù)的原型如下:socket socket(int af, int type, int protocol);創(chuàng)建一個socket實(shí)際上是向系統(tǒng)申請一個屬于自己的socket號。af(address family)俗稱套接字地址族,如表1所示。表1 linux支持的套接字地址族套接字地址族
31、描述unixunix域套接字inet通過tcp/ip協(xié)議支持的internet地址族ax25amater radio x25ipxnovell ipxappletalkappletalk ddpx25x25協(xié)議族、socket類型和協(xié)議常用的組合如表2所示:表2 系統(tǒng)調(diào)用三參數(shù)組合關(guān)系協(xié)議族(af)socket類型(type)協(xié)議(unix表示)實(shí)際協(xié)議af_inetsock_dgramipproc_udpudpsock streamipproc_tcptcpsock ramipproc_icmpicmpsock ramipproc_ram某低級協(xié)議指定本地地址使用函數(shù)bind()一一綁定so
32、cket()系統(tǒng)調(diào)用創(chuàng)建socket時,只指定了相關(guān)五元組的協(xié)議元,沒有指定其余四元(本地地址、本地端口、遠(yuǎn)地地址、遠(yuǎn)地端口),因此需要別的系統(tǒng)調(diào)用加以補(bǔ)充。bind()將本地socket地址(包括本地主機(jī)地址和本地端口)與所創(chuàng)建的socket號聯(lián)系起來,即將本地socket地址賦予socket,以指定本地半相關(guān)。其用于linux性能評估的測試工具的設(shè)計(jì)與實(shí)現(xiàn)調(diào)用格式為: bind(sockid, localaddr, addrlen)總的來說,各種socket地址數(shù)據(jù)結(jié)構(gòu)包括兩大部分:地址類型和協(xié)議地址。網(wǎng)絡(luò)協(xié)議地址又包括主機(jī)地址和端口號。監(jiān)聽 listen()對于服務(wù)器來說,在它接受客戶機(jī)
33、的連接之前,首先要監(jiān)聽。只有進(jìn)入了監(jiān)聽模式,才能接受來自客戶機(jī)的連接。這一點(diǎn)可以通過listen()函數(shù)來實(shí)現(xiàn),它的原型如下:int listen(socket s, int backlog);各參數(shù)意義如下:s:進(jìn)行監(jiān)聽的套接字。backlog:正在等待連接的最大隊(duì)列的長度。如果backlog的只為3,有4個客戶機(jī)同時發(fā)出連接請求,則前3個會放在等待連接隊(duì)列中,最后一個將被忽略。如果函數(shù)成功,則返回0;否則返回socket_error。當(dāng)客戶機(jī)和服務(wù)器的連接建立起來后,用函數(shù)send()和recv()來進(jìn)行數(shù)據(jù)傳輸。4基于原始套接字的設(shè)計(jì)與實(shí)現(xiàn)4.1原始套接字簡介 原始套接字是網(wǎng)絡(luò)的基本構(gòu)件
34、。套接字是從 berkeley sockets 擴(kuò)展而來的,其在繼承 berkeley sockets 的基礎(chǔ)上,又進(jìn)行了新的擴(kuò)充。這些擴(kuò)充主要是提供了一些異步函數(shù),并增加了符合windows消息驅(qū)動特性的網(wǎng)絡(luò)事件異步選擇機(jī)制。套接字由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是指套接字實(shí)現(xiàn)文檔、應(yīng)用程序接口(api)引入庫和一些頭文件。運(yùn)行組件是指套接字應(yīng)用程序接口的動態(tài)鏈接庫(winsock.dll)。它是可以被命名和尋址的通信端點(diǎn),使用中的每一個套接字都有其類型和一個與之相連聽進(jìn)程。套接字存在通信區(qū)域(通信區(qū)域又稱地址簇)中。套接字只與同一區(qū)域套接字只支持一個中的套接字交換數(shù)據(jù)(跨區(qū)域時,
35、需要執(zhí)行某和轉(zhuǎn)換進(jìn)程才能實(shí)現(xiàn))。windows 中的域網(wǎng)際域。套接字具有類型,windows socket 2.1 版本支持兩種套接字:流套接字(sock_stream)和數(shù)據(jù)報套接字(sock_dgram)。本文使用的windows socket 2.1 版本。4.2數(shù)據(jù)包截獲技術(shù)需求分析 數(shù)據(jù)包截獲技術(shù)是開發(fā)網(wǎng)絡(luò)管理工具軟件的重要基礎(chǔ)之一,因?yàn)樵S多故障及入侵判斷都是建立在網(wǎng)絡(luò)流量或數(shù)據(jù)的分析基礎(chǔ)上的。具體來說,數(shù)據(jù)包截獲可以應(yīng)用在檢測網(wǎng)絡(luò)流量,分析網(wǎng)絡(luò)故障;網(wǎng)絡(luò)協(xié)議工作原理及過程分析;非法數(shù)據(jù)截獲與入侵檢測;網(wǎng)絡(luò)設(shè)備開發(fā)。程序可以設(shè)置針對ip地址和協(xié)議類別包過濾器,專門截獲某一協(xié)議(如tc
36、p,udp,icmp)或某一主機(jī)的數(shù)據(jù)包。對數(shù)據(jù)進(jìn)一步分析可以了解該類協(xié)議的各種過程及協(xié)議內(nèi)容,這在計(jì)算機(jī)網(wǎng)絡(luò)課程的教學(xué)對網(wǎng)絡(luò)知識的掌握。另外,也可以對數(shù)據(jù)包的內(nèi)容進(jìn)行分析與理解,獲得所需的信息。入侵檢測是網(wǎng)絡(luò)安全領(lǐng)域一個重要的研究方向,如請檢測系統(tǒng)由探測器、分析器、用戶接口等三個部分組成,其中探測器負(fù)責(zé)采集數(shù)據(jù)(如網(wǎng)絡(luò)數(shù)據(jù)報、日志文件和系統(tǒng)調(diào)用記錄等);分析器則主要是設(shè)定一系列規(guī)則,對探測器送來的數(shù)據(jù)進(jìn)行分析,用戶接口負(fù)責(zé)與用戶交互。顯然,數(shù)據(jù)包截獲是入侵檢測系統(tǒng)信息的重要來源之一。4.3數(shù)據(jù)包截獲程序設(shè)計(jì)流程圖利用套接字開發(fā)數(shù)據(jù)包截獲程序時的一般步驟如圖7所示n構(gòu)造運(yùn)行環(huán)境,生成輸出條件創(chuàng)
37、建原始套接字,并初始化截獲ip包解析ip包輸出ip包信息停止截獲開始結(jié)束y圖7 數(shù)據(jù)包截獲分析工作流程如圖7所示,在利用套接字開發(fā)數(shù)據(jù)包截獲程序時的一般步驟是:首先,創(chuàng)建原始套接字,其次將原始套接字綁定到本地網(wǎng)卡地址上;設(shè)置網(wǎng)卡為混雜模式,這樣網(wǎng)卡就可以收到任何在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包;在以上條件下開始對數(shù)據(jù)包進(jìn)行截獲、分析。4.4數(shù)據(jù)包截獲程序的具體實(shí)現(xiàn)原理數(shù)據(jù)包截獲程序作為一種網(wǎng)絡(luò)通訊程序,是通過對網(wǎng)卡的編程來實(shí)現(xiàn)網(wǎng)絡(luò)通訊的,對網(wǎng)卡的編程是使用通常的套接字(socket)方式來進(jìn)行。但是,通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對于其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)
38、絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗(yàn)證投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法收取到達(dá)的數(shù)據(jù)包。而本設(shè)計(jì)的要求通過數(shù)據(jù)包截獲程序從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,因此,在該系統(tǒng)中將網(wǎng)卡以混雜模式替代通常的正常模式。 本設(shè)計(jì)中,這種對網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(raw socket)來實(shí)現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建了原始套接字后,需要通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過wsaioctl ()來進(jìn)行設(shè)置。完成以上設(shè)置就可以開始對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行嗅探了,對數(shù)據(jù)包的獲取仍像流式套接
39、字或數(shù)據(jù)報套接字那樣通過recv()函數(shù)來完成。但是與其他兩種套接字不同的是,原始套接字此時截獲到的數(shù)據(jù)包并不僅僅是單純的數(shù)據(jù)信息,而是包含有 ip頭、 tcp頭等信息頭的最原始的數(shù)據(jù)信息,這些信息保留了它在網(wǎng)絡(luò)傳輸時的原貌。通過對這些在低層傳輸?shù)脑夹畔⒌姆治隹梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。由于這些數(shù)據(jù)經(jīng)過了網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù)其附加的幀頭對數(shù)據(jù)包進(jìn)行分析。下面先給出結(jié)構(gòu),數(shù)據(jù)包的總體結(jié)構(gòu)如表3所示:表3 數(shù)據(jù)包總體結(jié)構(gòu)數(shù)據(jù)包ip頭tcp頭(或其他信息頭)數(shù)據(jù)數(shù)據(jù)在從應(yīng)用層到達(dá)傳輸層時,將添加tcp數(shù)據(jù)段頭,或是udp數(shù)據(jù)段頭。其中udp數(shù)據(jù)段頭比較簡單,由一個8字節(jié)的頭和數(shù)據(jù)部分
40、組成,具體格式如表4所示: 表4 udp數(shù)據(jù)段頭格式16位16位源端口目的端口udp長度udp校驗(yàn)和對于此udp數(shù)據(jù)段頭的分析在編程實(shí)現(xiàn)中可通過數(shù)據(jù)結(jié)構(gòu)udp_header來定義:typedef struct _udphdr unsigned short uh_sport;/16位源端口 unsigned short uh_dport;/16位目的端口 unsigned short uh_len;/16位長度 unsigned short uh_sum;/16位校驗(yàn)和 udp_header;而tcp數(shù)據(jù)頭則比較復(fù)雜,以20個固定字節(jié)開始,在固定頭后面還可以有一些長度不固定的可選項(xiàng),表5給出tc
41、p數(shù)據(jù)段頭的格式組成:表5 tcp數(shù)據(jù)段頭格式16位16位源端口目的端口順序號確認(rèn)號tcp頭長(保留)7位urgackpshrstsynfin窗口大小校驗(yàn)和緊急指針可選項(xiàng)(0或更多的32位字)數(shù)據(jù)(可選項(xiàng))對于此tcp數(shù)據(jù)段頭的分析在編程實(shí)現(xiàn)中可通過數(shù)據(jù)結(jié)構(gòu)tcp_header來定義:typedef struct _tcphdrushort th_sport;/16位源端口ushort th_dport;/16位目的端口unsigned int th_seq;/32位序列號unsigned int th_ack;/32位確認(rèn)號unsigned char th_lenres; /4位首部長度/6
42、位保留字unsigned char th_flag;/6位標(biāo)志位ushort th_win;/16位窗口大小ushort th_sum;/16位校驗(yàn)和ushort th_urp;/16位緊急數(shù)據(jù)偏移量tcp_header;在網(wǎng)絡(luò)層,還要給tcp數(shù)據(jù)包添加一個ip數(shù)據(jù)段頭以組成ip數(shù)據(jù)報。ip數(shù)據(jù)段頭格式如表6所示:表6 ip數(shù)據(jù)段頭格式16位16位版本ihl服務(wù)類型總長標(biāo)識標(biāo)志分段偏移生命期協(xié)議頭校驗(yàn)和源地址目的地址選項(xiàng)(0或更多)同樣,在實(shí)際編程中也需要通過一個數(shù)據(jù)結(jié)構(gòu)來表示此ip數(shù)據(jù)段頭,下面給出此數(shù)據(jù)結(jié)構(gòu)的定義: typedef struct _iphdr unsigned charh_
43、lenver;/4位首部長度+4位ip版本號unsigned chartos; /8位服務(wù)類型tosunsigned shorttotal_len;/16位總長度(字節(jié))unsigned shortident;/16位標(biāo)識unsigned shortfrag_and_flags;/3位標(biāo)志位unsigned charttl; /8位生存時間 ttlunsigned charproto;/8位協(xié)議 (tcp, udp 或其他)unsigned shortchecksum;/16位ip首部校驗(yàn)和unsigned intsourceip; /32位源ip地址unsigned intdestip; /
44、32位目的ip地址ip_header;4.5程序設(shè)計(jì)實(shí)現(xiàn)重點(diǎn)在此數(shù)據(jù)包截獲程序設(shè)計(jì)中,重點(diǎn)在于設(shè)計(jì)一個截獲、分析程序,用于研究是數(shù)據(jù)包的截獲與分析技術(shù)的實(shí)現(xiàn),這二點(diǎn)是此設(shè)計(jì)的重點(diǎn)。就此設(shè)計(jì)的數(shù)據(jù)包截獲程序來說,在截獲到數(shù)據(jù)包之后,一層一層對數(shù)據(jù)包進(jìn)行解析,最后分析出數(shù)據(jù)包里面包含的數(shù)據(jù)信息?,F(xiàn)我們詳細(xì)闡述截獲數(shù)據(jù)包與分析數(shù)據(jù)包的情況。4.5.1數(shù)據(jù)包的截獲在截獲數(shù)據(jù)包前,首先對原始套接字進(jìn)行設(shè)置,代碼如下:/初始化socketwsadata wsadata;ierrorcode = wsastartup(makeword(2,1),&wsadata);checksockerror(ierror
45、code, wsastartup);sockraw = socket(af_inet , sock_raw , ipproto_ip);/創(chuàng)建套接字checksockerror(sockraw, socket);/獲取本機(jī)ip地址char far namemax_hostname_lan;ierrorcode = gethostname(name, max_hostname_lan);checksockerror(ierrorcode, gethostname);struct hostent far * phostent;phostent = (struct hostent * )malloc
46、(sizeof(struct hostent);phostent = gethostbyname(name);/填充sockaddr_in結(jié)構(gòu)的內(nèi)容sockaddr_in sa;sa.sin_family = af_inet;/ internet協(xié)議簇sa.sin_port = htons(6000);/ socket端口號(端口號可以隨便改,但與系統(tǒng)不能沖突)memcpy(&sa.sin_addr.s_un.s_addr, phostent-h_addr_list0, phostent-h_length);free(phostent);ierrorcode = bind(sockraw, (
47、psockaddr)&sa, sizeof(sa);/ 把原始套接字sockraw綁定到本地網(wǎng)卡地址上/checksockerror(ierrorcode, bind);/設(shè)置sock_raw為sio_rcvall(即把網(wǎng)卡設(shè)置為混雜模式),以便接收所有的ip包dword dwbufferlen10 ;dword dwbufferinlen = 1 ;dword dwbytesreturned = 0 ;ierrorcode=wsaioctl(sockraw, sio_rcvall,&dwbufferinlen, sizeof(dwbufferinlen), &dwbufferlen, siz
48、eof(dwbufferlen),&dwbytesreturned , null , null );/checksockerror(ierrorcode, ioctl);前面的工作基本上都是對原始套接字進(jìn)行設(shè)置,在將原始套接字設(shè)置完畢,使其能按預(yù)期目的工作時,就可以通過recv()函數(shù)從網(wǎng)卡接收數(shù)據(jù)包了,接收到的原始數(shù)據(jù)包存放在緩存區(qū)中,并將參數(shù)提交給decodeippack函數(shù)進(jìn)行解包,具體的實(shí)現(xiàn)代碼如下:memset(recvbuf, 0, sizeof(recvbuf);ierrorcode = recv(sockraw, recvbuf, sizeof(recvbuf), 0);che
49、cksockerror(ierrorcode, recv);ierrorcode = decodeippack(recvbuf, ierrorcode);checksockerror(ierrorcode, decode);4.5.2數(shù)據(jù)包的解析數(shù)據(jù)包被截獲后然后就可以根據(jù)前面對ip數(shù)據(jù)段頭、tcp數(shù)據(jù)段頭的結(jié)構(gòu)描述而對截獲的數(shù)據(jù)包進(jìn)行分析。這是數(shù)據(jù)包截獲程序的一個重要的組成部分。數(shù)據(jù)包包頭分析數(shù)據(jù)包截獲模塊tcp解包函數(shù)icmp解包函數(shù)udp解包函數(shù)ipproto_icmpipproto_udpipproto_tcp判斷協(xié)議類型如圖8所示:圖8數(shù)據(jù)包解析流程圖8所示為數(shù)據(jù)包的解析模塊,該模塊
50、對截獲的數(shù)據(jù)包進(jìn)行拆包分析,根據(jù)不同的協(xié)議類型分析其ip地址,數(shù)據(jù)包大小,端口號等,具體代碼實(shí)現(xiàn)如下:int decodeippack(char *buf, int ibufsize)ip_header *pipheader;sockaddr_in sasource, sadest;pipheader = (ip_header *)buf;/協(xié)議甄別iprotocol = pipheader-proto;strncpy(szprotocol, checkprotocol(iprotocol), max_proto_text_len);if(iprotocol=ipproto_tcp) & (!
51、paramtcp) return true;if(iprotocol=ipproto_udp) & (!paramudp) return true;if(iprotocol=ipproto_icmp) & (!paramicmp) return true;/源地址sasource.sin_addr.s_addr = pipheader-sourceip;strncpy(szsourceip, inet_ntoa(sasource.sin_addr), max_addr_len);if (strfromipfilter)if (strcmp(strfromipfilter,szsourceip)
52、 return true;/目的地址sadest.sin_addr.s_addr = pipheader-destip;strncpy(szdestip, inet_ntoa(sadest.sin_addr), max_addr_len);if (strdestipfilter)if (strcmp(strdestipfilter,szdestip) return true;ittl = pipheader-ttl;/計(jì)算ip首部的長度int iiphlen = sizeof(unsigned long) * (pipheader-h_lenver & 0xf);/根據(jù)協(xié)議類型分別調(diào)用相應(yīng)的函數(shù)switch(iprotocol)case ipproto_tcp:decodetcppack(buf+iiphlen, ibufsize);break;case ipproto_udp:decodeudppack(buf+iiphlen, ibufsize);break;case ipproto_icmp:decodeicmppack(buf+iiphlen, ibufsize);break;default:break;tcp解包函數(shù)int decodetcppack(char * tcpbuf, int ibufsize)tcp_header * ptcpheader
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度臨時保安服務(wù)合同-活動期間安全保衛(wèi)
- 2025年度知識產(chǎn)權(quán)質(zhì)押合同終止及質(zhì)權(quán)實(shí)現(xiàn)協(xié)議
- 產(chǎn)品發(fā)布營銷策略規(guī)劃
- 影視制作發(fā)行合作框架協(xié)議
- 智能能源管理系統(tǒng)建設(shè)投資協(xié)議
- 家具企業(yè)家具設(shè)計(jì)與制造預(yù)案
- 哈他瑜伽介紹課件:哈他瑜伽-身心平衡的藝術(shù)
- 小學(xué)生心理輔導(dǎo)觀后感
- 網(wǎng)絡(luò)購物平臺合作運(yùn)營協(xié)議書
- 娛樂項(xiàng)目節(jié)目制作授權(quán)協(xié)議
- 電力企業(yè)發(fā)電企業(yè)設(shè)備點(diǎn)檢定修培訓(xùn)教材
- 化學(xué)-浙江省首考2025年1月普通高等學(xué)校招生全國統(tǒng)一考試試題和答案
- 四川省成都市2024-2025學(xué)年高一上學(xué)期期末考試歷史試題(含答案)
- 2025年湖北中煙工業(yè)限責(zé)任公司招聘筆試高頻重點(diǎn)提升(共500題)附帶答案詳解
- 9生物與非生物課件-四年級下冊科學(xué)人教鄂教版
- 醫(yī)囑或處方的督導(dǎo)檢查、總結(jié)、反饋及改進(jìn)措施
- 2023年度行政事業(yè)單位內(nèi)部控制報告編報講解課件
- 品管圈PDCA案例-介入中心提高手術(shù)患者交接記錄書寫合格率醫(yī)院品質(zhì)管理成果匯報
- 《土木工程概論》-第3講-土木工程材料-課件
- 《現(xiàn)代漢語》課件-詞義的性質(zhì)和構(gòu)成
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項(xiàng)規(guī)程
評論
0/150
提交評論