freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)包截獲技術(shù)與實(shí)現(xiàn)—論文(編輯修改稿)

2025-01-09 00:50 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 NIT(Network Interface Tap), Sock Packet類(lèi)型套接口。 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)沒(méi)有提供內(nèi)置的包 截獲 機(jī)制。它只提供了數(shù)量很少并且功能有限的API調(diào)用。 WinPcap(Windows Packet Capture)是 Win32上的第一個(gè)用來(lái) 截獲 數(shù)據(jù)包的開(kāi)放系統(tǒng)軟件包,它是一種新提出的強(qiáng)有力并且可擴(kuò)展的框架結(jié)構(gòu)。 WinPcap包含了一系列以前系統(tǒng)所沒(méi)有的創(chuàng)新特性。本文 將 對(duì) 目前比較流行的 WinPcap軟件包提供 的截獲 機(jī)制 進(jìn)行簡(jiǎn)單介紹。 WinPcap 數(shù)據(jù) 包截獲機(jī)制 WinPcap的體系結(jié)構(gòu)如圖 5所示 : 圖 5 Winpcap 的體系結(jié)構(gòu) 由 WinPcap體系結(jié)構(gòu)圖可以看出它采用的是分層化的驅(qū)動(dòng)程序模型, 并包含有三個(gè)組件 : 截獲 驅(qū)動(dòng)程序 () () WinPcap(Windows Packet Capture)是由微軟資助的一個(gè)項(xiàng)目,其核心仍是基于 NDIS 第 7 頁(yè) 共 27 頁(yè) 的,但它對(duì) NDIS進(jìn) 行封裝,它是 Windows平臺(tái)下一個(gè)免費(fèi) 、 公共的網(wǎng)絡(luò)訪問(wèn)系統(tǒng),它為 win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力 .它提供了以下的各項(xiàng)功能: 原始數(shù)據(jù)報(bào),包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送 /接收以及相互之間交換的數(shù)據(jù)報(bào) ; ,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報(bào)過(guò)濾掉 ; ; 。 在 Windows NT下 WinPcap包截獲驅(qū)動(dòng)和網(wǎng)卡設(shè)備驅(qū)動(dòng)的交互是通過(guò) NDIS(Network Device Interface Specification)來(lái)實(shí)現(xiàn)的。而且包截獲驅(qū)動(dòng)既與網(wǎng)絡(luò)驅(qū)動(dòng)通信又與用戶應(yīng)用程序通信 ,所以它在 NDIS結(jié)構(gòu)中如同一個(gè)協(xié)議驅(qū)動(dòng),對(duì) WindowsNT操作系統(tǒng)中的 NDIS結(jié)構(gòu)中的高端驅(qū)動(dòng)進(jìn)行編程,這樣編制的程序與上層應(yīng)用程序更容易連接,應(yīng)用程序?qū)︱?qū)動(dòng)設(shè)置的工作也更方便。如圖 6所示: 圖 6 數(shù)據(jù) 包截獲驅(qū) 動(dòng)在 NDIS中所處位置 套接字?jǐn)?shù)據(jù)包截獲機(jī)制 上世紀(jì) 80年代初 ,加利福尼亞大學(xué) Berkeley分校在 UNIX操作系統(tǒng)下實(shí)現(xiàn)了 TCP/IP協(xié)議,它們?yōu)?TCP/IP網(wǎng)絡(luò)通信開(kāi)發(fā)了一個(gè)應(yīng)用程序接口( API),這個(gè) API稱(chēng)為 socket(套接字)接口。 Socket給程序員提供了一個(gè)高層接口,它的出現(xiàn)使得程序員在編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序時(shí)只需要調(diào)用函數(shù),對(duì)網(wǎng)絡(luò)的底層細(xì)節(jié)并不需要精通,因此十分方便。 socket實(shí)質(zhì)上是提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個(gè)端點(diǎn),否則是沒(méi)有辦法建立聯(lián)系并相互通信的 。正如打電話之前,雙方必須擁有各自的電話機(jī)一樣。 在網(wǎng)間 和 網(wǎng)內(nèi)部,每一個(gè) socket用一個(gè)半相關(guān)描述 :( 協(xié)議,本地地址,本地端口 ) 一個(gè)完整的 socket連接則用一個(gè)相關(guān)描述 : ( 協(xié)議,本地地址,本地端口,遠(yuǎn)地地址,遠(yuǎn)地端口 ) 每一個(gè) socket有一個(gè)本地唯一的 socket號(hào),由操作系統(tǒng)分配。 最重要的是, socket是面向客戶 —— 服務(wù)器模型而設(shè)計(jì)出來(lái)的,針對(duì)客戶和服務(wù)器程序提供不同的 socket系統(tǒng)調(diào)用??蛻綦S機(jī)申請(qǐng)一個(gè) socket(相當(dāng)于一個(gè)想打電話的人可以在任何一臺(tái)入網(wǎng)電話上撥號(hào)呼叫 ),系統(tǒng)為之分配一 個(gè) socket號(hào) , 服務(wù)器擁有全局公認(rèn)的socket(在 LINUX中, /etc/services用于存儲(chǔ)全局公認(rèn)的 socket號(hào) ),任何客戶都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求。 下面我們一一給出重要的 socket系統(tǒng)調(diào)用。 第 8 頁(yè) 共 27 頁(yè) 函數(shù) socket()可以創(chuàng)建一個(gè) socket對(duì)象, socket()函數(shù)的原型如下: SOCKET socket(int af, int type, int protocol)。 創(chuàng)建一個(gè) socket實(shí)際上是向系統(tǒng)申請(qǐng)一個(gè)屬于自己的 socket號(hào)。 af(Address Family)俗稱(chēng)套接 字地址族,如表 1所示。 表 1 Linux支持的套接字地址族 協(xié)議族、 socket 類(lèi)型和協(xié)議常用的 組合如表 2所示 : 表 2 系統(tǒng)調(diào)用三參數(shù)組合關(guān)系 指 定本地地址 使用函數(shù) bind()一一 綁定 socket()系統(tǒng)調(diào)用創(chuàng)建 socket時(shí),只指定了相關(guān)五元組的協(xié)議元,沒(méi)有指定其余四元(本地地址、本地端口、遠(yuǎn)地地址、遠(yuǎn)地端口 ),因此需要?jiǎng)e的系統(tǒng)調(diào)用加以補(bǔ)充。 bind()將本地 socket地址 (包括本地主機(jī)地址和本地端口 )與所創(chuàng)建的 socket號(hào)聯(lián)系起來(lái),即將本地 socket地址賦予 socket,以指定本地半相關(guān)。其用于 Linux性能評(píng)估的測(cè)試工具的設(shè)計(jì)與實(shí)現(xiàn)調(diào)用格式為 : bind(sockid, localaddr, addrlen) 總的來(lái)說(shuō),各種 socket地址數(shù)據(jù)結(jié)構(gòu)包括兩大部分 :地址類(lèi)型和協(xié)議地址。網(wǎng)絡(luò)協(xié)議地址又包括主機(jī)地址和端口號(hào)。 監(jiān)聽(tīng) — listen() 對(duì)于服務(wù)器來(lái)說(shuō),在它接受客戶機(jī)的連接之前,首先要監(jiān)聽(tīng)。只有進(jìn)入了監(jiān)聽(tīng)模式,才能接受來(lái)自客戶機(jī)的連接。這一點(diǎn)可以通過(guò) listen()函數(shù)來(lái)實(shí)現(xiàn),它的原型如下: int listen(SOCKET s, int backlog)。 各參數(shù)意義如下: s:進(jìn)行監(jiān)聽(tīng)的套接字。 Backlog:正在等待連接的最大隊(duì)列的長(zhǎng)度。如果 backlog的只為 3,有 4個(gè)客戶機(jī)同時(shí)發(fā)出連接請(qǐng)求,則前 3個(gè)會(huì)放在等待連接隊(duì)列中,最后一個(gè)將被忽略。 套接字地址族 描述 UNIX UNIX域套接字 INET 通過(guò) TCP/IP協(xié)議支持的 Inter地址族 AX25 Amater radio X25 IPX Novell IPX APPLETALK AppleTalk DDP X25 X25 協(xié)議族( af) Socket類(lèi)型( type) 協(xié)議( UNIX表示) 實(shí)際協(xié)議 AF_INET Sock_DGRAM IPPROC_UDP UDP Sock STREAM IPPROC_TCP TCP Sock RAM IPPROC_ICMP ICMP Sock RAM IPPROC_RAM 某低級(jí)協(xié)議 第 9 頁(yè) 共 27 頁(yè) 如果函數(shù)成功,則返回 0;否則返回 SOCKET_ERROR。 當(dāng)客戶機(jī)和服務(wù)器的連接建立起來(lái)后,用函數(shù) send()和 recv()來(lái)進(jìn)行數(shù)據(jù)傳輸。 4 基于原始套接字的設(shè)計(jì)與實(shí)現(xiàn) 原始套 接字是網(wǎng)絡(luò)的基本構(gòu)件 。 套接字 是從 Berkeley Sockets 擴(kuò)展而來(lái)的,其在繼承 Berkeley Sockets 的基礎(chǔ)上,又進(jìn)行了新的擴(kuò)充。這些擴(kuò)充主要是提供了一些異步函數(shù),并增加了符合 WINDOWS消息驅(qū)動(dòng)特性的網(wǎng)絡(luò)事件異步選擇機(jī)制。 套接字 由兩部分組成:開(kāi)發(fā)組件和運(yùn)行組件。開(kāi)發(fā)組件 是指 套接字 實(shí)現(xiàn)文檔、應(yīng)用程序接口 (API)引入庫(kù)和一些頭文件。運(yùn)行組件 是指 套接字 應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(kù) ()。它是可以被命名和尋址的通信端點(diǎn),使用中的每一個(gè)套接字都有其類(lèi)型和一個(gè)與之相連聽(tīng)進(jìn)程。套接字存在通信區(qū)域(通信區(qū)域又稱(chēng)地址簇) 中。套接字只與同一區(qū)域套接字只支持一個(gè)中的套接字交換數(shù)據(jù)(跨區(qū)域時(shí),需要執(zhí)行某和轉(zhuǎn)換進(jìn)程才能實(shí)現(xiàn))。 WINDOWS 中的域 —— 網(wǎng)際域。套接字具有類(lèi)型 , WINDOWS SOCKET 版本支持兩種套接字:流套接字 (SOCK_STREAM)和數(shù)據(jù)報(bào)套接字 (SOCK_DGRAM)。本文使用的 WINDOWS SOCKET 版本 。 數(shù)據(jù)包截獲技術(shù)是開(kāi)發(fā)網(wǎng)絡(luò)管理工具軟件的重要基礎(chǔ)之一,因?yàn)樵S多故障及入侵判斷都是建立在網(wǎng)絡(luò)流量或數(shù)據(jù)的分析基礎(chǔ)上的。具體來(lái)說(shuō),數(shù)據(jù)包截獲可以應(yīng)用 在檢測(cè)網(wǎng)絡(luò)流量,分析網(wǎng)絡(luò)故障;網(wǎng)絡(luò)協(xié)議工作原理及過(guò)程分析;非法數(shù)據(jù)截獲與入侵檢測(cè);網(wǎng)絡(luò)設(shè)備開(kāi)發(fā)。 程序可以設(shè)置針對(duì) IP 地址和協(xié)議類(lèi)別包過(guò)濾器,專(zhuān)門(mén)截獲某一協(xié)議(如TCP,UDP,ICMP)或某一主機(jī)的數(shù)據(jù)包。對(duì)數(shù)據(jù)進(jìn)一步分析可以了解該類(lèi)協(xié)議的各種過(guò)程及協(xié)議內(nèi)容,這在計(jì)算機(jī)網(wǎng)絡(luò)課程的教學(xué)對(duì)網(wǎng)絡(luò)知識(shí)的掌握。另外,也可以對(duì)數(shù)據(jù)包的內(nèi)容進(jìn)行分析與理解,獲得所需的信息。 入侵檢測(cè)是網(wǎng)絡(luò)安全領(lǐng)域一個(gè)重要的研究方向,如請(qǐng)檢測(cè)系統(tǒng)由探測(cè)器、分析器、用戶接口等三個(gè)部分組成,其中探測(cè)器負(fù)責(zé)采集數(shù)據(jù)(如網(wǎng)絡(luò)數(shù)據(jù)報(bào)、日志文件和系統(tǒng) 調(diào)用記錄等);分析器則主要是設(shè)定一系列規(guī)則,對(duì)探測(cè)器送來(lái)的數(shù)據(jù)進(jìn)行分析,用戶接口負(fù)責(zé)與用戶交互。顯然,數(shù)據(jù)包截獲是入侵檢測(cè)系統(tǒng)信息的重要來(lái)源之一。 利用 套接字 開(kāi)發(fā) 數(shù)據(jù)包截獲 程序時(shí) 的一般步驟如圖 7所示 第 10 頁(yè) 共 27 頁(yè) 如圖 7所示, 在利用 套接字 開(kāi)發(fā) 數(shù)據(jù)包截獲程序 時(shí) 的一般步驟是:首先,創(chuàng)建原始套接字,其次將原始套接字綁定到本地網(wǎng)卡地址上;設(shè)置網(wǎng)卡為混雜模式, 這樣網(wǎng)卡就可以收到任何在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包 ;在以上條件下開(kāi)始對(duì)數(shù)據(jù)包進(jìn)行截獲、分析。 數(shù)據(jù)包截獲程序 作為 一種網(wǎng)絡(luò)通訊程序,是通過(guò)對(duì)網(wǎng)卡的編程來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通訊的,對(duì)網(wǎng)卡的編程是使用通常的套接字( socket)方式來(lái)進(jìn)行。但是,通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對(duì)于其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗(yàn)證投遞地址并非自身地址之后將不引起響應(yīng),也就是說(shuō)應(yīng)用程序無(wú)法收取到達(dá)的數(shù)據(jù)包。 而本設(shè)計(jì)的要求通過(guò)數(shù)據(jù)包截獲程序 從網(wǎng)卡接收所有經(jīng)過(guò)它的數(shù)據(jù)包, 因此,在該系統(tǒng)中將網(wǎng)卡以混雜模式替代 通常的正常模式 。 本設(shè)計(jì)中 ,這種對(duì)網(wǎng)卡混雜模式的設(shè)置是通過(guò)原始套 接字( raw socket)來(lái)實(shí)現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報(bào)套接字。在創(chuàng)建了原始套接字后,需要通過(guò) bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過(guò) WSAIoctl ()來(lái)進(jìn)行設(shè)置。 完成以上設(shè)置 就可以開(kāi)始對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行嗅探了,對(duì)數(shù)據(jù)包的獲取仍 像 流式套接字或數(shù)據(jù)報(bào)套接字那樣通過(guò) recv()函數(shù)來(lái)完成。但是與其他兩種套接字不同的是,原始套接字此時(shí) 截獲 到的數(shù)據(jù)包并不僅僅是單純的數(shù)據(jù)信息,而是包含有 IP頭、 TCP頭等信息頭的最原始的數(shù)據(jù)信息,這些信息 保留了它在網(wǎng)絡(luò)傳輸時(shí)的原貌。通過(guò)對(duì)這些在低層傳輸?shù)脑夹畔⒌姆治隹梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。由于這些N 構(gòu)造運(yùn)行環(huán)境,生成輸 出條件 創(chuàng)建原始套接字,并初始化 截獲 IP包 解析 IP 包 輸出 IP 包 信息 停止 截獲 開(kāi)始 結(jié)束 Y 圖 7 數(shù)據(jù)包截獲分析工作流程 第 11 頁(yè) 共 27 頁(yè) 數(shù)據(jù)經(jīng)過(guò)了網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù)其附加的幀頭對(duì)數(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á)傳輸層時(shí),將添加 TCP數(shù)據(jù)段頭,或是 UDP數(shù)據(jù)段頭。其中 UDP數(shù)據(jù)段頭比較簡(jiǎn)單,由一個(gè) 8字節(jié)的頭和數(shù)據(jù)部分組成,具體格式如 表 4所示 : 表 4 UDP數(shù)據(jù)段頭格式 16位 16位 源端口 目的端口 UDP長(zhǎng)度 UDP校驗(yàn)和 對(duì)于此 UDP數(shù)據(jù)段頭的分析在編程實(shí)現(xiàn)中可通過(guò)數(shù)據(jù)結(jié)構(gòu) UDP_HEADER 來(lái)定義: typedef struct _udphdr { unsigned short uh_sport。 //16 位源端口 unsigned short uh_dport。 //16 位目的端口 unsigned short uh_len。 //16 位長(zhǎng)度 unsigned short uh_sum。 //16 位校驗(yàn)和 } UDP_HEADER。 而 TCP 數(shù)據(jù)頭則比較復(fù)雜,以 20 個(gè)固定字節(jié)開(kāi)始,在固定頭后面還可以有一些長(zhǎng)度不固定的可選項(xiàng), 表 5給出 TCP 數(shù)據(jù)段頭的格式組成 : 表 5 TCP數(shù)據(jù)段頭格式 16位 16位 源端口 目的端口 順序號(hào) 確認(rèn)號(hào) TCP頭長(zhǎng) (保留) 7位 URG ACK PSH RST SYN FIN 窗口大小 校驗(yàn)和 緊急指針 可選項(xiàng)( 0或更多的 32位字) 數(shù)據(jù)(可選項(xiàng)) 對(duì)于此 TCP數(shù)據(jù)段頭的分析在編程實(shí)現(xiàn)中可通過(guò)數(shù)據(jù)結(jié)構(gòu) TCP_HEADER 來(lái)定義: typedef struct _tcphdr { USHORT th_sport。 //16 位源端口 USHORT th_dport。 //16 位目的端口 unsigned int th_seq。 //32 位序列號(hào) unsigned int th_ack。 //32 位確認(rèn)號(hào) unsigned char th_lenres。 //4 位首部長(zhǎng)度 /6 位保留字 unsigned char th_flag。 //6 位標(biāo)志位 U
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1