專利名稱:6LoWPAN網(wǎng)絡(luò)中面向HTTP協(xié)議的TCP首部壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于6LoWPAN網(wǎng)絡(luò)中面向超文本傳輸協(xié)議HTTP (Hyper Text Transport Protocol)的傳輸控制協(xié)議TCP (Transmission Control Protocol)首部壓縮方法,屬于物聯(lián)網(wǎng)技術(shù),特別是無線傳感器網(wǎng)絡(luò)的技術(shù)領(lǐng)域。
背景技術(shù):
作為信息技術(shù)產(chǎn)業(yè)的一個新的發(fā)展方向,無線傳感器網(wǎng)絡(luò)WSN(Wireless sensor network)在軍事和民用領(lǐng)域都有著廣泛的應(yīng)用前景。近些年,WSN的一個分支,即無線個人低功耗局域網(wǎng) LoWAPN(low-power wireless personal area network)更是受至丨J了廣泛關(guān)注,逐漸成為行業(yè)內(nèi)的熱點。2004年11月,因特網(wǎng)工程任務(wù)組IETF成立了基于IPv6的無線個人低功耗局域網(wǎng) 6LoffAPN(IPv6over low-power wireless personal area network)工作組,旨在將網(wǎng)際通信協(xié)議第6版IPv6 (IP Version 6)弓丨入到LoWAPN中,使得無線局域網(wǎng)中的每個節(jié)點都具有一個全球的IPv6地址,以便能與互聯(lián)網(wǎng)中的每個IPv6節(jié)點進行通信。6LoffAPN遵循IEEE 802. 15. 4的行業(yè)標準,具有能耗低、帶寬窄、傳輸單元小等特點,其最主要的改進是在傳統(tǒng)TCP/IP協(xié)議棧中的網(wǎng)絡(luò)層和鏈路層之間增設(shè)一個適配層,用來完成數(shù)據(jù)包的壓縮、解壓、路由等功能。因為IPv6的網(wǎng)絡(luò)層中最大傳輸單元MTU(Maximum Transmission Unit)是1280字節(jié),而IEEE 802. 15. 4標準規(guī)定的鏈路層上最大幀負載是 102字節(jié),如果再減去安全機制所消耗的21個字節(jié),就只剩下81個字節(jié)用于鏈路層以上的負載(IPv6首部是40字節(jié),TCP/UDP首部是20/8字節(jié)),這樣,就會在傳輸過程中不可避免地產(chǎn)生大量的數(shù)據(jù)包分片,因此,必須在適配層上對網(wǎng)絡(luò)層和傳輸層的首部進行壓縮,以節(jié)省負載空間,用于傳輸應(yīng)用層的數(shù)據(jù),進而減少數(shù)據(jù)包分片。目前,6LoWPAN工作組已經(jīng)提出了兩種報頭壓縮方法,并分別命名為LoWPAN_IPHC 編碼和LoWPAN_NHC編碼,前者用于IPv6首部的壓縮,后者用于IPv6擴展首部和UDP首部的壓縮。其主要思想是首先對IPv6首部進行逐個字段的編碼,并直接省略一些眾所周知的字段,如版本號等;然后再將每個字段中不能壓縮的部分緊跟著置于壓縮編碼的后面,命名為h-Line (隊列)。故整個6LoWPAN壓縮結(jié)構(gòu)如
圖1所示。參見圖2,介紹LoWPAN_IPHC編碼的結(jié)構(gòu)前3位是設(shè)定數(shù)值011,后面依次表示為IPv6首部中的流量級別和流標簽TF(Traffic Class and Flow Label),下一個首部 NH (Next Header),跳數(shù)限制HLIMOtop Limits),以及源地址和目的地址的相關(guān)字段。舉個例子,如果由IPv6首部中的流量級別是非0值,流標簽是0值,則先對這兩個字段進行編碼,即TF = 10,此后將不能壓縮的部分(流量級別)保留在h-Line中,具體的壓縮規(guī)則在 draft-ietf-61owpan-hc-15中有詳細介紹,這里就不再贅述。在進行地址壓縮時,又分為有狀態(tài)壓縮和無狀態(tài)壓縮。二者區(qū)別是前者使用了一種名為Context (關(guān)聯(lián))表的數(shù)據(jù)結(jié)構(gòu),該表用于存儲一段時間內(nèi)網(wǎng)絡(luò)中所使用過的IPv6 地址前綴,其存儲于網(wǎng)絡(luò)中的每個節(jié)點,并通過相應(yīng)的數(shù)據(jù)包交互進行更新。這樣在進行地址壓縮時,IPv6的地址前綴(通常為64字節(jié))就可以只用幾個比特來表示,從而大大提高了壓縮效率。當然,這種壓縮方式也會帶來額外一個字節(jié)的開銷。參見圖3和圖4,分別介紹LoWPAN_NHC編碼用于IPv6擴展首部和用戶數(shù)據(jù)報協(xié)議 UDP(User Datagram Protocol)首部壓縮時的編碼結(jié)構(gòu)它是通過一個變長的值域(這里命名為NHC ID)來區(qū)分這兩種不同編碼。在IPv6擴展首部編碼中,位于NHC ID(IllO)后面的是擴展首部標識EID (Extension Header ID),表示被壓縮的IPv6擴展首部的類型,其后的NH字段則表示下一個首部。在UDP首部編碼中,位于NHC ID(IlllO)后面的分別是單個比特的校驗和C(Checksum)和兩個比特的端口號P (Ports),如果上層應(yīng)用對數(shù)據(jù)包已進行過驗證,則可以省略其中的校驗和字段。對于6LoWPAN上層應(yīng)用來說,很多應(yīng)用層協(xié)議是基于TCP的(比如HTTP,Telnet 等)??紤]到TCP首部有20個字節(jié),對于只有102個字節(jié)的鏈路層MTU來講,仍然十分龐大。所以有必要對TCP首部進行壓縮來進一步減少數(shù)據(jù)包分片。然而,直至今天,BLoffPAN工作組還沒有提出關(guān)于TCP首部壓縮的方法(只有一份個人提出的通用的TCP首部壓縮草案)。由于TCP之上的應(yīng)用層協(xié)議的多樣性,設(shè)計通用的TCP首部壓縮方法或結(jié)構(gòu)都是相當復雜的工作,而且很難獲得較高的壓縮效率;此外,當前越來越多的上層應(yīng)用傾向于網(wǎng)頁的方式,所以,如何設(shè)計一種基于HTTP的TCP首部壓縮方法就成為業(yè)內(nèi)科技人員關(guān)注的一個焦點任務(wù)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的是提供一種用于6LoWPAN網(wǎng)絡(luò)中面向HTTP協(xié)議的TCP首部壓縮方法,以便能夠節(jié)省負載空間而用于傳輸應(yīng)用層的數(shù)據(jù),進而減少數(shù)據(jù)分片,顯著提高通信效率。為了達到上述目的,本發(fā)明提供了一種用于6LoWPAN網(wǎng)絡(luò)中面向超文本傳輸協(xié) iX HTTP (Hyper Text Transport Protocol)TCP (Transmission Control Protocol)首部壓縮方法,其特征在于6LoWPAN網(wǎng)絡(luò)中的所有基于HTTP的通信過程都要執(zhí)行TCP首部的壓縮和解壓操作,以減少數(shù)據(jù)鏈路層的數(shù)據(jù)分片和提高通信效率;所述方法包括下列操作步驟(1)發(fā)送端的應(yīng)用層將需要傳送的HTTP協(xié)議的數(shù)據(jù)交給傳輸層;(2)傳輸層對應(yīng)用層數(shù)據(jù)封裝TCP首部后,形成TCP報文交給網(wǎng)絡(luò)層;(3)網(wǎng)絡(luò)層對TCP報文封裝IP首部后,形成IP數(shù)據(jù)報交給6LoWPAN適配層;G)6LoWPAN適配層先完成IP數(shù)據(jù)報中的IP首部與其擴展首部的壓縮,然后按照 6LoWPAN工作組提出的報頭壓縮結(jié)構(gòu)Encoding (編碼)和h-Line (隊列)兩個字段結(jié)構(gòu)對TCP首部進行壓縮操作,以保證該壓縮方法的兼容性和操作實現(xiàn)的簡便性;再將形成的 BLoffPAN數(shù)據(jù)報交給數(shù)據(jù)鏈路層;(5)數(shù)據(jù)鏈路層對6LoWPAN數(shù)據(jù)報封裝幀頭和幀尾后,形成數(shù)據(jù)鏈路幀交給物理層;(6)物理層將數(shù)據(jù)鏈路幀通過網(wǎng)絡(luò)發(fā)送給接收端;(7)接收端按照上述過程的逆處理對接收的數(shù)據(jù)報進行解壓,接收端的應(yīng)用層接收到發(fā)送端傳送的HTTP協(xié)議的數(shù)據(jù)。
下面介紹本發(fā)明方法的優(yōu)點和效果(I)TCP基本首部的壓縮分析因TCP基本首部的壓縮操作是將原來的20個字節(jié)壓縮為ι字節(jié)的壓縮編碼,若是TCP連接的第一次握手時,In-Line部分依次為2字節(jié)的源端口、4字節(jié)的序列號、2字節(jié)的窗口值和2字節(jié)的校驗和,故TCP基本首部的壓縮率為
權(quán)利要求
1.一種用于6LoWPAN網(wǎng)絡(luò)中面向超文本傳輸協(xié)議HTTP的傳輸控制協(xié)議TCP首部壓縮方法,其特征在于6LoWPAN網(wǎng)絡(luò)中的所有基于HTTP的通信過程都要執(zhí)行TCP首部的壓縮和解壓操作,以減少數(shù)據(jù)鏈路層的數(shù)據(jù)分片和提高通信效率;所述方法包括下列操作步驟(1)發(fā)送端的應(yīng)用層將需要傳送的HTTP協(xié)議的數(shù)據(jù)交給傳輸層;(2)傳輸層對應(yīng)用層數(shù)據(jù)封裝TCP首部后,形成TCP報文交給網(wǎng)絡(luò)層;(3)網(wǎng)絡(luò)層對TCP報文封裝IP首部后,形成IP數(shù)據(jù)報交給6LoWPAN適配層;G)6LoWPAN適配層先完成IP數(shù)據(jù)報中的IP首部與其擴展首部的壓縮,然后按照6LoWPAN工作組提出的報頭壓縮結(jié)構(gòu)Encoding (編碼)和h-Line (隊列)兩個字段結(jié)構(gòu)對TCP首部進行壓縮操作,以保證該壓縮方法的兼容性和操作實現(xiàn)的簡便性;再將形成的 BLoffPAN數(shù)據(jù)報交給數(shù)據(jù)鏈路層;(5)數(shù)據(jù)鏈路層對6LoWPAN數(shù)據(jù)報封裝幀頭和幀尾后,形成數(shù)據(jù)鏈路幀交給物理層;(6)物理層將數(shù)據(jù)鏈路幀通過網(wǎng)絡(luò)發(fā)送給接收端;(7)接收端按照上述過程的逆處理對接收的數(shù)據(jù)報進行解壓,接收端的應(yīng)用層接收到發(fā)送端傳送的HTTP協(xié)議的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟(4)中,TCP首部的壓縮操作包括兩部分基本首部的7個字段壓縮操作和擴展選項的3個字段壓縮操作;且所涉及的基本首部和擴展選項的兩種字段壓縮操作都是根據(jù)網(wǎng)絡(luò)層傳送來的不同類型的IP數(shù)據(jù)報而分別選擇執(zhí)行其中的若干項字段或全部字段執(zhí)行壓縮操作,并對每個字段的壓縮順序沒有特殊要求。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于所述TCP中基本首部是順序包括端口號 (Ports)、序列號禾口石角認號(Sequence and Acknowledgment Number)、首部長度(Header Length)、標志位(Flags)、窗口值(Window)、緊急指針 Urgent Pointer)和校驗和 (Checksum)共7個字段的TCP報文前20個字節(jié),TCP基本首部的壓縮操作是對LoWPAN_NHC 編碼方法的擴展,即將該20個字節(jié)壓縮為前3個比特為標志位F、接著2個比特為端口號 P,最后3個比特為首部長度HL的單字節(jié)TCP基本首部的壓縮編碼;包括下列操作內(nèi)容(41)對標志位F(Flags)進行壓縮因在HTTP中不會用到緊急指針位(URG),且在TCP 傳輸過程中有些情況不會出現(xiàn),故只對包括應(yīng)答位(ACK)、推送位(PSH)、重置位(RST)、同步位(SYN)和結(jié)束位(FIN)共5個標志位可能出現(xiàn)的各種不同情況進行下述編碼000表示ACK =0,PSH =0,RST =0,SYN =1,F(xiàn)IN =0001表示ACK =1,PSH =0,RST =0,SYN =1,F(xiàn)IN =0010表示ACK =1,PSH =0,RST =0,SYN =0,F(xiàn)IN =1011表示ACK =1,PSH =0,RST =0,SYN =0,F(xiàn)IN =0100表示ACK =1,PSH =1,RST =0,SYN =0,F(xiàn)IN =0101表示ACK =0,PSH =0,RST =1,SYN =0,F(xiàn)IN =0110和111 均為保留標志位;(42)對端口號P(Ports)進行壓縮因每一次完整的TCP傳輸過程中,源端口號和目的端口號都不會改變,故在TCP首次握手時,就將源端口號分別儲存于HTTP客戶端和服務(wù)器, 但當服務(wù)器端口不是80時,則還要存儲目的端口 ;并在后續(xù)的傳輸過程中,采用下述三種狀態(tài)01、10和11分別表示端口號,直到本次TCP連接斷開;其中,.00表示TCP連接的第一次握手,如果目的端口號是服務(wù)器端口 80,則只存儲源端口號于h-Line部分;否則,將源端口和目的端口都存儲于h-Line部分;.01源端口號是表示HTTP服務(wù)器的80,目的端口號是HTTP客戶端;.10目的端口號是表示HTTP服務(wù)器的80,源端口號是HTTP客戶端;11=HTTP服務(wù)器端口號不是80的情況;(43)對首部長度HL(Header Length)進行壓縮因不含選項字段的TCP首部長度是20 字節(jié),意味著首部長度值不會出現(xiàn)在0000到0100之間;含有一個或多個選項字段的TCP首部在HTTP協(xié)議通信中最長為40字節(jié),即不會使用1011到1111 ;故對下述可能出現(xiàn)的首部長度值進行編碼如下.000首部長度為5,表示不含選項字段的TCP首部長度是20字節(jié);.001首部長度為6 ;.010首部長度為7 ;.011部長度為8;.100首部長度為9 ;.101首部長度為10,表示包含選項字段的TCP首部長度是HTTP中最長的40字節(jié);110和111 均為保留用途;(44)對序列號和確認號Sequenceand Acknowledgment Number)進行壓縮因TCP連接第一次握手時,數(shù)據(jù)包不會攜帶確認號,故直接省略該字段;若不是第一次握手時,則將序列號和確認號均保留于h-Line部分;(45)對窗口值(Window)進行壓縮將其保留于h-Line部分;(46)對緊急指針UrgentPointer)進行壓縮因其與URG位一起使用,而HTTP不會使用該字段,故直接省略;(47)對校驗和(Checksum)進行壓縮因HTTP不進行校驗,故將其保留于h-Line部分。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于所述單字節(jié)TCP基本首部的壓縮編碼里沒有設(shè)置NHC ID字段,原因是該壓縮編碼恰好為一個字節(jié)長度,如果要設(shè)置LoWPAN_NHC編碼的NHC ID字段,就要額外再增加一個字節(jié);再者,數(shù)據(jù)包不會同時包含TCP和UDP首部, 故壓縮時通過IPv6首部的Next Header字段就能區(qū)分之。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于所述TCP中擴展選項的選項類型(Kind), 選項總長度(Length)和選項內(nèi)容(Value)共3個字段的壓縮操作是將其壓縮為前3個比特設(shè)置為固定值000,接著2個比特分別為下一個選項NO和壓縮標志位C,最后3個比特為 TCP選項類型標識OID的單字節(jié)TCP擴展選項壓縮編碼(LoWPAN_TCP_0P);包括下列操作內(nèi)容(4A)下一個選項 NO (Next Option).0表示該選項是整個首部中最后一個選項字段;.1表示該選項后面還有其他選項字段;(4B)壓縮標志 C(Compressed).0 該選項不能被壓縮,直接放入h-Line部分;·1 該選項能夠被壓縮,并使用LoWPAN_TCP_0P壓縮編碼格式;(4C) TCP選項類型標識OID (TCP Option Identifier)因TCP選項的類型和長度值都是固定不變的,故用3個比特表示之,并將選項內(nèi)容保留于^i-Line部分;HTTP常用的選項類型如下所述、000類型為0,表示選項列表的結(jié)尾(End of Option List);001:類型為1,表示無操作選項(No-Operation);010類型為2,長度為4,表示最大字段值選項(Maximum Segment Size);且最大選項長度值(Max Seg Size)保留于h-Line部分;011類型為 3,長度為 3,表示 TCP 窗口范圍選項 WSopt (TCP Window Scale Option); 且移位值(Shift)保留于In-Line部分;100類型為4,長度為2,表示TCP選擇確認允許選項(TCP SACK Permitted Option);101:類型為5,長度為10,表示TCP選擇確認選項(TCP SACK Option),且將SACK塊左邊界值(Left Edge of Block)和SACK塊右邊界值(Right Edge of Block)都保留于 In-Line 部分;110:類型為8,長度為10,表示TCP時間戳選項TSopt (TCP Timestamps Option),且將時間戳值(TS Value)和時間戳返回值(TS Echo Reply)都保留于h-Line部分;、111 保留。
全文摘要
一種用于6LoWPAN網(wǎng)絡(luò)中面向HTTP的TCP首部壓縮方法,是該網(wǎng)絡(luò)中所有基于HTTP的通信過程都要執(zhí)行TCP首部的壓縮和解壓操作,以節(jié)省負載空間,用于傳輸應(yīng)用層數(shù)據(jù),減少數(shù)據(jù)鏈路層分片并提高通信效率。操作步驟是發(fā)送端的應(yīng)用層、傳輸層和網(wǎng)絡(luò)層各自完成相應(yīng)操作,將形成的IP數(shù)據(jù)報交給適配層;適配層先完成IP首部與IP擴展首部的壓縮,然后按照報頭壓縮結(jié)構(gòu)Encoding(編碼)和In-Line(隊列)的方式對TCP首部進行壓縮操作,以保證該壓縮方法的兼容性和操作實現(xiàn)的簡便性;再將形成的6LoWPAN數(shù)據(jù)報交給數(shù)據(jù)鏈路層,經(jīng)由數(shù)據(jù)鏈路層和物理層將數(shù)據(jù)鏈路幀通過網(wǎng)絡(luò)發(fā)送給接收端。接收端按照上述過程的逆處理對接收的數(shù)據(jù)報進行解壓后,其應(yīng)用層接收到發(fā)送端傳送的HTTP協(xié)議的數(shù)據(jù)。
文檔編號H04L1/00GK102255972SQ201110228460
公開日2011年11月23日 申請日期2011年8月10日 優(yōu)先權(quán)日2011年8月10日
發(fā)明者王振華, 馬嚴, 馬哲, 黃小紅 申請人:北京郵電大學