[發(fā)明專利]一種在線解析HTTPchunked編碼數(shù)據(jù)的方法有效
| 申請?zhí)枺?/td> | 201310011423.9 | 申請日: | 2013-01-11 |
| 公開(公告)號: | CN103929445B | 公開(公告)日: | 2017-06-13 |
| 發(fā)明(設計)人: | 陳君;李明哲;李軍;陳曉 | 申請(專利權(quán))人: | 中國科學院聲學研究所;北京中科華影傳媒技術(shù)有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L1/00 |
| 代理公司: | 北京法思騰知識產(chǎn)權(quán)代理有限公司11318 | 代理人: | 楊小蓉,楊青 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 在線 解析 http chunked 編碼 數(shù)據(jù) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡通信領(lǐng)域,特別涉及一種在線解析HTTP chunked編碼數(shù)據(jù)的方法。
背景技術(shù)
HTTP協(xié)議的消息格式包含消息首部和消息體。消息首部部分定義了一些屬性字段,這些屬性字段向報文接收者提供了重要的信息。其中,Content-Length屬性字段表示消息體的長度,該字段有利于數(shù)據(jù)接收過程的編程實現(xiàn)。然而,對于某些動態(tài)生成的數(shù)據(jù),消息生成者可能無法立即知悉消息體的總長度,從而不能及時計算Content-Length字段值。使用chunked編碼可以回避這一問題。Chunked是HTTP/1.1協(xié)議的一種傳輸編碼方式,它將待傳輸數(shù)據(jù)切割為多個部分,報文只需提供每個部分的長度。編碼后的消息體是一組連續(xù)的編碼塊(chunk),每個編碼塊包含了傳輸數(shù)據(jù)塊(chunk-data)及其長度(chunk-size),其格式定義如下:
chunk=chunk-size[chunk-extension]CRLF chunk-data CRLF
其中,chunk-size是chunk-data的長度,為十六進制字符串。CRLF為雙字節(jié)換行符,其ASCII碼值為0x0d0x0a。可選的chunk-extension格式用一組“name=value”字段組成,但RFC2616未對這些字段進行定義,并規(guī)定接收者忽略不能識別的字段。
流媒體業(yè)務的分發(fā)和傳輸過程使用了HTTP協(xié)議,對節(jié)目內(nèi)容進行chunked編碼。流服務器通過TCP協(xié)議接收報文,解碼后,以UDP方式推送給IPQAM,進而發(fā)送給終端用戶。由于流媒體具有數(shù)據(jù)量大、傳輸時間長的特點,流服務器將會對大量數(shù)據(jù)進行chunked解碼操作,因此,chunked解碼過程的效率對于流服務器的整體性能至關(guān)重要。選擇不同的chunked編碼解析方式,能夠給系統(tǒng)的開發(fā)效率、運行性能都能帶來相當大的影響。
作為對chunked解析的一種最簡單的實現(xiàn),離線解析方法先將一個完整的HTTP報文通過網(wǎng)絡編程技術(shù)復制到本地一個連續(xù)、單一的應用層緩沖區(qū),再基于這個連續(xù)緩沖區(qū)根據(jù)chunked編碼規(guī)則提取有效數(shù)據(jù),將解析出的數(shù)據(jù)拷貝到有效內(nèi)容緩沖區(qū)。HTTP chunked編碼離線解析法導致解碼過程中會產(chǎn)生兩次內(nèi)存拷貝,造成內(nèi)存占用多、處理延遲高的問題。且離線解析法適合于原型系統(tǒng)開發(fā),并不適合產(chǎn)品開發(fā)環(huán)境。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有的HTTP chunked編碼離線解析法內(nèi)存占用多、處理延遲高的問題,從而提供一種延遲小、內(nèi)存占用少的在線解析HTTP chunked編碼數(shù)據(jù)的方法。
為了實現(xiàn)上述目的,本發(fā)明提供了一種在線解析HTTP chunked編碼數(shù)據(jù)的方法,包括:
步驟1)、針對所接收的某一HTTP報文,設定一個數(shù)值,使得該數(shù)值的大小不小于該HTTP報文頭部和第一個chunk的chunk-size字段的長度之和,然后從所述HTTP報文的起始位置起,使用PEEK操作讀取該數(shù)值長度的字節(jié)數(shù)據(jù);
步驟2)、分析步驟1)所讀取的數(shù)據(jù),確定HTTP報文頭部和第一個chunk的chunk-size字段的長度之和,根據(jù)該長度值使用READ操作讀取所述HTTP報文頭部和第一個chunk的chunk-size字段,并丟棄;
步驟3)、根據(jù)步驟1)所讀取的數(shù)據(jù)確定第一個chunk的chunk-size字段表示的值,根據(jù)該值使用READ操作讀取第一個chunk中的chunk-data的數(shù)據(jù);
步驟4)、使用PEEK操作讀取5個字節(jié),如果該5字節(jié)恰好是一個chunk-size字段且表示的值為0,則解析結(jié)束;否則,繼續(xù)執(zhí)行下面的步驟;
步驟5)、使用PEEK操作讀取長度足以超過chunk-size字段長度的字節(jié)數(shù);
步驟6)、分析步驟5)所讀取的chunk-size字段的實際長度及其表示的值,如果chunk-size字段表示的值為零,則解析結(jié)束;否則,使用READ操作讀取等于chunk-size字段長度的字節(jié)數(shù),然后執(zhí)行下一步;
步驟7)、使用READ操作讀取等于chunk-size表示的值的字節(jié)數(shù),然后重新執(zhí)行步驟5);
其中,所述PEEK操作用于從協(xié)議棧緩沖區(qū)中獲取數(shù)據(jù)但不將該數(shù)據(jù)從協(xié)議棧緩沖區(qū)中刪除,使其能夠被后續(xù)的READ操作或PEEK操作獲取;所述READ操作用于從協(xié)議棧緩沖區(qū)中獲取數(shù)據(jù)并將該數(shù)據(jù)從協(xié)議棧緩沖區(qū)中刪除,使其不能被后續(xù)的READ或PEEK操作獲取。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國科學院聲學研究所;北京中科華影傳媒技術(shù)有限公司,未經(jīng)中國科學院聲學研究所;北京中科華影傳媒技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310011423.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:磨邊機
- 下一篇:一種用于外徑千分尺測量的支撐定位裝置
- 利用HTTP協(xié)議實現(xiàn)流媒體功能的方法、流媒體服務器及系統(tǒng)
- 一種在線解析HTTPchunked編碼數(shù)據(jù)的方法
- 一種解析HTTPchunked編碼數(shù)據(jù)的方法
- 一種基于PEEK操作的解析HTTPchunked編碼數(shù)據(jù)的方法
- HTTP chunked編碼和IP包封裝、解析方法
- 利用http協(xié)議實現(xiàn)客戶端向服務端文件上傳的方法及系統(tǒng)
- 實現(xiàn)低延時HLS直播的系統(tǒng)及方法
- 基于HTTP協(xié)議的實時數(shù)據(jù)訂閱方法
- 一種匹配管線式http請求與響應的方法





