邸晨旭
(中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081)
DVB-S/S2信道中網(wǎng)頁內(nèi)容的盲提取方法研究
邸晨旭
(中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081)
衛(wèi)星寬帶互聯(lián)網(wǎng)業(yè)務(wù)中常用DVB-S/S2信道傳輸IP業(yè)務(wù),基于衛(wèi)星互聯(lián)網(wǎng)的內(nèi)容監(jiān)管的需要,提出一種從DVB-S/S2信道中盲提取網(wǎng)頁內(nèi)容的方法。對解調(diào)后碼流類型進(jìn)行盲識別并完成傳輸流(TS)和通用流(GS)的同步,對其IP報文封裝協(xié)議類型進(jìn)行盲識別并提取IP數(shù)據(jù),對IP數(shù)據(jù)中HTTP會話進(jìn)行識別,并設(shè)計了容錯算法通過會話的單向數(shù)據(jù)流提取其傳輸?shù)木W(wǎng)頁內(nèi)容。對實際衛(wèi)星信號的測試結(jié)果表明,該方法能夠有效地從DVB-S/S2信道中提取出網(wǎng)頁內(nèi)容。
衛(wèi)星寬帶互聯(lián)網(wǎng);DVB-S;DVB-S2;盲提取
DVB-S[1]和DVB-S2[2]標(biāo)準(zhǔn)作為衛(wèi)星數(shù)字視頻廣播標(biāo)準(zhǔn),目前廣泛應(yīng)用于衛(wèi)星廣播通信系統(tǒng)中?;贒VB 標(biāo)準(zhǔn)的寬帶衛(wèi)星通信系統(tǒng),系統(tǒng)的前向鏈路采用DVB-S/S2 標(biāo)準(zhǔn)、TDM[3]的工作方式;返向鏈路采用DVB-RCS[4]標(biāo)準(zhǔn)、MF-TDMA[5]的工作方式[6]。隨著IP 技術(shù)的發(fā)展,地面通信網(wǎng)絡(luò)幾乎所有的網(wǎng)絡(luò)設(shè)備和終端都支持TCP/IP 協(xié)議[7]。數(shù)字視頻廣播的因特網(wǎng)協(xié)議(Internet Protocol over Digital Video Broadcasting,IP over DVB)技術(shù)以其對數(shù)據(jù)廣播、組播業(yè)務(wù)的良好支持,目前已廣泛應(yīng)用于遠(yuǎn)程教育、寬帶數(shù)據(jù)廣播等領(lǐng)域[8]。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,互聯(lián)網(wǎng)已經(jīng)深入到社會各個角落,內(nèi)容安全已經(jīng)成為當(dāng)前互聯(lián)網(wǎng)網(wǎng)絡(luò)安全中最重要的議題之一[9]。文獻(xiàn)[10-13]采用通過在局域網(wǎng)結(jié)點進(jìn)行數(shù)據(jù)抓包方法對網(wǎng)內(nèi)用戶瀏覽的內(nèi)容進(jìn)行提取。衛(wèi)星信號的非合作接收條件下,采用的IP封裝的各層協(xié)議格式不同,并且通常只能接收到網(wǎng)絡(luò)會話中一個方向的數(shù)據(jù)流,傳統(tǒng)的網(wǎng)絡(luò)內(nèi)容提取方法并不適用。本文針對DVB-S/S2信道非合作接收條件,設(shè)計了一種能夠自動識別并解析碼流獲得IP報文的方法,并設(shè)計了一種容錯算法對IP報文中的HTTP會話的單向流進(jìn)行重組提取網(wǎng)頁內(nèi)容的方法。
1.1 DVB-S/S2碼流分析
DVB碼流主要分為傳輸流(TS)和通用流(GS)2種。TS流是幀長為188 Byte,且每幀第1個Byte為“0x47”。GS流沒有固定的格式,按連續(xù)流處理。在DVB-S標(biāo)準(zhǔn)中,封裝的數(shù)據(jù)流只能是TS流,而在DVB-S2標(biāo)準(zhǔn)中,擴(kuò)充了GS流的支持。對于DVB-S信號,經(jīng)過解調(diào)、糾錯和解擾后的碼流即為TS流。對于DVB-S2信號過解調(diào)、糾錯和解擾后的碼流是基帶幀(BB-Frame)格式,如圖1 所示[2]。
圖1 DVB-S2標(biāo)準(zhǔn)中TS流與GS流的封裝方法
基帶幀由80 bit的頭部和數(shù)據(jù)域組成。頭部指示了數(shù)據(jù)域的封裝格式,包括圖1中5個域和1 Byte的CRC-8校驗,CRC-8校驗對頭部前9個Byte進(jìn)行校驗。其中,MATYPE 域表示輸入流的格式,調(diào)制類型以及傳輸?shù)臐L降系數(shù)。MATYPE 的首個Byte的前2個bit為用來指示數(shù)據(jù)域的流類型,即是TS流還是GS流。DFL表示基帶幀數(shù)據(jù)域總長度,單位為bit。
當(dāng)采用TS流傳輸時,UPL表示用戶包長度,單位為bit,為1 504 bit(188 Byte)。TS流在封裝成基帶幀時,將同步字節(jié)“0x47”提取出來寫入SYNC字段中,而原來同步字節(jié)的位置,被替換成該188 Byte的TS數(shù)據(jù)包的CRC-8校驗。在解析的時候,應(yīng)當(dāng)采用相反的步驟,對每個數(shù)據(jù)包進(jìn)行CRC-8校驗,輸出校驗通過的數(shù)據(jù)包并將校驗位替換成“0x47”。SYNCD表示基帶幀數(shù)據(jù)域起始位置,即到該基帶幀首個用戶包的距離,SYNCD值為65 535時,表示基帶幀數(shù)據(jù)域為空。
當(dāng)采用GS流傳輸時,僅DFL有效,表示基帶幀數(shù)據(jù)域總長度,單位為bit。
1.2 TS流盲識別與同步
TS流是由188 Byte的等長幀組成,且首位為同步字節(jié),值為0x47,對TS流輸出進(jìn)行盲識別關(guān)鍵在于判斷碼流是否存在以188 Byte為間隔的值為0x47的Byte。在工程實踐中,傳輸過程中存在Byte丟失、錯誤等情況,需要連續(xù)緩存多個幀才可以判斷和同步TS流,這樣需要較大的內(nèi)存開銷。由于碼流通常是串行輸入,提出了一種狀態(tài)轉(zhuǎn)移的TS流同步方法。該方法僅需要保留1個狀態(tài)變量、1個計數(shù)器和1 Byte的輸入緩存即可完成TS流盲識別與同步。
數(shù)據(jù)輸入時,初始狀態(tài)為狀態(tài)1(失鎖)。
狀態(tài)1(失鎖):如果輸入Byte為0x47,設(shè)置計數(shù)器為N*188(N為判定TS流同步需要的連續(xù)同步幀數(shù)),轉(zhuǎn)移到狀態(tài)2,否則保持在狀態(tài)1。
狀態(tài)2(同步中):每輸入1 Byte,計數(shù)器減1。如果計數(shù)器為188的整數(shù)倍,判斷輸入Byte是否為0x47,如果不是,轉(zhuǎn)移到狀態(tài)1,否則再判斷計數(shù)器是否為0,如果是,計數(shù)器設(shè)置為188,轉(zhuǎn)移到狀態(tài)3,否則保持在狀態(tài)2。
狀態(tài)3(鎖定):每輸入1 Byte,計數(shù)器減1。如果計數(shù)器為0且輸入Byte是不為0x47,轉(zhuǎn)移到狀態(tài)1,否則保持在狀態(tài)3。該狀態(tài)表示碼流已經(jīng)鎖定。
算法所同步出的TS流,圈定的為同步字節(jié)0x47,如圖2所示。
圖2 TS流同步結(jié)果
1.3 GS流盲識別與同步
GS流的輸出通常是保留了基帶幀頭的部分,方便數(shù)據(jù)的同步和解析。GS流是由不等長幀組成,在每個幀頭的DFL域指示了幀長。識別與同步GS流首先要找到一個10 Byte的序列滿足CRC-8校驗,并認(rèn)為其為BB-Header,并根據(jù)DFL的長度跳過數(shù)據(jù)域,然后判斷下一個10 Byte是否滿足CRC-8校驗,連續(xù)同步N幀即為鎖定。同樣采用狀態(tài)轉(zhuǎn)移的GS流的同步方法來解決GS流的盲識別與同步。不同于TS流的處理方法,需要一個10 Byte的FIFO來作為CRC-8校驗和解析DFL值。并且設(shè)置2個計數(shù)器,Byte計數(shù)器用于統(tǒng)計當(dāng)前幀的位置,幀計數(shù)器用于統(tǒng)計連續(xù)同步的幀數(shù)量。
數(shù)據(jù)輸入時,初始狀態(tài)為狀態(tài)1(失鎖)。
狀態(tài)1(失鎖):每輸入1 Byte,將該Byte寫入FIFO,若FIFO中的10 Byte的CRC-8校驗通過,設(shè)置Byte計數(shù)器為DFL/8,幀計數(shù)器為N(N為判定TS流同步需要的連續(xù)同步幀數(shù)),轉(zhuǎn)移到狀態(tài)2,否則保持在狀態(tài)1。
狀態(tài)2(同步中):每輸入1 Byte,將該Byte寫入FIFO,Byte計數(shù)器減1。如果Byte計數(shù)器為0,判斷FIFO中的10 Byte CRC-8校驗通過,如果不是,轉(zhuǎn)移到狀態(tài)1,否則幀計數(shù)器減1。再判斷幀計數(shù)器是否為0,如果是,Byte計數(shù)器設(shè)置DFL/8,轉(zhuǎn)移到狀態(tài)3,否則保持在狀態(tài)2。
狀態(tài)3(鎖定):每輸入1 Byte,將該Byte寫入FIFO,Byte計數(shù)器減1。如果Byte計數(shù)器為0,若FIFO中的10 Byte CRC-8校驗不通過,轉(zhuǎn)移到狀態(tài)1,否則保持在狀態(tài)3。該狀態(tài)表示碼流已經(jīng)鎖定。
該算法對GS流的同步效果示意如圖3所示。被圈定的Byte為BB-Header。
圖3 GS流同步結(jié)果
2.1 多協(xié)議封裝(MPE)
MPE[14]是將IP報文封裝在TS流中的一種協(xié)議,于1996年首次被提出,自此成為DVB-S中傳輸IP數(shù)據(jù)普遍接受并使用的標(biāo)準(zhǔn)。MPE封裝方式將一個IP報文封裝到TS流的程序特殊信息(PSI)表中。該P(yáng)SI表的table_id通常為0x3e。采用MPE封裝的PSI表,表頭擴(kuò)展為MPE頭,并且在采用CRC-32校驗。多協(xié)議封裝示意如圖4所示。
圖4 多協(xié)議封裝示意
判斷DVB碼流是否包含MPE封裝的IP報文,主要利用PSI表頭是否為0x3e以及CRC-32校驗,和最后提取出來的IP報文的頭部是否通過IP頭校驗算法來確認(rèn),如圖5 所示。最后將通過校驗的IP報文輸出。
圖5 MPE封裝IP報文的識別與提取
2.2 輕量封裝(ULE)
ULE[15]提供了一種簡單的在TS流中封裝IP數(shù)據(jù)包的機(jī)制,該方法于2005年12月被IETF采用為RFC標(biāo)準(zhǔn)。該封裝方法對IP報文作為PDU僅增加一個很小的頭部。最小ULE頭部僅有4個Byte,包含目的地址缺省域、長度域和類型域。判斷與解析采用ULE封裝的IP數(shù)據(jù)時,僅需要解析ULE頭并判斷IP報頭是否校驗通過即可。目前衛(wèi)星信號采用該協(xié)議的較少,尚未有實際數(shù)據(jù)。
2.3 通用流封裝(GSE)
在GS流中,通??梢姷氖荊SE封裝[16]。GSE封裝采用了不定長幀,協(xié)議規(guī)定了 IP數(shù)據(jù)可以封裝在1個或多個GSE包中,一個基帶幀又可以包含1個或者多個GSE包,如圖6 所示。
圖6 GSE封裝示意
GSE包頭包含了每個GSE包長度,以及該GSE包是否包含一個獨立的IP報文,或者包含某個IP報文的起始段、中間段和結(jié)束段的標(biāo)志。根據(jù)GSE頭,或者拼接恢復(fù)由多個GSE包組成的IP報文。最后輸出校驗通過的IP報文。
3.1 TCP單向流重組算法
IP報文中網(wǎng)頁內(nèi)容通常是采用HTTP協(xié)議傳輸,而HTTP又是基于TCP協(xié)議。所以要恢復(fù)IP報文中網(wǎng)頁內(nèi)容,必須先對IP報文進(jìn)行TCP流重組。要進(jìn)行TCP流重組,首先要根據(jù)源地址、目的地址、源端口和目的端口對IP報文進(jìn)行索引,將上述4個字段相同的IP報文放入相同的處理緩存中,再對不同的處理緩存進(jìn)行TCP數(shù)據(jù)的重組,最終得到完整正確的TCP流。
由于TCP協(xié)議是面向連接的,計算機(jī)雙方通信必須先建立連接,然后數(shù)據(jù)傳送,最后將連續(xù)關(guān)閉。在建立和關(guān)閉連接時,采用3次握手方法,數(shù)據(jù)傳送時采用傳送與確認(rèn)的方法進(jìn)行對話。
DVB信道通常接收到的IP數(shù)據(jù)僅是TCP對話的一個方向的數(shù)據(jù),僅能接收到發(fā)送的數(shù)據(jù)和發(fā)送確認(rèn)ACK之一。對于僅接收到ACK的情況,因為沒有實際數(shù)據(jù)接收到,所以可以跳過此類對話。所以僅需要考慮只收到發(fā)送數(shù)據(jù)而無法收到ACK的情況。
在TCP的數(shù)據(jù)傳輸過程中,會出現(xiàn)和重傳與亂序的情況。如果在重傳超時時間內(nèi)沒有收到接收方主機(jī)對某數(shù)據(jù)包的確認(rèn)回復(fù),發(fā)送方主機(jī)就認(rèn)為此數(shù)據(jù)包丟失,并再次發(fā)送這個數(shù)據(jù)包給接收方,這稱為TCP重傳。數(shù)據(jù)包在網(wǎng)絡(luò)中沿著不同的路徑進(jìn)行傳輸,先從發(fā)送端發(fā)出的數(shù)據(jù)包不一定先到達(dá)接收端,從而出現(xiàn)亂序的情況。在非合作接收DVB數(shù)據(jù)的情況下,會出現(xiàn)誤碼導(dǎo)致丟包的情況,這種情況下又會出現(xiàn)接收TCP報文丟失的情況。
為了解決接收TCP數(shù)據(jù)亂序、重傳和丟包的問題,需要為每一個對話開辟接收緩存,采用類似于TCP協(xié)議中實現(xiàn)流量控制和擁塞控制的滑動窗口技術(shù)??梢韵冉邮障仁盏降暮罄m(xù)數(shù)據(jù),而不必等待當(dāng)前數(shù)據(jù)分組。這種機(jī)制提高了數(shù)據(jù)處理的吞吐量,無需對輸入數(shù)據(jù)回溯。
類滑動窗口機(jī)制對數(shù)據(jù)流按Byte為單位編號。窗口的大小代表了接收緩存的大小。在接收端保留了2個指針分別指向了滑動窗口的兩端,如圖7 所示。最左邊的指針是窗口左邊界,是已接收到的數(shù)據(jù)分組,最右邊的指針是窗口的右邊界,指向允許接收的最大數(shù)據(jù)分組。隨著數(shù)據(jù)的接收,窗口從左向右滑動。當(dāng)接收到了大于窗口右邊界的數(shù)據(jù)時,說明窗口左邊界數(shù)據(jù)接收超時,窗口將右邊界滑動到該位置,丟棄窗口左邊界尚未接收到的數(shù)據(jù)。
圖7 滑動窗口非合作接收TCP數(shù)據(jù)
3.2 HTTP網(wǎng)頁內(nèi)容盲識別與提取算法
在拼接好的TCP數(shù)據(jù)流之后,需要判斷該TCP對話傳輸?shù)膬?nèi)容是否為HTTP網(wǎng)頁,并且將HTTP傳輸?shù)木W(wǎng)頁內(nèi)容進(jìn)行存儲。
一個完整的HTTP對話通常包含請求消息與應(yīng)答消息,每個消息包含請求或應(yīng)答行、頭域和消息體3個部分。網(wǎng)頁內(nèi)容通常存在于應(yīng)答消息中,一個典型的HTTP應(yīng)答消息如圖8 所示。
圖8 HTTP應(yīng)答消息
其中HTTP應(yīng)答報文中的首行叫做狀態(tài)行,其狀態(tài)代碼表示服務(wù)器對請求做出響應(yīng)的狀態(tài)是否成功。狀態(tài)碼由3位數(shù)字構(gòu)成,3位數(shù)字的首位表示響應(yīng)的類型,分別是:1(通知信息),2(成功),3(重定向),4(客戶端錯誤)和5(服務(wù)器端錯誤)。HTTP網(wǎng)頁內(nèi)容通常在應(yīng)答消息部分,而且包含網(wǎng)頁內(nèi)容的狀態(tài)代碼應(yīng)該為2xx(成功),所以恢復(fù)網(wǎng)頁內(nèi)容首先要在TCP流中篩選出該部分,即符合“HTTP/X.X 2XX OK ”字串開頭的部分,并將該消息的消息體保存為文件。
狀態(tài)行之后是HTTP應(yīng)答頭域,其中比較重要的字段是Content-Length表示消息體長度,Content-Type表示消息體的內(nèi)容類型,保存消息體內(nèi)容為文件時,需要根據(jù)其設(shè)置文件擴(kuò)展名。
若服務(wù)器對WEB信息進(jìn)行了壓縮,會在報文頭部增加Content-Encoding字段,其值為gzip或者deflate(由于HTTP壓縮特性為可選項,不使用HTTP編碼時,報文頭部不會加入該字段)[11]。這時HTTP消息的內(nèi)容還未經(jīng)過解壓,是一段編碼過的內(nèi)容,無法呈現(xiàn)給用戶。所以,需要對經(jīng)過HTTP壓縮的內(nèi)容解壓縮。HTTP壓縮使用的是通用的壓縮算法gzip和deflate,經(jīng)過對數(shù)據(jù)的解壓縮、校驗,然后再轉(zhuǎn)存成文件呈現(xiàn)給用戶。
3.3 實驗結(jié)果
從實際接收到衛(wèi)星DVB-S/S2信道中恢復(fù)的IP報文和網(wǎng)頁圖片如圖9和圖10所示。實驗說明該方法能夠有效地從DVB-S/S2信道中提取網(wǎng)頁內(nèi)容。
圖9 恢復(fù)的IP報文
圖10 恢復(fù)的網(wǎng)頁圖片
本文提出了一種從DVB-S/S2信道提取出IP報文并且恢復(fù)其中網(wǎng)頁內(nèi)容的方法。該方法可以自動識別并同步TS流和GS流的輸入,然后識別不同的封裝協(xié)議格式并提取IP數(shù)據(jù),并提出了一種適應(yīng)衛(wèi)星非合作接收情況下的TCP單向流重組算法,解決接收數(shù)據(jù)亂序、重傳和丟包的情況,最后恢復(fù)其中網(wǎng)頁的內(nèi)容并保存成文件,并結(jié)合衛(wèi)星實際信號進(jìn)行了實驗。結(jié)果表明該方法能夠有效地從DVB-S/S2信道提取網(wǎng)頁內(nèi)容。
[1] ETSIEN 300 421 V1.1.2(1997-08).Digital Video Broadcasting(DVB):Framing Structure,Channel Coding and Modulation for 11/12 GHz Satellite Services[S].
[2] ETSI EN 302 307 V1.2.1(2009-08).Digital Video Broadcasting (DVB):Second Generation Framing Structure,Channel Coding and Modulation Systems for Broadcasting,Interactive Services,News Gathering and Other Broadband Satellite Applications[S].
[3] 劉 欣,潘亞漢,韓 超,等.DVB-RCS 技術(shù)及其在航空衛(wèi)星寬帶通信中的應(yīng)用[J].電子質(zhì)量,2012(5):18-20.[4] ETSI EN 301 790 V1.5.1(2009-05).Digital Video Broadcasting(DVB):Interaction Channel for Satellite Distribution Systems[S].
[5] 汪春霆,張俊祥,潘申富,等.衛(wèi)星通信系統(tǒng)[M].北京:國防工業(yè)出版社,2012.
[6] 戈 靜,潘申富.DVB-S2前向鏈路傳輸能力評估[J].無線電通信技術(shù),2015,41(2):32-34.
[7] 郄紹輝,楊 佳.基于IP的衛(wèi)星通信終端設(shè)計與實現(xiàn)[J].無線電通信技術(shù),2013,39(3):93-96.
[8] 栗志意,趙建國,晏 堅.IP over DVB封裝技術(shù)效率分析[J].清華大學(xué)學(xué)報(自然科學(xué)版),2009(8):1 126-1 130.
[9] 趙仲孟,陳 劍,張選平,等.網(wǎng)絡(luò)內(nèi)容安全分析與對策[J].計算機(jī)工程,2002(5):41-43.
[10] 譚敏生,湯 亮.基于HTTP的網(wǎng)絡(luò)數(shù)據(jù)包還原技術(shù)研究[J].計算機(jī)技術(shù)與發(fā)展,2007(6):176-178.
[11] 王俊涵.高效網(wǎng)絡(luò)內(nèi)容還原系統(tǒng)的設(shè)計與實現(xiàn)[D].長沙:湖南大學(xué),2010.
[12] 陳 淼.基于數(shù)據(jù)包分析的網(wǎng)頁還原技術(shù)研究[J].中國科技信息,2011(16):77.
[13] 周林云.Web信息采集系統(tǒng)設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2013.
[14] ETSI EN 301 192V1.5.1(2009-11).Digital Video Broadcasting(DVB):Specification for Data Broadcasting[S].
[15] RFC 4326(2005).Unidirectional Lightweight Encapsulation (ULE)for Transmission of IP Datagram over an MPEG-2 Transport Stream[S].
[16] ETSI TS 102 606 V1.1.1(2007).Digital Video Broadcasting (DVB):Generic Stream Encapsulation(GSE)Protocol[S].
Research on Blind Extraction Method of Web Content inDVB-S/S2 Channel
DI Chen-xu
(The54thResearchInstituteofCETC,ShijiazhuangHebei050081,China)
In satellite broadband Internet service,DVB-S/S2 channel is used to transmit IP service.A method of blind extracting the content of the web page from the DVB-S/S2 channel is proposed based on the satellite Internet content supervision.Firstly,the type of the demodulated stream is blindly identified.And the Transport Stream(TS)and the Generic Stream(GS)are synchronized.Then,the IP packet encapsulation protocol type is blindly identified and IP data is extracted.Finally,a fault-tolerant algorithm is designed to extract the content of the web page from the single data stream of HTTP session.Test results of the real satellite signal show that the method can effectively extract the content of the web page from the DVB-S/S2 channel.
satellite broadband Internet service;DVB-S;DVB-S2;blind extraction
2017-03-06
通信網(wǎng)信息傳輸與分發(fā)技術(shù)重點實驗室基金資助項目(2016YFB0800300)。
10.3969/j.issn.1003-3106.2017.06.01
邸晨旭.DVB-S/S2信道中網(wǎng)頁內(nèi)容的盲提取方法研究[J].無線電工程,2017,47(6):1-5.[DI Chenxu.Research on Blind Extraction Method of Web Content in DVB-S/S2 Channel[J]. Radio Engineering,2017,47(6):1-5.]
TN911
A
1003-3106(2017)06-0001-05
邸晨旭 男,(1986—),工程師。主要研究方向:通信信號分析。