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





