亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux環(huán)境下基于Raw socket技術(shù)的多線程追擊抓包法

        2012-12-31 00:00:00喻曦文靜華

        摘要:抓包分析工具一直是維護(hù)網(wǎng)絡(luò)安全分析網(wǎng)絡(luò)協(xié)議必備的工具,但隨著網(wǎng)絡(luò)硬件的發(fā)展,網(wǎng)絡(luò)速度得到大幅提高,從以前的10MHUB到現(xiàn)在的千兆交換機(jī),基于libpcap的抓包分析工具丟包率越來越大,如何使抓包工具支持百兆千兆網(wǎng)卡交換機(jī)的同時(shí)減少丟包率,對(duì)網(wǎng)絡(luò)安全的維護(hù)有很大作用。本文通過比較傳統(tǒng)Lipcap抓包技術(shù),發(fā)現(xiàn)所存在的弊端,認(rèn)真研究raw socket,并通過改進(jìn)多線程對(duì)共享數(shù)據(jù)的訪問方式來減少處理線程對(duì)抓包線程的影響,提高抓包的速度并達(dá)到減少丟包率的目的。

        關(guān)鍵詞:抓包;多線程;Raw socket技術(shù);共享數(shù)據(jù)

        中圖分類號(hào):TP302.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 17-0000-02

        1 引言

        隨著信息技術(shù)的快速發(fā)展,網(wǎng)絡(luò)已成為信息交換的主要手段,一些網(wǎng)絡(luò)支付業(yè)務(wù)地興起對(duì)網(wǎng)絡(luò)安全提出了較高的要求。同時(shí),黑客對(duì)網(wǎng)絡(luò)的攻擊從未停止,網(wǎng)絡(luò)安全問題日趨嚴(yán)峻。因此,如何加強(qiáng)網(wǎng)絡(luò)的安全維護(hù),使抓包工具在支持百兆千兆網(wǎng)卡交換機(jī)的同時(shí)減少丟包率,對(duì)于保障網(wǎng)絡(luò)安全有重要的現(xiàn)實(shí)意義。本文通過比較傳統(tǒng)的lipcap抓包技術(shù),找出所存在的弊端,認(rèn)真研究raw socket,并通過改進(jìn)多線程對(duì)共享數(shù)據(jù)的訪問方式,減少處理包線程對(duì)抓包線程的影響來提高抓包的速度,從而達(dá)到減少丟包率的目的。

        2 傳統(tǒng)的libpcap抓包技術(shù)的弊端

        Libpcap是unix / linux平臺(tái)下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)包,提供了系統(tǒng)獨(dú)立的用戶級(jí)別網(wǎng)絡(luò)數(shù)據(jù)包捕獲接口,可在絕大多數(shù)類unix平臺(tái)下工作。但是由于它沒有提供設(shè)置抓包緩存大小的接口,只有32K的內(nèi)核緩存和32K的用戶緩存,存在一定的局限性。每次調(diào)用系統(tǒng)進(jìn)行讀寫時(shí),只能存取32K的數(shù)據(jù),在高速網(wǎng)絡(luò)中,調(diào)用系統(tǒng)讀寫的次數(shù)顯著增多,丟包率也相應(yīng)增高,因此不能滿足大數(shù)據(jù)量的高速網(wǎng)絡(luò)環(huán)境。

        Libpcap-mmap是libpcap的改進(jìn)版本,它提供了一個(gè)大小可配置的循環(huán)緩沖器,并采用了mmap系統(tǒng)調(diào)用,完成數(shù)據(jù)包從內(nèi)核到用戶層的傳遞,允許用戶程序和內(nèi)核程序同時(shí)對(duì)該循環(huán)緩沖器的不同數(shù)據(jù)區(qū)域進(jìn)行直接的讀取,但是緩沖器必須在抓包開始就創(chuàng)建,耗費(fèi)空間,當(dāng)緩沖器一個(gè)為滿另一個(gè)為空時(shí),還要對(duì)兩個(gè)緩沖器做調(diào)換操作,勢必會(huì)影響它的性能。所以一般 linux下的抓包工具都有很嚴(yán)重的丟包問題

        3 基于Raw socket多線程設(shè)計(jì)思想及改進(jìn)

        3.1 Raw socket介紹

        Raw socket(原始套接字)可以接收本機(jī)網(wǎng)卡上的數(shù)據(jù)幀或數(shù)據(jù)包,對(duì)監(jiān)聽網(wǎng)絡(luò)的流量和分析是很有作用的。因其可以自如地控制系統(tǒng)下的多種協(xié)議,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)底層中傳輸機(jī)制的控制,所以應(yīng)用原始套接字來操縱網(wǎng)絡(luò)層和傳輸層應(yīng)用。

        3.2 多線程設(shè)計(jì)思想及改進(jìn)

        網(wǎng)絡(luò)中的抓包程序性能,很大程度上取決于抓包線程保存包的速度,因此要盡量減少從Raw socket中讀包并保存的線程的工作量。在此我們采用多線程技術(shù),將抓包與處理包分開,抓包線程將包保存到一個(gè)位置,處理線程到指定位置去處理包,此時(shí)抓包線程和處理線程就存在訪問共享數(shù)據(jù)的問題。一般情況下需要加鎖,但加鎖勢必會(huì)讓抓包線程受到處理線程的影響,為了超過libpcap的抓包速度,這里我們?cè)O(shè)計(jì)了線程追擊法實(shí)現(xiàn)不加鎖的多線程互斥訪問共享內(nèi)存。

        基本思想如下:

        先創(chuàng)建一個(gè)全局的指針數(shù)組保存所有抓到的包在內(nèi)存中保存的地址,將這個(gè)數(shù)組看成一個(gè)環(huán),定義變量pos_c 表示抓包線程當(dāng)前處理的位置,pos_h表示處理線程當(dāng)前正在處理的位置,初始狀態(tài)pos_c=pos_h = 0,如圖1A所示。

        當(dāng)抓包線程收到一個(gè)包之后,分配空間保存此包,當(dāng)前處理的數(shù)組的位置為 poc_c++,當(dāng)達(dá)到最大下標(biāo)時(shí)則變?yōu)?,當(dāng)它的下一個(gè)位置==poc_h時(shí),說明數(shù)組已滿,則暫停抓包,如圖1B所示。

        當(dāng)poc_c != poc_h時(shí),處理線程開始工作,每處理完一個(gè)包poc_h++,并釋放該包內(nèi)存,已到最大下標(biāo)時(shí)則變?yōu)?,一直處理到 pos_c == poc_h時(shí),如圖1C所示。

        4 多線程編程的具體實(shí)現(xiàn)

        4.1 抓包線程

        抓包線程只做定義 raw socket接收包和保存包的功能,為減少丟包的可能,必須首先提高抓包線程的優(yōu)先級(jí)。這里只說明接收包和保存包到packet數(shù)組的實(shí)現(xiàn):

        接收包:

        定義一個(gè)收包的緩存區(qū),這里定義一個(gè)最大包長度的字符數(shù)組 buff;

        Char buff[65535];

        用一個(gè)死循環(huán)來接收 raw socket的包,具體代碼見圖2A。

        4.2 處理線程

        此處只說明處理線程讀取包的過程,略去具體處理和釋放的代碼。具體代碼見圖2B。

        5 總結(jié)

        本文在采用多線程抓包時(shí),利用線程追擊法避免抓包線程和處理線程訪問共享的數(shù)據(jù)(包的地址)加鎖,從而提高抓包的速度。同時(shí),利用raw socket原生套接字來接收包,從而解決linux平臺(tái)下libpcap不能設(shè)置緩存大小而丟包的問題。具體包的處理不在此文的討論范圍,具體程序退出等其他的控制細(xì)節(jié)也未詳細(xì)討論,代碼都在linux下調(diào)試可行,僅供參考。另在處理時(shí),也可以采用多線程同時(shí)處理的方法,這些處理線程同時(shí)在從packet數(shù)組中讀包時(shí)需要加一個(gè)鎖,但是不影響抓包線程的抓包,從而達(dá)到提高速度的目的。

        參考文獻(xiàn):

        [1]劉循.Linux操作系統(tǒng)及其應(yīng)用編程[M].高等教育出版社,2011,01.

        [2]尤文堅(jiān).利用RAW SOCKET捕獲網(wǎng)絡(luò)底層數(shù)據(jù)包的方法[J].廣西輕工業(yè),2007.

        [3]寇應(yīng)展,等.基于libpcap網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)的改進(jìn)[J].軍械工程學(xué)院學(xué)報(bào),2011.

        亚洲二区三区四区太九| 男人靠女人免费视频网站| 欧美丰满熟妇乱xxxxx图片| 亚洲日韩区在线电影| 日本一区二区啪啪视频| 国产丝袜美腿精品91在线看| 日本乱偷人妻中文字幕在线| 在线欧美精品二区三区| 国产精品三级1区2区3区| 九一免费一区二区三区偷拍视频| 色欲色欲天天天www亚洲伊| 成年视频国产免费观看| 国产一级片内射在线视频| 91九色最新国产在线观看| 最近2019年好看中文字幕视频 | 久久HEZYO色综合| 国产视频一区二区三区观看| 亚洲色大成网站www永久网站| a一区二区三区乱码在线 | 欧洲| 91精品国产无码在线观看| 精品久久中文字幕系列| 曰韩亚洲av人人夜夜澡人人爽| 波多野结衣一区| 中文字幕中乱码一区无线精品| 桃红色精品国产亚洲av| 日本不卡一区二区三区在线| 亚洲欧美日韩一区二区在线观看| 少妇被躁到高潮和人狍大战| 午夜不卡无码中文字幕影院| 一群黑人大战亚裔女在线播放| 男女上床视频免费网站| 97超碰精品成人国产| 亚洲av无码国产精品色软件下戴| 成年女人A级毛片免| 国产丝袜美腿嫩模视频诱惑| 成熟丰满熟妇av无码区| 日本精品一区二区三区在线视频| 中文字幕人妻少妇久久| 国产欧美高清在线观看| 国产精品免费久久久久影院仙踪林 | 亚洲精品无码永久在线观看|