專利名稱:基于包處理的http服務(wù)器及其數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,更具體地說,涉及一種基于包處理的HTTP服務(wù)器及其 數(shù)據(jù)處理方法。
背景技術(shù):
超文本傳輸協(xié)議(Hypertext Transfer Protocol,簡(jiǎn)稱“HTTP)是用于從萬維網(wǎng) 服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。目前的HTTP服務(wù)器都是基于傳輸控制協(xié)議 (Transmission Control Protocl,簡(jiǎn)稱“TCP”)之上實(shí)現(xiàn)的,如圖3所示,該HTTP服務(wù)器 處理客戶端發(fā)送來的數(shù)據(jù)包的具體過程是客戶端發(fā)送到HTTP服務(wù)器的數(shù)據(jù)包首先由網(wǎng) 卡驅(qū)動(dòng)進(jìn)行處理,將網(wǎng)絡(luò)數(shù)據(jù)幀還原為IP數(shù)據(jù)包;然后網(wǎng)卡驅(qū)動(dòng)將IP數(shù)據(jù)包交給內(nèi)核的協(xié) 議棧處理,協(xié)議棧對(duì)數(shù)據(jù)包進(jìn)行解析,解析得到TCP數(shù)據(jù)包時(shí)則進(jìn)行序列號(hào)核對(duì)、排序等操 作,以確保TCP傳輸?shù)目煽啃?;協(xié)議棧處理好后,應(yīng)用層的TCP套接字則收到消息,在TCP協(xié) 議的數(shù)據(jù)內(nèi)容之上再進(jìn)行解析,得到HTTP數(shù)據(jù)后進(jìn)入HTTP的相關(guān)邏輯處理。上述HTTP服務(wù)器處理客戶端發(fā)送來的數(shù)據(jù)包需經(jīng)過層層解析,層層拷貝,處理邏 輯十分復(fù)雜。因而,HTTP服務(wù)器支持的連接數(shù)非常有限,對(duì)于一些小數(shù)據(jù)量且需要頻繁與 服務(wù)器交互的應(yīng)用場(chǎng)景,目前的HTTP服務(wù)器面對(duì)客戶端的海量請(qǐng)求時(shí),協(xié)議棧會(huì)消耗很大 的系統(tǒng)資源,因此性能低下。
發(fā)明內(nèi)容
基于此,有必要提供一種基于包處理的HTTP服務(wù)器,能處理客戶端的海量數(shù)據(jù)請(qǐng) 求且處理性能更好。此外,還有必要提供一種HTTP服務(wù)器數(shù)據(jù)處理方法,能處理客戶端的海量數(shù)據(jù)請(qǐng) 求且處理性能更好。所述基于包處理的HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理。優(yōu)選地,HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),經(jīng)網(wǎng)卡驅(qū)動(dòng)處理后以內(nèi)存映射的方 式將數(shù)據(jù)拷貝到應(yīng)用層的內(nèi)存緩沖區(qū)中。進(jìn)一步優(yōu)選地,網(wǎng)卡驅(qū)動(dòng)可用于將接收到的網(wǎng)絡(luò)數(shù)據(jù)幀轉(zhuǎn)換為IP數(shù)據(jù)包。優(yōu)選地,HTTP服務(wù)器在應(yīng)用層構(gòu)造IP數(shù)據(jù)包,并將IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧,由 IP協(xié)議棧將IP數(shù)據(jù)包發(fā)送給網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理后發(fā)送給客戶端。進(jìn)一步優(yōu)選地,網(wǎng)卡驅(qū)動(dòng)可用于將IP數(shù)據(jù)包轉(zhuǎn)換為網(wǎng)絡(luò)數(shù)據(jù)幀。所述HTTP服務(wù)器數(shù)據(jù)處理方法包括所述HTTP服務(wù)器采用原始套接字對(duì)通訊端 口的數(shù)據(jù)包進(jìn)行處理。優(yōu)選地,HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理的步驟可包 括HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),經(jīng)網(wǎng)卡驅(qū)動(dòng)處理后以內(nèi)存映射的方式將數(shù)據(jù)拷貝 到應(yīng)用層的內(nèi)存緩沖區(qū)中。進(jìn)一步優(yōu)選地,網(wǎng)卡驅(qū)動(dòng)處理的步驟具體可以是網(wǎng)卡驅(qū)動(dòng)將接收到的網(wǎng)絡(luò)數(shù)據(jù)幀轉(zhuǎn)換為IP數(shù)據(jù)包。優(yōu)選地,HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理的步驟還可包 括HTTP服務(wù)器在應(yīng)用層構(gòu)造IP數(shù)據(jù)包,并將IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧,由IP協(xié)議棧將 IP數(shù)據(jù)包發(fā)送給網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理后發(fā)送給客戶端。進(jìn)一步優(yōu)選地,網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理的步驟具體可是網(wǎng)卡驅(qū)動(dòng)將IP數(shù) 據(jù)包轉(zhuǎn)換為網(wǎng)絡(luò)數(shù)據(jù)幀。上述基于包處理的HTTP服務(wù)器及其數(shù)據(jù)處理方法,通過采用原始套接字對(duì)通訊 端口的數(shù)據(jù)包進(jìn)行處理,在HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)時(shí),無需將數(shù)據(jù)交給協(xié)議 棧,而是直接以內(nèi)存映射的方式將數(shù)據(jù)拷貝到應(yīng)用層的內(nèi)存緩沖區(qū)中,HTTP服務(wù)器則可直 接使用這些數(shù)據(jù),不需要再經(jīng)過套接字的其它處理,減少了很大部分的系統(tǒng)資源消耗。由于 是在IP協(xié)議的層面上實(shí)現(xiàn)HTTP服務(wù)器的數(shù)據(jù)處理,數(shù)據(jù)包未進(jìn)入TCP協(xié)議棧,因此提高了 HTTP服務(wù)器的響應(yīng)速度,使HTTP服務(wù)器能處理客戶端的海量數(shù)據(jù)請(qǐng)求;另一方面,HTTP服 務(wù)器返回?cái)?shù)據(jù)給客戶端時(shí),直接由應(yīng)用層構(gòu)造好IP數(shù)據(jù)包,將IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧, 再由IP協(xié)議棧發(fā)送給網(wǎng)卡驅(qū)動(dòng),由于原始套接字的數(shù)據(jù)包發(fā)送的性能遠(yuǎn)高于TCP套接字的 數(shù)據(jù)發(fā)送,因此也提高了性能。
圖1是一個(gè)實(shí)施例中客戶端與HTTP服務(wù)器進(jìn)行交互的示意圖;圖2是一個(gè)實(shí)施例中HTTP服務(wù)器數(shù)據(jù)處理方法的原理圖;圖3是現(xiàn)有技術(shù)中HTTP服務(wù)器數(shù)據(jù)處理方法的原理圖。
具體實(shí)施例方式由于HTTP協(xié)議的通訊過程一般都是短連接,通訊模式上是請(qǐng)求-響應(yīng)模式。參照 圖1,客戶端與HTTP服務(wù)器之間的一次交互過程如下(1)客戶端發(fā)送SYN包給HTTP服務(wù)器;(2) HTTP服務(wù)器發(fā)送SYN+ACK包給客戶端;(3)客戶端發(fā)送ACK包給HTTP服務(wù)器;(4)客戶端發(fā)送內(nèi)容為GET的包給HTTP服務(wù)器;(5) HTTP服務(wù)器返回內(nèi)容為2000K的包給客戶端;(6)數(shù)據(jù)發(fā)送完成后關(guān)閉連接。其中,SYN包是握手包,ACK是應(yīng)答包,F(xiàn)IN是結(jié)束包,上述步驟(1) (3)是典型 的TCP三次握手過程;而GET包是HTTP協(xié)議的請(qǐng)求包,2000K是HTTP服務(wù)器返回給客戶端 的內(nèi)容包。由上述內(nèi)容可知,客戶端與HTTP服務(wù)器的一次通訊包括客戶端發(fā)送給HTTP服 務(wù)器的三次數(shù)據(jù)包(SYN包、ACK包和GET包)和HTTP服務(wù)器響應(yīng)給客戶端的兩次數(shù)據(jù)包 (ACK+SYN的握手應(yīng)答包和ACK+FIN且內(nèi)容為2000K的與業(yè)務(wù)相關(guān)的應(yīng)答包)。在一個(gè)實(shí)施方式中,本發(fā)明提供的基于包處理的HTTP服務(wù)器采用原始套接字對(duì) 通訊端口的數(shù)據(jù)包進(jìn)行處理。這里的通訊端口為默認(rèn)的80端口,原始套接字是與TCP套接 字不同的一種網(wǎng)絡(luò)通信方式,其能夠采集鏈路層的數(shù)據(jù)包,由于鏈路層之上是IP協(xié)議層, IP協(xié)議層之上是TCP協(xié)議層,而原始套接字是最底層的應(yīng)用程序編程接口(AppliocationProgramming hterface,簡(jiǎn)稱“API ”),因此能夠采集所有層的數(shù)據(jù)包。在一個(gè)實(shí)施方式中,如圖2所示,HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù) 包進(jìn)行處理的過程包括接收客戶端發(fā)送的數(shù)據(jù)的處理過程及返回?cái)?shù)據(jù)至客戶端的處理過 程。其中,HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)的過程如下(1)客戶端發(fā)送數(shù)據(jù)至網(wǎng)卡驅(qū) 動(dòng)。網(wǎng)卡驅(qū)動(dòng)接收的是客戶端通過網(wǎng)絡(luò)傳送過來的網(wǎng)絡(luò)數(shù)據(jù)幀;( 網(wǎng)卡驅(qū)動(dòng)將接收到的 網(wǎng)絡(luò)數(shù)據(jù)幀轉(zhuǎn)換為IP數(shù)據(jù)包;C3)網(wǎng)卡驅(qū)動(dòng)將處理得到的IP數(shù)據(jù)包以內(nèi)存映射的方式將 數(shù)據(jù)拷貝到應(yīng)用層的內(nèi)存緩沖區(qū)中。IP數(shù)據(jù)包復(fù)制到內(nèi)存中后,HTTP服務(wù)器則可以直接使 用這些數(shù)據(jù)包,而無需再經(jīng)過套接字的其它處理過程。如圖2所示,HTTP服務(wù)器響應(yīng)客戶端的過程如下(I)HTTP服務(wù)器在應(yīng)用層構(gòu)造 IP數(shù)據(jù)包,并將IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧;(2) IP協(xié)議棧將IP數(shù)據(jù)包發(fā)送給網(wǎng)卡驅(qū)動(dòng);(3)網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理。具體地,網(wǎng)卡驅(qū)動(dòng)是將IP數(shù)據(jù)包轉(zhuǎn)換為網(wǎng)絡(luò)數(shù)據(jù)幀。(4)網(wǎng)卡驅(qū)動(dòng)將網(wǎng)絡(luò)數(shù)據(jù)幀通過網(wǎng)絡(luò)發(fā)送到客戶端。上述基于包處理的HTTP服務(wù)器及其數(shù)據(jù)處理方法,數(shù)據(jù)在處理的過程中只需要 復(fù)制一次,而不需要層層復(fù)制,因此數(shù)據(jù)處理的流程減少了,對(duì)于應(yīng)用程序而言,接收數(shù)據(jù) 的流程也更簡(jiǎn)單,其能支持的連接數(shù)將更高。由于HTTP服務(wù)器的數(shù)據(jù)處理過程是在IP協(xié) 議的層面上實(shí)現(xiàn),數(shù)據(jù)包未進(jìn)入TCP協(xié)議棧,因此HTTP服務(wù)器的響應(yīng)速度更快,且對(duì)服務(wù)器 的消耗更小。另外,上述基于包處理的HTTP服務(wù)器由于繞過了 TCP協(xié)議棧,因此服務(wù)器端 并不需要保存客戶端和服務(wù)器的連接狀態(tài),當(dāng)客戶端發(fā)起針對(duì)TCP協(xié)議棧的攻擊時(shí),對(duì)該 基于包處理的HTTP服務(wù)器并不適用,因此能有效抵制惡意的SYN FLOOD或慢連接。上述基于包處理的HTTP服務(wù)器及其數(shù)據(jù)處理方法,由于可支持的連接數(shù)很高,可 廣泛應(yīng)用于具有海量請(qǐng)求數(shù)且每次請(qǐng)求和響應(yīng)的數(shù)據(jù)傳輸量非常小的HTTP應(yīng)用。例如統(tǒng) 計(jì)服務(wù)器(如網(wǎng)絡(luò)廣告上的計(jì)數(shù)器)、聊天服務(wù)器(如基于HTTP的雙人聊天或者聊天室)、 驗(yàn)證碼服務(wù)器(如生成復(fù)雜的驗(yàn)證碼圖片)、頭像圖片服務(wù)器(如處理GZIP壓縮后的小于 1460字節(jié)的圖片)、以及其它請(qǐng)求和響應(yīng)內(nèi)容小于1460字節(jié)的HTTP應(yīng)用。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于包處理的HTTP服務(wù)器,其特征在于,所述HTTP服務(wù)器采用原始套接字對(duì)通 訊端口的數(shù)據(jù)包進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的基于包處理的HTTP服務(wù)器,其特征在于,所述HTTP服務(wù)器接 收客戶端發(fā)送的數(shù)據(jù),經(jīng)網(wǎng)卡驅(qū)動(dòng)處理后以內(nèi)存映射的方式將數(shù)據(jù)拷貝到應(yīng)用層的內(nèi)存緩 沖區(qū)中。
3.根據(jù)權(quán)利要求2所述的基于包處理的HTTP服務(wù)器,其特征在于,所述網(wǎng)卡驅(qū)動(dòng)用于 將接收到的網(wǎng)絡(luò)數(shù)據(jù)幀轉(zhuǎn)換為IP數(shù)據(jù)包。
4.根據(jù)權(quán)利要求1所述的基于包處理的HTTP服務(wù)器,其特征在于,所述HTTP服務(wù)器在 應(yīng)用層構(gòu)造IP數(shù)據(jù)包,并將所述IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧,由IP協(xié)議棧將IP數(shù)據(jù)包發(fā) 送給網(wǎng)卡驅(qū)動(dòng),所述網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理后發(fā)送給客戶端。
5.根據(jù)權(quán)利要求4所述的基于包處理的HTTP服務(wù)器,其特征在于,所述網(wǎng)卡驅(qū)動(dòng)用于 將IP數(shù)據(jù)包轉(zhuǎn)換為網(wǎng)絡(luò)數(shù)據(jù)幀。
6.一種HTTP服務(wù)器數(shù)據(jù)處理方法,其特征在于,所述方法包括所述HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理。
7.根據(jù)權(quán)利要求6所述的HTTP服務(wù)器數(shù)據(jù)處理方法,其特征在于,所述HTTP服務(wù)器采 用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理的步驟包括所述HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),經(jīng)網(wǎng)卡驅(qū)動(dòng)處理后以內(nèi)存映射的方式將數(shù) 據(jù)拷貝到應(yīng)用層的內(nèi)存緩沖區(qū)中。
8.根據(jù)權(quán)利要求7所述的HTTP服務(wù)器數(shù)據(jù)處理方法,其特征在于,所述網(wǎng)卡驅(qū)動(dòng)處理 的步驟具體是所述網(wǎng)卡驅(qū)動(dòng)將接收到的網(wǎng)絡(luò)數(shù)據(jù)幀轉(zhuǎn)換為IP數(shù)據(jù)包。
9.根據(jù)權(quán)利要求7所述的HTTP服務(wù)器數(shù)據(jù)處理方法,其特征在于,所述HTTP服務(wù)器采 用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理的步驟還包括所述HTTP服務(wù)器在應(yīng)用層構(gòu)造IP數(shù)據(jù)包,并將所述IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧,由IP 協(xié)議棧將IP數(shù)據(jù)包發(fā)送給網(wǎng)卡驅(qū)動(dòng),所述網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理后發(fā)送給客戶端。
10.根據(jù)權(quán)利要求9所述的HTTP服務(wù)器數(shù)據(jù)處理方法,其特征在于,所述網(wǎng)卡驅(qū)動(dòng)對(duì) IP數(shù)據(jù)包進(jìn)行處理的步驟具體是所述網(wǎng)卡驅(qū)動(dòng)將IP數(shù)據(jù)包轉(zhuǎn)換為網(wǎng)絡(luò)數(shù)據(jù)幀。
全文摘要
本發(fā)明提供了一種基于包處理的HTTP服務(wù)器及其數(shù)據(jù)處理方法,所述HTTP服務(wù)器采用原始套接字對(duì)通訊端口的數(shù)據(jù)包進(jìn)行處理。其中,HTTP服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),經(jīng)網(wǎng)卡驅(qū)動(dòng)處理后以內(nèi)存映射的方式將數(shù)據(jù)拷貝到應(yīng)用層的內(nèi)存緩沖區(qū)中;發(fā)送數(shù)據(jù)時(shí),HTTP服務(wù)器在應(yīng)用層構(gòu)造IP數(shù)據(jù)包,并將所述IP數(shù)據(jù)包發(fā)送給IP協(xié)議棧,由IP協(xié)議棧將IP數(shù)據(jù)包發(fā)送給網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng)對(duì)IP數(shù)據(jù)包進(jìn)行處理后發(fā)送給客戶端。本發(fā)明提供的基于包處理的HTTP服務(wù)器及其數(shù)據(jù)處理方法,能支持客戶端的海量數(shù)據(jù)請(qǐng)求,且處理性能較好。
文檔編號(hào)H04L29/08GK102055774SQ20091019380
公開日2011年5月11日 申請(qǐng)日期2009年11月10日 優(yōu)先權(quán)日2009年11月10日
發(fā)明者張富春 申請(qǐng)人:騰訊科技(深圳)有限公司