国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

網(wǎng)絡(luò)流量采集與分析系統(tǒng)的實(shí)現(xiàn)

2022-04-12 21:41龍恒張勁勇吳紅梅
計(jì)算機(jī)時(shí)代 2022年4期

龍恒 張勁勇 吳紅梅

摘? 要: 在使用基于網(wǎng)絡(luò)的應(yīng)用或服務(wù)的過(guò)程中會(huì)遇到各種問(wèn)題,需要使用流量分析工具找出原因才能解決問(wèn)題。文章闡述了一套流量采集及分析系統(tǒng)的實(shí)現(xiàn)過(guò)程,重點(diǎn)講解了數(shù)據(jù)包的捕獲技術(shù)及分析方法、后臺(tái)進(jìn)程的結(jié)構(gòu),以及線程之間的交互過(guò)程、采用雙緩沖區(qū)方案實(shí)現(xiàn)線程同步以避免出現(xiàn)資源競(jìng)爭(zhēng)、使用內(nèi)存預(yù)分配技術(shù)來(lái)提高內(nèi)存緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)的性能等方面的內(nèi)容。該系統(tǒng)已實(shí)際運(yùn)行一年多,可以解決網(wǎng)絡(luò)應(yīng)用中的常見(jiàn)問(wèn)題,具有較強(qiáng)的實(shí)用性。

關(guān)鍵詞: 數(shù)據(jù)包捕獲; 數(shù)據(jù)包分析; Npcap; 線程同步; 內(nèi)存預(yù)分配

中圖分類號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2022)04-24-05

Implement of network traffic collection and analysis system

Long Heng Zhang Jinyong Wu Hongmei

(Maoming Polytechnic, Maoming, Guangdong 525000, China)

Abstract: In the process of using network-based applications or services, various problems are encountered, and it is necessary to use traffic analysis tools to find out the reasons and solve these problems. In this paper, the realization process of a set of flow collection and analysis system is expounded. It focuses on the capture technology and analysis method of data packets, the structure of the background process, and the interaction process between threads. The double buffer scheme is used to achieve thread synchronization to avoid resource contention. The memory pre-allocation technique is used to improve the performance of the memory buffer data structure. The system has been in practical use for more than a year. It can solve common problems in network applications, and has strong practicability.

Key words: packet capture; packet analysis; Npcap; thread synchronization; memory pre-allocation

0 引言

隨著互聯(lián)網(wǎng)的普及,很多應(yīng)用和服務(wù)都需要聯(lián)網(wǎng)才能使用,這些應(yīng)用和服務(wù)在使用過(guò)程中會(huì)出現(xiàn)各種由于網(wǎng)絡(luò)原因?qū)е碌膯?wèn)題,例如網(wǎng)頁(yè)加載緩慢、視頻播放卡頓、服務(wù)不可用等等。管理員需要對(duì)網(wǎng)絡(luò)中的流量數(shù)據(jù)進(jìn)行分析,從中獲取有用的信息,才能找到并解決問(wèn)題。

本文詳細(xì)介紹了一套網(wǎng)絡(luò)流量采集與分析系統(tǒng)的實(shí)現(xiàn)方法,該系統(tǒng)分為前后臺(tái)兩部分,后臺(tái)進(jìn)程捕獲數(shù)據(jù)包然后對(duì)其進(jìn)行分解,根據(jù)數(shù)據(jù)包首部字段的值和應(yīng)用層數(shù)據(jù)對(duì)數(shù)據(jù)包進(jìn)行分類并將指定信息保存到數(shù)據(jù)庫(kù)中;前端應(yīng)用負(fù)責(zé)對(duì)保存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析并將結(jié)果顯示給用戶。這套系統(tǒng)難點(diǎn)在于后臺(tái)的實(shí)現(xiàn),這也是本文關(guān)注的重點(diǎn)。

1 數(shù)據(jù)包捕獲技術(shù)

本系統(tǒng)使用Npcap技術(shù)捕獲數(shù)據(jù)包,Npcap 是一個(gè)用于Windows系統(tǒng)的數(shù)據(jù)包捕獲和網(wǎng)絡(luò)分析架構(gòu),是Winpcap的后續(xù)版本,架構(gòu)與工作原理與Winpcap相同,但是具有更好的性能、更強(qiáng)的可移植性、更高的安全性以及更豐富的功能。其結(jié)構(gòu)包括一個(gè)名為NPF的內(nèi)核模式驅(qū)動(dòng)程序和一組與 libpcap 兼容的用戶態(tài)API函數(shù)[1],應(yīng)用程序只需要調(diào)用這些API函數(shù)即可以實(shí)現(xiàn)捕獲數(shù)據(jù)包的功能,步驟如圖1所示。

⑴ 系統(tǒng)在加載時(shí)讀取配置文件,完成初始化工作,根據(jù)配置文件里面的參數(shù)生成BPF表達(dá)式。

⑵ 打開(kāi)指定的設(shè)備(網(wǎng)卡)并獲得該設(shè)備的句柄。

⑶ 對(duì)BPF表達(dá)式進(jìn)行編譯將其與上一步獲得的設(shè)備句柄關(guān)聯(lián)起來(lái),對(duì)于實(shí)時(shí)捕獲的情況,可以根據(jù)BPF表達(dá)式指定的條件在內(nèi)核模式下進(jìn)行過(guò)濾,以避免將不符合條件的數(shù)據(jù)包從內(nèi)核態(tài)復(fù)制到用戶態(tài)[2]。

⑷ 有兩個(gè)對(duì)性能有重要的影響的緩沖區(qū)需要設(shè)置。一個(gè)是與網(wǎng)卡關(guān)聯(lián)的內(nèi)核緩沖區(qū)的大小,其用來(lái)保存捕獲的數(shù)據(jù)包,使得應(yīng)用程序不必實(shí)時(shí)讀取這些數(shù)據(jù)包,如果這個(gè)緩沖區(qū)設(shè)置得太小,易造成數(shù)據(jù)包丟失,如果設(shè)置得太大,將會(huì)對(duì)操作系統(tǒng)的不可分頁(yè)內(nèi)存造成浪費(fèi)[2]。另一個(gè)是應(yīng)用層緩沖區(qū),用來(lái)保存應(yīng)用程序從內(nèi)核讀取的數(shù)據(jù)包,這個(gè)緩沖區(qū)的大小決定了應(yīng)用程序進(jìn)行一次系統(tǒng)調(diào)用能夠返回的數(shù)據(jù)包的數(shù)量,將這個(gè)緩沖區(qū)設(shè)置得大一些可以減少系統(tǒng)調(diào)用的次數(shù)[3]。

⑸ 在一個(gè)循環(huán)中讀取數(shù)據(jù)包,然后進(jìn)行分析和處理,如果接收到退出信號(hào),將結(jié)束數(shù)據(jù)包的捕獲過(guò)程。

2 數(shù)據(jù)包的處理流程

在捕獲數(shù)據(jù)包時(shí),Npcap的內(nèi)核驅(qū)動(dòng)程序NPF對(duì)網(wǎng)卡進(jìn)行監(jiān)聽(tīng),捕獲符合條件的數(shù)據(jù)包并將其完整地交給用戶層的應(yīng)用程序,整個(gè)過(guò)程不經(jīng)過(guò)操作系統(tǒng)的協(xié)議棧[4],應(yīng)用程序收到是鏈路層的數(shù)據(jù)幀。40C76890-AA4A-4E25-83E2-8E57BD8B7F75

RFC 1042推薦,使用TCP/IP協(xié)議的主機(jī)必須能發(fā)送和接收采用Ethernet II (RFC 894)格式封裝的數(shù)據(jù)幀、應(yīng)該能處理接收到的采用IEEE802.2 SNAP (RFC1042)格式封裝的數(shù)據(jù)幀[5]。Ethernet II數(shù)據(jù)幀格式見(jiàn)圖2[5],IEEE802.2 SNAP數(shù)據(jù)幀格式見(jiàn)圖3[6],圖1、圖2省略了CRC校驗(yàn)碼。

由于以太網(wǎng)數(shù)據(jù)包的最大長(zhǎng)度是1500字節(jié),IEEE802.2 SNAP型的數(shù)據(jù)幀的第13和14字節(jié)表示數(shù)據(jù)包長(zhǎng)度,所以其最大值為1500(十六進(jìn)制為0x05DC)。而Ethernet II型的第13和14字節(jié)表示上層協(xié)議類型,取值范圍是0x0600至0xFFFF,因此通過(guò)這兩個(gè)字節(jié)的值就可以區(qū)分這兩種類型的數(shù)據(jù)幀,另外IEEE802.2 SNAP型還要求DSAP和SSAP字段的值均固定為170、control字段的值固定為3、OrgCode字段的值固定為0,Type字段的意義與Ethernet II型Type字段相同[6]。

采集線程讀取數(shù)據(jù)包后獲得一個(gè)指向數(shù)據(jù)的鏈路層首部的指針,對(duì)這個(gè)指針指向的緩沖區(qū)中的數(shù)據(jù)進(jìn)行分析,即可獲得數(shù)據(jù)包各個(gè)部分的信息。

為了減少數(shù)據(jù)包的復(fù)制,定義了一個(gè)結(jié)構(gòu)體PKPTR,其成員都是指向緩沖區(qū)相應(yīng)位置的指針,在分析過(guò)程中,將這些指針指向緩沖區(qū)的正確位置。數(shù)據(jù)包處理流程如圖4所示。

3 后臺(tái)進(jìn)程的結(jié)構(gòu)

在流量較大的鏈路中會(huì)采集到大量的數(shù)據(jù)包,因此需要使用兩個(gè)線程才能實(shí)現(xiàn)數(shù)據(jù)采集以及將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)這兩個(gè)核心功能,這兩個(gè)線程分別稱為采集線程和存儲(chǔ)線程。主進(jìn)程初始化完成后立刻啟動(dòng)這兩個(gè)線程,此后主進(jìn)程只負(fù)責(zé)與用戶交互,兩個(gè)線程在主進(jìn)程退出后才會(huì)結(jié)束。

采集線程捕獲數(shù)據(jù)包并對(duì)其進(jìn)行分析,然后將指定的數(shù)據(jù)保存在內(nèi)存緩沖區(qū)中,該線程設(shè)置一個(gè)定時(shí)器,如果定時(shí)器超時(shí),將會(huì)檢查存儲(chǔ)線程當(dāng)前的狀態(tài),如果其沒(méi)有處于休眠狀態(tài),表明存儲(chǔ)線程還沒(méi)有完全將上次提交的數(shù)據(jù)寫入數(shù)據(jù)庫(kù),系統(tǒng)會(huì)認(rèn)為是用戶的配置不正確,將分別向兩個(gè)線程發(fā)送退出信號(hào),同時(shí)記錄日志,以提示用戶需要調(diào)整定時(shí)器的時(shí)間間隔、采集的數(shù)據(jù)類型及數(shù)量等參數(shù);如果采集線程處于休眠狀態(tài),則喚醒存儲(chǔ)線程,將采集到的數(shù)據(jù)提交給其處理,采集線程重新開(kāi)始工作。存儲(chǔ)線程負(fù)責(zé)將采集線程提交的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。

4 線程的同步機(jī)制

由于兩個(gè)線程都需要訪問(wèn)保存采集數(shù)據(jù)的緩沖區(qū),因此需要使用同步機(jī)制以避免訪問(wèn)沖突,常規(guī)的做法是使用操作系統(tǒng)提供的臨界區(qū)、互斥對(duì)象或信號(hào)量等同步機(jī)制來(lái)實(shí)現(xiàn)。但是存儲(chǔ)線程將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)的時(shí)間較長(zhǎng),如果使用這些機(jī)制,將會(huì)導(dǎo)致采集線程長(zhǎng)時(shí)間停止工作。

本系統(tǒng)采用雙緩沖區(qū)的方案來(lái)實(shí)現(xiàn)同步,在主進(jìn)程初始化時(shí),預(yù)先分配兩個(gè)結(jié)構(gòu)完全相同的緩沖區(qū),每個(gè)線程使用一個(gè),當(dāng)采集線程的定時(shí)器超時(shí)后,對(duì)isSleep變量進(jìn)行檢測(cè),如果這個(gè)變量的值是0,表示存儲(chǔ)線程正在工作,這種情況將被當(dāng)成配置錯(cuò)誤處理;如果isSleep變量的值為1,表示存儲(chǔ)線程已經(jīng)進(jìn)入休眠狀態(tài),此時(shí)由采集進(jìn)程對(duì)兩個(gè)線程的緩沖區(qū)指針的指向地址進(jìn)行交換,然后喚醒存儲(chǔ)線程。由于isSleep變量被兩個(gè)線程共享,因此被定義成volatile long類型的變量,使用volatile關(guān)鍵字對(duì)變量進(jìn)行修飾時(shí),CPU每次都從內(nèi)存讀取該變量的值而不會(huì)從寄存器中讀取[7],使得變量值發(fā)生變化時(shí)在不同的線程之間可見(jiàn)。對(duì)該變量賦值的時(shí)候需要使用InterlockedExchange函數(shù)保證操作的原子性,如果修改是原子操作,兩個(gè)線程訪問(wèn)isSleep變量時(shí)就不會(huì)出現(xiàn)競(jìng)爭(zhēng)的問(wèn)題[8]。

使用雙緩沖區(qū)的方案進(jìn)行同步還可以避免頻繁調(diào)用常規(guī)同步機(jī)制的加鎖、解鎖操作造成性能上的損失。定時(shí)寫入機(jī)制除了可以減少存儲(chǔ)線程被喚醒的次數(shù),還可以充分利用數(shù)據(jù)庫(kù)系統(tǒng)的預(yù)處理語(yǔ)句或者批量寫入功能批量寫入記錄,從而提高性能。

5 數(shù)據(jù)結(jié)構(gòu)

為了實(shí)現(xiàn)延遲寫入的功能,先要將采集到的數(shù)據(jù)保存在內(nèi)存緩沖區(qū)中,在定時(shí)器超時(shí)后再將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)中。本系統(tǒng)以IP地址為中心對(duì)數(shù)據(jù)進(jìn)行組織,需要記錄的數(shù)據(jù)類型包括每個(gè)IP地址在指定的時(shí)間段內(nèi)的總流量、每個(gè)會(huì)話的流量及會(huì)話過(guò)程中所產(chǎn)生的數(shù)據(jù)等,所使用的數(shù)據(jù)結(jié)構(gòu)如圖5所示。

采集線程每讀取到一個(gè)數(shù)據(jù)包都會(huì)根據(jù)源IP地址和目標(biāo)IP地址在數(shù)據(jù)結(jié)構(gòu)中進(jìn)行查找,如果存在對(duì)應(yīng)的記錄就將數(shù)據(jù)包的信息保存到緩沖區(qū)中,如果不存在,則需要新建一條記錄之后再進(jìn)行保存。在高速網(wǎng)絡(luò)中對(duì)查找和寫入的性能要求非常高,在常用的數(shù)據(jù)結(jié)構(gòu)中,Hash表在查找關(guān)鍵字和創(chuàng)建新結(jié)點(diǎn)方面的性能優(yōu)異,理想狀態(tài)下Hash表的查詢、插入和刪除的時(shí)間復(fù)雜度都為O(1)[9]。因此,在數(shù)據(jù)結(jié)構(gòu)的入口處使用一個(gè)Hash表來(lái)保存每個(gè)IP地址的數(shù)據(jù),這個(gè)表稱為入口IP地址表。

入口IP地址表的每個(gè)結(jié)點(diǎn)保存的數(shù)據(jù)分為匯總數(shù)據(jù)和會(huì)話數(shù)據(jù)兩種,匯總數(shù)據(jù)包括該結(jié)點(diǎn)創(chuàng)建的時(shí)間、在指定時(shí)間間隔內(nèi)該IP地址接收到的數(shù)據(jù)包個(gè)數(shù)和總字節(jié)數(shù)、發(fā)送出去的數(shù)據(jù)包個(gè)數(shù)和總字節(jié)數(shù)等信息;會(huì)話數(shù)據(jù)保存在一個(gè)會(huì)話表中,表的每個(gè)結(jié)點(diǎn)記錄了當(dāng)前時(shí)間間隔內(nèi)兩個(gè)端點(diǎn)(endpoint)之間的通信數(shù)據(jù),包括發(fā)送和接收的流量、會(huì)話所產(chǎn)生的數(shù)據(jù)等信息。

會(huì)話表也會(huì)被頻繁查找和更新,會(huì)話表與入口IP地址表有兩個(gè)不同的地方,一是整個(gè)數(shù)據(jù)結(jié)構(gòu)中入口IP地址表只有一個(gè),而每個(gè)IP地址都有一個(gè)獨(dú)立的會(huì)話表,因此會(huì)話表的數(shù)量會(huì)非常多;第二個(gè)是會(huì)話表只保存一個(gè)IP地址在一個(gè)時(shí)間間隔內(nèi)的會(huì)話,數(shù)據(jù)量比入口IP地址表要少很多,針對(duì)這兩個(gè)特點(diǎn),使用紅黑樹(shù)作為保存會(huì)話表的數(shù)據(jù)結(jié)構(gòu)。

紅黑樹(shù)查詢、插入和刪除的時(shí)間復(fù)雜度為O(logn)[10],在性能上不如Hash表,但是Hash表需要預(yù)先分配一個(gè)有一定冗余的數(shù)組用來(lái)進(jìn)行散列運(yùn)算,如果入口IP地址比較多,將會(huì)造成比較嚴(yán)重的內(nèi)存浪費(fèi)。另外從單個(gè)會(huì)話表來(lái)看其數(shù)據(jù)量相對(duì)較少,一次查找過(guò)程所需訪問(wèn)的結(jié)點(diǎn)不會(huì)很多且大部分運(yùn)算都是比較語(yǔ)句,而且計(jì)算Hash值本身也要一定的運(yùn)算量。綜合考慮各種因素,紅黑樹(shù)是一個(gè)合適的選擇。40C76890-AA4A-4E25-83E2-8E57BD8B7F75

圖5中的SKEY是會(huì)話表的鍵,是一個(gè)長(zhǎng)度固定的內(nèi)存塊,用來(lái)唯一標(biāo)識(shí)一個(gè)會(huì)話,TCP和UDP協(xié)議數(shù)據(jù)包的SKEY的組成如圖6所示,ICMP協(xié)議數(shù)據(jù)包的SKEY的組成如圖7所示。

會(huì)話表的結(jié)點(diǎn)保存會(huì)話的詳細(xì)數(shù)據(jù),包括數(shù)據(jù)包首部字段、所訪問(wèn)的網(wǎng)站的網(wǎng)址、配置文件指定采集的應(yīng)用層數(shù)據(jù)等。

由于記錄數(shù)據(jù)時(shí)需要頻繁分配內(nèi)存,如果使用動(dòng)態(tài)分配的方式將會(huì)產(chǎn)生大量的內(nèi)存碎片,會(huì)導(dǎo)致內(nèi)存空間的浪費(fèi)和應(yīng)用程序性能下降[11],而且內(nèi)存分配和釋放也需要消耗處理器的資源。

由于Hash表的鍵和結(jié)點(diǎn)、紅黑樹(shù)的鍵和節(jié)點(diǎn)的大小都是固定的,可以使用內(nèi)存預(yù)分配技術(shù),為這些類型的數(shù)據(jù)結(jié)構(gòu)分別分配一個(gè)連續(xù)的內(nèi)存塊作為內(nèi)存池,分配和釋放內(nèi)存,都通過(guò)對(duì)內(nèi)存池進(jìn)行操作來(lái)完成,執(zhí)行的是一些調(diào)整指針指向和記錄使用情況的指令。

保存會(huì)話數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)大小不是固定的,但是在采集過(guò)程中只進(jìn)行內(nèi)存分配,內(nèi)存的釋放是在將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)之后再統(tǒng)一進(jìn)行,根據(jù)這個(gè)特點(diǎn),預(yù)分配內(nèi)存的方法仍然適用,只需給這些數(shù)據(jù)結(jié)構(gòu)增加一個(gè)指示長(zhǎng)度的成員變量,與指向內(nèi)存開(kāi)始位置的指針一起標(biāo)識(shí)所使用的內(nèi)存單元即可。

下面對(duì)采集過(guò)程進(jìn)行模擬測(cè)試,判斷預(yù)分配內(nèi)存技術(shù)對(duì)性能的影響,測(cè)試方法是創(chuàng)建一批數(shù)據(jù)包,通過(guò)隨機(jī)指定數(shù)據(jù)包的源和目標(biāo)IP地址,使得圖5數(shù)據(jù)結(jié)構(gòu)中的入口IP地址表中保存一定數(shù)量的IP地址,每個(gè)IP地址創(chuàng)建指定數(shù)量的會(huì)話,每個(gè)會(huì)話采集一個(gè)URL字符串和數(shù)據(jù)包的部分首部字段的值。

表1和表2的數(shù)據(jù)是在本系統(tǒng)部署的服務(wù)器上測(cè)試得出,插入和釋放操作的單位為毫秒,在多臺(tái)計(jì)算機(jī)上進(jìn)行的多次測(cè)試都能得到類似的結(jié)果。測(cè)試中的“插入”操作包含了數(shù)據(jù)包分解和URL匹配等與內(nèi)存分配無(wú)關(guān)的運(yùn)算,這部分運(yùn)算耗時(shí)較多,從測(cè)試結(jié)果看性能提升為20%左右;“釋放”操作指的是存儲(chǔ)線程將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)之后對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行重新初始化,在使用內(nèi)存池的情況下內(nèi)存是整塊釋放的,并且沒(méi)有執(zhí)行其他的運(yùn)算,因此性能提升非常明顯。

6 結(jié)束語(yǔ)

在我校還沒(méi)有內(nèi)部署專業(yè)的網(wǎng)絡(luò)安全設(shè)備之前,經(jīng)常會(huì)遇到網(wǎng)頁(yè)加載緩慢、網(wǎng)速不穩(wěn)定、用戶訪問(wèn)了惡意網(wǎng)站卻無(wú)法察覺(jué)、服務(wù)器疑似受到攻擊等問(wèn)題,由于無(wú)法了解網(wǎng)絡(luò)運(yùn)行的狀況,解決問(wèn)題時(shí)往往沒(méi)有針對(duì)性,導(dǎo)致了不少糾紛。

該系統(tǒng)投入使用后,在遵守隱私管理規(guī)定的情況下對(duì)部分流量數(shù)據(jù)進(jìn)行采集并保存了較長(zhǎng)時(shí)間的歷史記錄,該系統(tǒng)提供了常用的分析功能,為網(wǎng)絡(luò)管理人員了解網(wǎng)絡(luò)運(yùn)行狀況提供了依據(jù),從而能夠快速有針對(duì)性地解決問(wèn)題,在出現(xiàn)爭(zhēng)議事件的時(shí)候可以通過(guò)查詢流量日志數(shù)據(jù)進(jìn)行處理,使得網(wǎng)絡(luò)服務(wù)質(zhì)量有所提高。

我校在開(kāi)展了等保建設(shè)工作之后,部署了一批專業(yè)的網(wǎng)絡(luò)設(shè)備,雖然這些設(shè)備在功能上與本系統(tǒng)有重疊的地方,但是這套系統(tǒng)使用簡(jiǎn)單、問(wèn)題針對(duì)性強(qiáng)、查詢結(jié)果加載速度快、穩(wěn)定性高,由于有這些優(yōu)點(diǎn),該系統(tǒng)目前仍然作為一個(gè)有效的補(bǔ)充方案使用。

參考文獻(xiàn)(References):

[1] RISSO F, DEGIOANNI L. An architecture for highperformance network analysis[C]. Proceedings of the 6th IEEE Symposium on Computers and Communications (ISCC 2001), Hammamet,Tunisia, July 2001:2-7

[2] Van Jacobson, Craig Leres. Npcap API. https://nmap.org/npcap/guide/wpcap/pcap.html. [2021-08-20].

[3] anonym. Developing software with Npcap. https://nmap.org/npcap/guide/npcap-devguide.html.[2021-08-20].

[4] DEGIOANNI L, BALDI M, RISSO F. Profiling andoptimization of software -based network -analysis applications proceedings[C]. The 15th IEEE Symposium on Computer Architecture and High Performance Computing (SBAC-PAD 2003) Sao Paulo, Brazil, November 2003:3-5

[5] Stevens WR.TCP/IP 詳解(卷1:協(xié)議).北京:機(jī)械工業(yè)出版社,2000:15-16

[6] J.Postel,J.Reynolds.A Standard for the Transmission of IPDatagrams over IEEE 802 Networks.https://www.rfc-editor.org/rfc/rfc1042.txt. (1988) [2021-08-20].

[7] 陳睿,楊孟飛.基于編碼規(guī)則的中斷數(shù)據(jù)訪問(wèn)沖突檢測(cè)方法[J].空間控制技術(shù)與應(yīng)用,2017,43(3):59-65

[8] W.Richard Stevens,Stephen A.Rago. Unix環(huán)境高級(jí)編程(第2版)[M].北京:人民郵電出版社,2007:297-299

[9] William Ford,William Topp.數(shù)據(jù)結(jié)構(gòu)C++語(yǔ)言描述[M].北京:清華大學(xué)出版社,1998:627-641

[10] Sartaj Sahni.數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用-C++語(yǔ)言描述[M].北京:機(jī)械工業(yè)出版社,2000.334-344

[11] 劉翔,童薇.動(dòng)態(tài)內(nèi)存分配器研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2018,41(10):2359-237840C76890-AA4A-4E25-83E2-8E57BD8B7F75