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

?

基于VxWorks的IP層數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)研究*

2023-06-05 00:49:40張國(guó)超
艦船電子工程 2023年1期
關(guān)鍵詞:鏈路層網(wǎng)絡(luò)協(xié)議監(jiān)聽(tīng)

張國(guó)超 周 暢

(上海船舶電子設(shè)備研究所 上海 201108)

1 引言

VxWorks 操作系統(tǒng)是美國(guó)風(fēng)河(WindRiver)公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)。它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中[1~2]。

隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)時(shí)代的到來(lái),很多不法分子利用操作系統(tǒng)安全漏洞編寫(xiě)計(jì)算機(jī)病毒、木馬等植入程序竊取、篡改設(shè)備中重要信息[3],對(duì)用戶造成不可估量的損失。近年來(lái)針對(duì)VxWorks 操作系統(tǒng)的漏洞展開(kāi)的網(wǎng)絡(luò)攻擊頻現(xiàn),VxWorks 操作系統(tǒng)是目前全球成熟度最高和應(yīng)用最為廣泛的嵌入式實(shí)時(shí)操作系統(tǒng)之一,并且很多諸如醫(yī)療基礎(chǔ)設(shè)施、航空航天、船舶等關(guān)鍵基礎(chǔ)設(shè)施及軍事相關(guān)行業(yè)都對(duì)VxWorks 操作系統(tǒng)有著廣泛的應(yīng)用,因此針對(duì)VxWorks操作系統(tǒng)的網(wǎng)絡(luò)安全研究迫在眉睫,而網(wǎng)絡(luò)攻擊的識(shí)別是網(wǎng)絡(luò)安全中重要的一個(gè)環(huán)節(jié),數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)是網(wǎng)絡(luò)攻擊檢測(cè)的較為有效手段之一。數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)通過(guò)捕獲特定過(guò)濾條件的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行綜合分析實(shí)現(xiàn)對(duì)數(shù)據(jù)來(lái)源、流量、數(shù)據(jù)內(nèi)容、時(shí)戳等重要信息全面監(jiān)控的功能,是系統(tǒng)級(jí)網(wǎng)絡(luò)調(diào)試的重要技術(shù)手段之一,也是識(shí)別惡意網(wǎng)絡(luò)攻擊等網(wǎng)絡(luò)安全威脅的關(guān)鍵技術(shù)方法[4]。在Unix/Linux 類操作系統(tǒng)中,數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)主要是基于開(kāi)源軟件libpcap[5~6],在Windows類操作系統(tǒng)中,常用的網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)是基于WinPcap函數(shù)庫(kù)進(jìn)行二次開(kāi)發(fā)的,著名的Wireshark軟件就是基于該技術(shù)的具體實(shí)現(xiàn)[7],但目前l(fā)ibpcap和WinPcap 函數(shù)庫(kù)并不支持VxWorks 操作系統(tǒng),為解決這一緊迫需求,本文提出了幾種基于MUX 接口、伯克利封包過(guò)濾器(BPF)和原始套接字三種技術(shù)方式實(shí)現(xiàn)VxWorks 操作系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)監(jiān)聽(tīng)和捕獲技術(shù),并在本文最后給出了三種方式的實(shí)驗(yàn)結(jié)果及結(jié)果分析情況。

2 VxWorks的網(wǎng)絡(luò)協(xié)議棧

VxWorks 中的網(wǎng)絡(luò)協(xié)議棧叫作SENS(Scalable Enhanced Network Stack),即可裁減增強(qiáng)網(wǎng)絡(luò)協(xié)議棧。SENS 是基于4.4 BSD TCP/IP 協(xié)議棧發(fā)展而來(lái)的,包含了許多4.4 BSD TCP/IP 協(xié)議棧沒(méi)的協(xié)議;而且SENS在實(shí)現(xiàn)一些協(xié)議功能時(shí)增加了許多新特性,如在IP 協(xié)議實(shí)現(xiàn)時(shí)增加了多播功能。SENS 的基本特征和傳統(tǒng)的TCP/IP 網(wǎng)絡(luò)協(xié)議棧相似,但SENS最大的特點(diǎn)是在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間多了MUX層。在SENS中,網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序是叫作END(Enhanced NetworkDriver),即增強(qiáng)型網(wǎng)絡(luò)驅(qū)動(dòng)程序,它處于數(shù)據(jù)鏈路層。IP層和TCP/UDP層合稱為網(wǎng)絡(luò)協(xié)議層。在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間有應(yīng)用程序接口(API),這個(gè)接口在SENS中叫作MUX(Multiplexer)接口[8]。MUX 接口的作用是分解協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序,從而增強(qiáng)獨(dú)立性,這種獨(dú)立性使得增加新的驅(qū)動(dòng)程序和協(xié)議變得很簡(jiǎn)單,可以利用這一機(jī)制,創(chuàng)建用戶自主協(xié)議棧,通過(guò)修改stackRcvRtn 函數(shù),將網(wǎng)絡(luò)數(shù)據(jù)直接返回給用戶,實(shí)現(xiàn)數(shù)據(jù)包偵聽(tīng)的功能[9]。

可以利用mux 層進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的監(jiān)聽(tīng)和嗅探。首先可以利用VxWorks特有的mux 層,注冊(cè)一個(gè)自定義網(wǎng)絡(luò)驅(qū)動(dòng),直接截獲網(wǎng)絡(luò)數(shù)據(jù),并根據(jù)過(guò)濾條件返回給用戶進(jìn)程,達(dá)到報(bào)文捕獲的目的。其次,VxWorks 的TCP/IP 協(xié)議棧支持BPF 過(guò)濾器,可以利用BPF 技術(shù)進(jìn)行報(bào)文捕獲。最后,VxWorks 的協(xié)議棧與BSD協(xié)議棧兼容,可以利用原始套接字進(jìn)行報(bào)文捕獲。

3 MUX層抓包技術(shù)

Mux 層允許用戶自主開(kāi)發(fā)協(xié)議棧,一個(gè)mux 網(wǎng)絡(luò)協(xié)議至少包括以下四個(gè)接口:協(xié)議棧卸載回調(diào)函數(shù)接口stackShutDownRtn,數(shù)據(jù)接收錯(cuò)誤處理函數(shù)接口stackErrorRtn,數(shù)據(jù)接收回調(diào)函數(shù)接口stack-RcvRtn,重啟被協(xié)議棧函數(shù)接口stackTxRestartRtn。以上四個(gè)接口函數(shù)中,對(duì)于數(shù)據(jù)監(jiān)聽(tīng)最重要的函數(shù)是stackRcvRtn,網(wǎng)卡接收到的以太網(wǎng)數(shù)據(jù)時(shí)自動(dòng)調(diào)用該函數(shù),返回到系統(tǒng)內(nèi)核,當(dāng)該函數(shù)的返回值設(shè)置為FALSE 時(shí),網(wǎng)絡(luò)協(xié)議棧接收到的數(shù)據(jù)直接返回給用戶,實(shí)現(xiàn)數(shù)據(jù)包的捕獲和偵聽(tīng)的功能,用戶可以根據(jù)接收的數(shù)據(jù)頭部進(jìn)行定制的數(shù)據(jù)報(bào)文的過(guò)濾和抓取。在設(shè)計(jì)好stackRcvRtn 等用戶自定義四個(gè)函數(shù)后,通過(guò)muxBind 系統(tǒng)接口進(jìn)行協(xié)議的注冊(cè),即可完成??梢岳眠@一機(jī)制,修改stackRcvRtn 函數(shù),將網(wǎng)絡(luò)數(shù)據(jù)直接返回給用戶。具體流程如圖1所示。

圖1 Mux層數(shù)據(jù)包截取流程圖

muxBind 的第一個(gè)和第二個(gè)參數(shù)分別傳遞網(wǎng)卡的名稱和序號(hào),例如pci0,接下來(lái)的四個(gè)函數(shù)指針?lè)謩e指向回調(diào)函數(shù),默認(rèn)處理可傳遞NULL 指針。在捕獲數(shù)據(jù)幀應(yīng)用時(shí),只需要定義接收回調(diào)函數(shù)stackRcvRtn,該函數(shù)將從內(nèi)存池中返回M_BLK結(jié)構(gòu)體指針,通過(guò)解析MBLK 的mBlkHdr 數(shù)據(jù)段mData,完成數(shù)據(jù)包的過(guò)濾和捕獲。以太網(wǎng)數(shù)據(jù)類型報(bào)文是我們最為關(guān)心的報(bào)文類型,IP數(shù)據(jù)包報(bào)文頭部的組織格式如圖2所示。

圖2 數(shù)據(jù)鏈路層和IP層數(shù)據(jù)報(bào)頭部示意圖

4 BPF報(bào)文捕獲技術(shù)

伯克利封包過(guò)濾器(Berkeley Packet Filter,BPF)是類Unix 系統(tǒng)上數(shù)據(jù)鏈路層的一種原始接口,提供原始鏈路層數(shù)據(jù)包的收發(fā),可以用于監(jiān)聽(tīng)鏈路層數(shù)據(jù)[10],如tcpdump 程序就是基于該技術(shù)進(jìn)行開(kāi)發(fā)的。應(yīng)用進(jìn)程通過(guò)系統(tǒng)調(diào)用open 創(chuàng)建并打開(kāi)一個(gè)BPF設(shè)備,并利用若干ioctl命令配置BPF設(shè)備,把它關(guān)聯(lián)到某個(gè)網(wǎng)絡(luò)接口,并安裝過(guò)濾程序從而能夠選擇性地接收輸入的分組。BPF 設(shè)備經(jīng)過(guò)適當(dāng)配置,能夠根據(jù)過(guò)濾程序的定義丟棄或接收輸入的分組,過(guò)濾程序的定義類似于偽計(jì)算機(jī)指令??梢詫⒕W(wǎng)卡設(shè)置為混雜模式,這一可以收到網(wǎng)絡(luò)上所有經(jīng)過(guò)交換機(jī)的數(shù)據(jù)包,不管它們的目的地址是不是所在主機(jī),從而實(shí)現(xiàn)數(shù)據(jù)包偵聽(tīng)的功能。除此之外,BPF 支持“包過(guò)濾”功能,可以將滿足過(guò)濾條件的數(shù)據(jù)包拷貝到應(yīng)用層,避免從操作系統(tǒng)內(nèi)核向用戶態(tài)復(fù)制不需要的數(shù)據(jù)包,降低抓包過(guò)程中CPU的負(fù)擔(dān)及所需的緩沖區(qū)空間,從而降低丟包率。

BPF 的過(guò)濾功能是以BPF 虛擬機(jī)機(jī)器語(yǔ)言的解釋器的形式實(shí)現(xiàn)的,這種語(yǔ)言的程序可以抓取封包數(shù)據(jù),對(duì)封包中的數(shù)據(jù)采取算數(shù)操作,并將結(jié)果與常量或封包中的數(shù)據(jù)或結(jié)果中的測(cè)試位比較,根據(jù)比較結(jié)果決定是否拒絕封包。

BPF 實(shí)現(xiàn)數(shù)據(jù)包截取的流程如圖3所示。BPF過(guò)濾器寫(xiě)法類似于匯編代碼,BPF 常用指令對(duì)照表如表1所示。BPF 過(guò)濾器的可能寫(xiě)法是:使用BPF_LD 將k 值存入寄存器A 中,使用BPF_JMP 將A中的值與k進(jìn)行比較,實(shí)現(xiàn)指令的跳轉(zhuǎn),可以跳轉(zhuǎn)到下一步的過(guò)濾指令,或者跳轉(zhuǎn)到BPF_RET 進(jìn)行截取包長(zhǎng)度的限制,如果,截取包的長(zhǎng)度為0,則代表未匹配。

表1 BPF過(guò)濾器指令對(duì)照表

圖3 數(shù)據(jù)鏈路層和IP層數(shù)據(jù)報(bào)頭部示意圖

5 原始套接字報(bào)文捕獲技術(shù)

vxWorks 網(wǎng)絡(luò)編程支持BSD4.4 TCP/IP 兼容的編程接口,在TCP/IP 網(wǎng)絡(luò)應(yīng)用中,同通信的兩個(gè)任務(wù)間主要模式是客戶端/服務(wù)器模式(C/S),即客戶首先向服務(wù)器提出服務(wù)請(qǐng)求,服務(wù)器收到請(qǐng)求后,提供相應(yīng)的服務(wù)。原始套接字(Raw socket),工作在數(shù)據(jù)鏈路層,而其他類型的套接字工作在傳輸層,只能進(jìn)行傳輸層的數(shù)據(jù)收發(fā),只接收目標(biāo)地址是本機(jī)的數(shù)據(jù)包,而原始套接字可以通過(guò)設(shè)置網(wǎng)卡混雜模式,接收所有經(jīng)過(guò)網(wǎng)卡的數(shù)據(jù)包,我們可以使用原始套接字這一特點(diǎn)進(jìn)行數(shù)據(jù)監(jiān)聽(tīng)[11~12]。當(dāng)網(wǎng)卡除以混雜模式下能夠接收包括廣播在內(nèi)的所有經(jīng)過(guò)網(wǎng)卡的數(shù)據(jù)包。使用原始套接字進(jìn)行數(shù)據(jù)監(jiān)聽(tīng)的流程如下:

1)通過(guò)設(shè)置套接字類型為SOCK_RAW 創(chuàng)建原始套接字

2)通過(guò)ioctl指定網(wǎng)卡為混雜模式

3)通過(guò)recv()函數(shù)進(jìn)行數(shù)據(jù)包的接收

4)針對(duì)接收到的數(shù)據(jù)包進(jìn)行包頭判斷,拷貝滿足條件的報(bào)文到緩沖區(qū)。

6 試驗(yàn)結(jié)果及分析

為了對(duì)比本文提出的三種報(bào)文捕獲方法,首先需要搭建軟件運(yùn)行的目標(biāo)環(huán)境,利用Vmware 虛擬機(jī)軟件創(chuàng)建VxWorks 操作系統(tǒng)虛擬機(jī)作為目標(biāo)環(huán)境,然后分別設(shè)計(jì)良好網(wǎng)絡(luò)環(huán)境、中等網(wǎng)絡(luò)環(huán)境和擁堵網(wǎng)絡(luò)環(huán)境三種試驗(yàn)條件下,測(cè)試本文提出方法的報(bào)文捕獲功能及性能。試驗(yàn)環(huán)境搭建步驟如下:

1)利用Workbench3.2 創(chuàng)建并生成VxWorks6.8的引導(dǎo)文件和鏡像文件(需要配置網(wǎng)卡為lnPci);

2)在VMware虛擬機(jī)安裝dos6.22引導(dǎo)系統(tǒng);

3)利用dos 引導(dǎo)并啟動(dòng)步驟1)中編譯好的Vx-Works 鏡像,使用上述方法創(chuàng)建vxWorks6.8 虛擬機(jī)環(huán)境,并利用文中的三種方法進(jìn)行IP 層數(shù)據(jù)包捕獲。為驗(yàn)證三種方法的網(wǎng)絡(luò)數(shù)據(jù)抓包性能,使用VC6.0 編寫(xiě)UDP 發(fā)送客戶端軟件,并分為以下三種網(wǎng)絡(luò)環(huán)境下進(jìn)行試驗(yàn),幾組試驗(yàn)場(chǎng)景:

(1)良好網(wǎng)絡(luò)環(huán)境:利用UDP 發(fā)送客戶端軟件以每包間隔1ms 的頻率發(fā)送10000 包長(zhǎng)度為1400字節(jié)的測(cè)試數(shù)據(jù),并利用共享內(nèi)存方式統(tǒng)計(jì)接收到的數(shù)據(jù)包量;

(2)中等網(wǎng)絡(luò)環(huán)境:利用UDP 發(fā)送客戶端軟件不間斷的連續(xù)發(fā)送10000 包長(zhǎng)度為1400 字節(jié)的測(cè)試數(shù)據(jù),并利用共享內(nèi)存方式統(tǒng)計(jì)接收到的數(shù)據(jù)包量;

(3)擁堵網(wǎng)絡(luò)環(huán)境:同時(shí)運(yùn)行5 個(gè)UDP 發(fā)送客戶端軟件,分別不間斷的連續(xù)發(fā)送10000 包長(zhǎng)度為1400 字節(jié)的測(cè)試數(shù)據(jù),并利用共享內(nèi)存方式統(tǒng)計(jì)接收到的數(shù)據(jù)包量。

利用蒙特卡洛算法針對(duì)上述三種網(wǎng)絡(luò)環(huán)境下分別對(duì)文中的三種方法進(jìn)行50 次試驗(yàn)統(tǒng)計(jì),統(tǒng)計(jì)三種方法的實(shí)際報(bào)文接受速率的均值,統(tǒng)計(jì)結(jié)果如表2所示。

表2 BPF過(guò)濾器指令對(duì)照表

實(shí)驗(yàn)結(jié)果表明三種方法在網(wǎng)絡(luò)流量不大的情況下都有較低的丟包率,當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),MUX方法的丟包率最低,原始套接字方法丟包率最高;三種方法在網(wǎng)絡(luò)數(shù)據(jù)較多情況下,針對(duì)特定報(bào)文的抓包速率bpf 速度最快,原始套接字方法最慢。由于NET_ETH_P_ALL 選項(xiàng)目前只有在VxWorks6.x及以上版本才支持,目前不支持VxWorks5.x 版本,因此原始套接字方法只有在VxWorks6.x 及以上版本才有效,低版本的無(wú)法適配。

7 結(jié)語(yǔ)

數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)是網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控、網(wǎng)絡(luò)功能調(diào)試以及網(wǎng)絡(luò)數(shù)據(jù)記錄等應(yīng)用的重要基礎(chǔ),一個(gè)重要的應(yīng)用場(chǎng)景是報(bào)文的網(wǎng)絡(luò)數(shù)據(jù)記錄及回放功能,在一個(gè)復(fù)雜的網(wǎng)絡(luò)通信系統(tǒng)中,經(jīng)常需要將經(jīng)過(guò)網(wǎng)卡的數(shù)據(jù)包進(jìn)行記錄存儲(chǔ),便于后續(xù)的數(shù)據(jù)回放及復(fù)盤分析??衫帽疚奶岢龅姆椒ㄟM(jìn)行基于Vx-Works 操作系統(tǒng)的IP 層數(shù)據(jù)記錄及過(guò)濾工作。本文提出的三種方法能夠?qū)崿F(xiàn)VxWorks 操作系統(tǒng)下的IP 層數(shù)據(jù)包偵聽(tīng)的基本功能,可以捕獲經(jīng)過(guò)網(wǎng)卡的全部數(shù)據(jù)包,同時(shí)支持捕獲特定條件的數(shù)據(jù)包,例如指定源IP 地址、端口號(hào)、報(bào)文長(zhǎng)度或者某些特定字段數(shù)值滿足要求的數(shù)據(jù)報(bào)文,具有較好的實(shí)用性。本文提出了基于VxWorks 操作系統(tǒng)的IP層數(shù)據(jù)包的三種方法的原理及關(guān)鍵技術(shù)細(xì)節(jié),并在文中給出了試驗(yàn)環(huán)境搭建的詳細(xì)步驟,提出了在不同網(wǎng)絡(luò)情況下測(cè)試報(bào)文捕獲功能性能的試驗(yàn)方法,并給出了文中三種數(shù)據(jù)包捕獲的性能對(duì)比結(jié)果及結(jié)果分析,在工程應(yīng)用中可以根據(jù)需要靈活選擇適合的方法進(jìn)行報(bào)文捕獲。

猜你喜歡
鏈路層網(wǎng)絡(luò)協(xié)議監(jiān)聽(tīng)
計(jì)算機(jī)網(wǎng)絡(luò)理論下的傳播研究結(jié)構(gòu)模型:Communication一詞的兩種翻譯
基于多空間內(nèi)存共享的數(shù)據(jù)鏈路層網(wǎng)絡(luò)包捕獲方法
千元監(jiān)聽(tīng)風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
一種藍(lán)牙多跳網(wǎng)絡(luò)協(xié)議的設(shè)計(jì)與研究
電子制作(2018年17期)2018-09-28 01:56:52
網(wǎng)絡(luò)監(jiān)聽(tīng)的防范措施
電子制作(2017年20期)2017-04-26 06:58:02
基于DPI技術(shù)的語(yǔ)音視頻流量監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核設(shè)計(jì)
應(yīng)召反潛時(shí)無(wú)人機(jī)監(jiān)聽(tīng)航路的規(guī)劃
芻議局域網(wǎng)中網(wǎng)絡(luò)協(xié)議的添加與配置
科技資訊(2015年10期)2015-06-29 18:17:23
數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
淳安县| 镇原县| 右玉县| 漯河市| 苍南县| 房山区| 靖安县| 谢通门县| 来安县| 博罗县| 安塞县| 鸡东县| 吴川市| 宕昌县| 伊金霍洛旗| 南和县| 永康市| 平顶山市| 嵩明县| 峨山| 吉隆县| 高台县| 尉氏县| 微博| 凤山县| 阜阳市| 治多县| 英德市| 天长市| 历史| 中西区| 广宁县| 奈曼旗| 嘉黎县| 香港 | 房产| 五峰| 集贤县| 长汀县| 辽中县| 夏河县|