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

?

網(wǎng)絡(luò)數(shù)據(jù)流還原重組技術(shù)研究

2011-03-17 16:07:26李芳馨劉嘉勇
通信技術(shù) 2011年7期
關(guān)鍵詞:序列號(hào)分片數(shù)據(jù)流

李芳馨,劉嘉勇

(四川大學(xué) 電子信息學(xué)院信息安全研究所,四川 成都 610065)

0 引言

傳輸控制協(xié)議(TCP,Transmission Control Protocol)重組主要應(yīng)用于安全產(chǎn)品中,入侵檢測(cè)中尤為常見,還有各類防火墻等。但是由于現(xiàn)今由于網(wǎng)絡(luò)數(shù)據(jù)流的激增,為了減少中央處理器(CPU,Central Processing Unit)的處理壓力,各類安全產(chǎn)品都紛紛采取硬件實(shí)現(xiàn)。硬件實(shí)現(xiàn)的好處非常多,可以自己提供緩存,大量減少內(nèi)核與應(yīng)用的交互,而且提高包截獲的速度同時(shí)準(zhǔn)確進(jìn)行包過濾。設(shè)計(jì)繁雜的采集卡甚至可以在硬件上實(shí)現(xiàn)TCP處理,但是同時(shí)帶來的成本問題也比較驚人。

而重組軟件中常常使用的是網(wǎng)絡(luò)入侵檢測(cè)開發(fā)庫(libnids,Library Network Intrusion Detection System),由于設(shè)計(jì)問題局限于對(duì)單個(gè)文件的處理,不適于對(duì)數(shù)據(jù)流的不間斷處理,同時(shí)對(duì)數(shù)據(jù)包的處理極容易出現(xiàn)差錯(cuò)。

1 數(shù)據(jù)流重組流程詳解

大量的數(shù)據(jù)極有可能是同時(shí)到來的,并且雜亂無章,首要的工作是要對(duì)數(shù)據(jù)流的信息進(jìn)行篩選。這部分的篩選條件包括有數(shù)據(jù)包長(zhǎng)度,數(shù)據(jù)包頭,數(shù)據(jù)包內(nèi)容等。首先是要剔除無用雜亂的信息,其中不含內(nèi)容成分的數(shù)據(jù)包包括有長(zhǎng)度有限且不含有特殊標(biāo)志位的純確認(rèn)字符(ACK,ACK nowledge Character)確認(rèn)包、Internet控制報(bào)文協(xié)議(ICMP ,Internet Control Message Protocol)數(shù)據(jù)包,地址解析協(xié)議(ARP,Address Resolution Protocol)數(shù)據(jù)包等等,進(jìn)行網(wǎng)絡(luò)互連協(xié)議(IP,Internet Protocol)還原的話要對(duì)硬件地址(MAC,Media Access Control)頭進(jìn)行解析分辨,確認(rèn)需要進(jìn)行處理的IP協(xié)議包,這個(gè)過程中由于網(wǎng)絡(luò)類型的緣故還可能要考慮點(diǎn)到點(diǎn)連接協(xié)議(PPPoE,Point-to-Point Protocol over Ethernet)數(shù)據(jù)包的解析。接下來進(jìn)行TCP重組的重點(diǎn)首先是要分辨出各個(gè)連接,分辨根據(jù)是四元組。這里面對(duì)的問題是IP分片,因?yàn)镮P分片會(huì)導(dǎo)致網(wǎng)絡(luò)層頭部缺失。將需要還原的連接按四元組組建鏈條,將數(shù)據(jù)按照相應(yīng)的順序排列存儲(chǔ),繼而根據(jù)數(shù)據(jù)包的內(nèi)部信息進(jìn)行進(jìn)步一處理,將內(nèi)容寫入文件當(dāng)中保存,即還原結(jié)束。這部分試圖模擬計(jì)算機(jī)終端中的處理過程,意即在經(jīng)過各個(gè)層次的數(shù)據(jù)包頭剝離之后將數(shù)據(jù)本身推入應(yīng)用層中。但是在網(wǎng)絡(luò)尤其是骨干網(wǎng)中進(jìn)行,則會(huì)面對(duì)數(shù)據(jù)量巨大,無應(yīng)用層檢錯(cuò),數(shù)據(jù)回環(huán)、數(shù)據(jù)重復(fù)等種種問題。同時(shí)導(dǎo)致了數(shù)據(jù)處理變得復(fù)雜和內(nèi)存緊張。以下提出一部分的解決方案。

(1)連接辨析

每個(gè)數(shù)據(jù)包都要進(jìn)行讀取和分析,以獲取四元組分辨屬于哪個(gè)連接來進(jìn)行下一步的還原。四元組的匹配是個(gè)重要的問題,在沒有IP分片的情況下可以考慮使用針對(duì)四元組的散列算法(Hash)方式節(jié)省空間,加快匹配速度,但是這樣可能會(huì)由于Hash算法的復(fù)雜性影響整個(gè)程序[1]。

(2)IP分片處理

IP分片只有在第一個(gè)包中帶有網(wǎng)絡(luò)層數(shù)據(jù)包頭,意即IP分片的后續(xù)內(nèi)容中只能獲取 IP地址而沒有端口無法湊出四元組進(jìn)行分辨,此類數(shù)據(jù)包可以模糊匹配,將它設(shè)定生存期后加入到IP相合的鏈條中去,根據(jù)該連接的實(shí)際情況進(jìn)一步處理。連接在生存期中始終不出現(xiàn)第一個(gè)分片的話即認(rèn)為連接并沒有出現(xiàn)分片,將分片丟棄。IP頭中的分片順序作為IP分片排序方式,可以重組被分片的報(bào)文,但是重復(fù)的順序無論如何處理都可能會(huì)導(dǎo)致一定的差錯(cuò)出現(xiàn)。

這樣的處理可能會(huì)導(dǎo)致內(nèi)存被重復(fù)數(shù)據(jù)占用。但實(shí)際上TCP連接中極力避免出現(xiàn)IP分片的出現(xiàn),影響比較微小。即便是用戶數(shù)據(jù)包協(xié)議(UDP,User Datagram Protocol),同時(shí)出現(xiàn)兩個(gè)分片連接可能性也不大[2]。

(3)TCP標(biāo)志位判斷

TCP頭中包含有當(dāng)前數(shù)據(jù)包的標(biāo)志位,含有創(chuàng)建、結(jié)束連接、數(shù)據(jù)確認(rèn)等,有效辨別是必須的,同時(shí)可以提高數(shù)據(jù)處理速度。TCP建立連接需要三次握手,其中包含有兩次建立連接(SYN,synchronize)標(biāo)志置位,選擇從SYN標(biāo)志開始建立連接鏈,那就需要把重復(fù)的 SYN忽略掉。而出現(xiàn)的第一個(gè)結(jié)束連接(FIN,finish)包則意味著這次連接宣告結(jié)束,可以做結(jié)束處理,及時(shí)將連接完全清空,而對(duì)重復(fù)的FIN也要忽略。連接生存期的設(shè)定可以固定,同時(shí)也可以通過是否有新連接來判定是否連接已經(jīng)結(jié)束。同樣的四元組新出現(xiàn)SYN包或者復(fù)位(RST,Reset the connection)包,即該連接宣告結(jié)束,清空連接鏈,停止該連接的重組。

(4)TCP報(bào)文處理

由于 UDP不可靠性沒有自檢能力且沒有前后順序,只要將依次捕獲的數(shù)據(jù)包的包頭剝離,獲取數(shù)據(jù)即可,但是必須要進(jìn)行生存期處理,因?yàn)?UDP的結(jié)束沒有數(shù)據(jù)包進(jìn)行提示。但是可靠連接的TCP則相反,為了獲取相對(duì)有效數(shù)據(jù),就需要在程序中進(jìn)行比較復(fù)雜的可靠性處理。

最重要的依據(jù)就是TCP頭中的序列號(hào)字段,這部分標(biāo)志著數(shù)據(jù)包中的內(nèi)容在整個(gè)要還原內(nèi)容的位置,可以輔助檢錯(cuò)并部分糾錯(cuò)。正常情況下,序列號(hào)加上這次的數(shù)據(jù)長(zhǎng)度即是下次序列號(hào)的大小。但是很容易出現(xiàn)小于或者大于預(yù)定的序列號(hào)的情況。

出現(xiàn)較小的序列號(hào)有幾種可能性:①由于超時(shí)重傳或者其他相關(guān)原因,出現(xiàn)的是純粹重復(fù)的數(shù)據(jù)包,這個(gè)最容易處理,可以直接丟棄。或者是重疊的數(shù)據(jù)包,將預(yù)計(jì)的序列號(hào)大小減去實(shí)際的序列號(hào)大小,計(jì)算出重疊的數(shù)據(jù)長(zhǎng)度,將這部分剔除即可獲取真實(shí)的數(shù)據(jù);②新的數(shù)據(jù)包雖然有重復(fù),但實(shí)際上是由于上一個(gè)數(shù)據(jù)包被客戶端認(rèn)定為錯(cuò)誤或者其他有必要重新傳送的原因而再一次被傳遞,這個(gè)時(shí)候可以采取的措施是將新的數(shù)據(jù)包取代舊的相同序列號(hào)的數(shù)據(jù)包并入連接鏈中區(qū),這樣做可能會(huì)影響到緊跟在后面的數(shù)據(jù)包內(nèi)容。這個(gè)時(shí)候難以確認(rèn)新的數(shù)據(jù)包究竟是出于什么原因出現(xiàn)是個(gè)難題,究竟是時(shí)延太長(zhǎng)還是新發(fā)送的內(nèi)容,同時(shí)還會(huì)影響到數(shù)據(jù)排序后的進(jìn)一步處理;③出現(xiàn)數(shù)據(jù)回環(huán),32 bit的序列號(hào)在數(shù)據(jù)包流中不斷遞增,發(fā)送序號(hào)在增長(zhǎng)到頂峰之后,開始重新啟用較小的序列號(hào)開始重新計(jì)算。這個(gè)時(shí)候可以參考防止重復(fù)報(bào)文(PAWS,Protect Against Wrapped Sequence numbers)算法使用時(shí)間戳[3],時(shí)間戳對(duì)每個(gè)將要發(fā)送的窗口加一或者更大,可以作為判斷基準(zhǔn)。RST標(biāo)志未置位、TCP曾收到過對(duì)端發(fā)送的有效非零時(shí)間戳,當(dāng)前報(bào)文段中的時(shí)間戳小于原先收到的時(shí)間戳以上三個(gè)條件同時(shí)為真,則認(rèn)定該報(bào)文段重復(fù)丟棄。反之,則保留重新計(jì)算序列號(hào)。如果連接出現(xiàn)了很長(zhǎng)時(shí)間的空閑,則收到的報(bào)文段時(shí)間戳值也會(huì)回繞導(dǎo)致了PAWS測(cè)試失敗。這個(gè)可能性雖然微小,但是依然不可忽視需要進(jìn)一步研究。

出現(xiàn)較大的序列號(hào)則是明顯出現(xiàn)了丟包的情況。也就是在預(yù)定的序列號(hào)和現(xiàn)在獲取的數(shù)據(jù)包中間有缺失。這個(gè)缺失的數(shù)據(jù)包可能會(huì)在一段時(shí)間后再度捕獲,但也可能是出現(xiàn)了捕獲數(shù)據(jù)流不全出現(xiàn)丟包現(xiàn)象。即時(shí)分析中想要做出判斷是十分困難的,只能進(jìn)行短暫的等待以及容忍必要的缺失。否則會(huì)影響數(shù)據(jù)處理速度和內(nèi)存占用。

(5)內(nèi)存緩沖區(qū)占用處理

在使用軟件進(jìn)行重組還原的情況下,每個(gè)數(shù)據(jù)包的處理都要先將數(shù)據(jù)包的內(nèi)容讀入內(nèi)存。并且還要進(jìn)行實(shí)時(shí)分析,新的數(shù)據(jù)會(huì)不斷涌入。這樣為了保證內(nèi)存不被擁堵,就要盡量快速的處理數(shù)據(jù)包,減少相關(guān)數(shù)據(jù)滯留在內(nèi)存的時(shí)間,盡快將數(shù)據(jù)包送出內(nèi)存[4]。

在此選擇的處理方式向客戶終端學(xué)習(xí),將數(shù)據(jù)及時(shí)推入應(yīng)用層。在這里表現(xiàn)為寫入文件。這樣在內(nèi)存中保留文件句柄,不斷將數(shù)據(jù)從內(nèi)存寫入硬盤,減少了內(nèi)存的占用。要考量的則是寫入的時(shí)機(jī)。這里同樣參考終端主機(jī)操作系統(tǒng)的處理方式。

UDP的數(shù)據(jù)沒有順序性,不過在分片情況下重組時(shí)還是會(huì)出現(xiàn)數(shù)據(jù)排序的情況。在沒有分片或者分片重組已經(jīng)結(jié)束的情況下,每來一個(gè)數(shù)據(jù)包都可以直接剝離數(shù)據(jù)包頭,將數(shù)據(jù)頂入應(yīng)用層[5]。

TCP的數(shù)據(jù)情況要復(fù)雜得多,在經(jīng)過一系列的判斷后可能采取拋棄重復(fù)報(bào)文,剪裁重復(fù)報(bào)文段等手段。但是缺包情況則在必要情況下適當(dāng)忽略,這部分參考標(biāo)志位推入(PSH,push)標(biāo)志,對(duì)于操作系統(tǒng)來說,出現(xiàn)PSH就要把數(shù)據(jù)推入應(yīng)用層進(jìn)行處理,在數(shù)據(jù)流重組的相同情況下,可以選擇近似的處理,對(duì)丟失的包進(jìn)行適當(dāng)忽略,以防止程序崩潰和緩沖區(qū)擁堵[6]。采取此種解決方式可能會(huì)出現(xiàn)的問題即是無法完善處理包只是延時(shí)而并未丟失的情況。補(bǔ)充完善的一種方式就是重新寫入文件,但這樣需要保留前面所有連接內(nèi)容的情況,付出的代價(jià)過大。事實(shí)上PSH字段出現(xiàn),即意味著所發(fā)出的包基本已經(jīng)到位,可以降低以上風(fēng)險(xiǎn)。

2 結(jié)語

網(wǎng)絡(luò)流匹配還原是一項(xiàng)非常有用的工作。網(wǎng)絡(luò)在現(xiàn)實(shí)生活中占有的比重越來越大,所承載的信息量也是越來越多,如何從同樣日漸繁雜增多的數(shù)據(jù)量中獲取有意義的數(shù)據(jù)是非常重要的[7]。而研究網(wǎng)絡(luò)數(shù)據(jù)流的即時(shí)還原獲取的信息更具有及時(shí)性。軟件實(shí)現(xiàn)這個(gè)功能要盡量用有限的資源獲取最大的信息量,并且要求有足夠的穩(wěn)定性[8]。

[1] 鄧月華.基于寬帶網(wǎng)絡(luò)的TCP報(bào)文還原與應(yīng)用研究[D].成都:四川大學(xué), 2006.

[2] 劉益洪,戴冬梅.TCP/IP的擁塞控制策略[J].通信技術(shù),2008,41(07):135-137.

[3] GARY R W, RICHARD STEVENS W.TCP/IP詳解卷二:實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2010:636.

[4] 侯新宇,王晟,駱光明.基于接收端的TCP流量控制及優(yōu)化研究[J].通信技術(shù),2007,40(10):21-22,48.

[5] DANIEL P B, MARCO Cesati.深入理解Linux內(nèi)核[M].第2版.北京:中國電力出版社,2005:223.

[6] 趙軍偉,劉勛,董浩.基于TCP協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng)的實(shí)現(xiàn)[J].中國測(cè)試,2010(01):23.

[7] 金甌,施勇,薛質(zhì).基于TCP協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)篡改[J].信息安全與通信保密,2010(04):37.

[8] 張藝瀕,張志斌,趙詠,等.TCP與UDP網(wǎng)絡(luò)流量對(duì)比分析研究[J].計(jì)算機(jī)應(yīng)用研究,2010(06):58.

猜你喜歡
序列號(hào)分片數(shù)據(jù)流
上下分片與詞的時(shí)空佈局
詞學(xué)(2022年1期)2022-10-27 08:06:12
分片光滑邊值問題的再生核方法
CDN存量MP4視頻播放優(yōu)化方法
汽車維修數(shù)據(jù)流基礎(chǔ)(下)
基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
recALL
一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
基于數(shù)據(jù)流聚類的多目標(biāo)跟蹤算法
北醫(yī)三院 數(shù)據(jù)流疏通就診量
PP助手教你辨別翻新iPhone5小白不再中招
永春县| 藁城市| 潜江市| 砀山县| 临沧市| 秭归县| 同心县| 五莲县| 达尔| 利辛县| 合山市| 定西市| 郧西县| 乌兰县| 汝城县| 合川市| 营山县| 东兰县| 郧西县| 新昌县| 涿州市| 普洱| 奇台县| 大城县| 墨玉县| 广南县| 汝城县| 武夷山市| 延寿县| 蓬溪县| 通化县| 拉萨市| 九江市| 巴南区| 星座| 永康市| 射洪县| 安平县| 神池县| 克拉玛依市| 周宁县|