发明名称 6LoWPAN网络中面向HTTP协议的TCP首部压缩方法
摘要 一种用于6LoWPAN网络中面向HTTP的TCP首部压缩方法,是该网络中所有基于HTTP的通信过程都要执行TCP首部的压缩和解压操作,以节省负载空间,用于传输应用层数据,减少数据链路层分片并提高通信效率。操作步骤是:发送端的应用层、传输层和网络层各自完成相应操作,将形成的IP数据报交给适配层;适配层先完成IP首部与IP扩展首部的压缩,然后按照报头压缩结构:Encoding(编码)和In-Line(队列)的方式对TCP首部进行压缩操作,以保证该压缩方法的兼容性和操作实现的简便性;再将形成的6LoWPAN数据报交给数据链路层,经由数据链路层和物理层将数据链路帧通过网络发送给接收端。接收端按照上述过程的逆处理对接收的数据报进行解压后,其应用层接收到发送端传送的HTTP协议的数据。
申请公布号 CN102255972B 申请公布日期 2014.06.25
申请号 CN201110228460.6 申请日期 2011.08.10
申请人 北京邮电大学 发明人 黄小红;马严;王振华;马哲
分类号 H04L29/08(2006.01)I;H04L1/00(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 北京德琦知识产权代理有限公司 11018 代理人 夏宪富
主权项 一种用于6LoWPAN网络中面向超文本传输协议HTTP的传输控制协议TCP首部压缩方法,其特征在于:6LoWPAN网络中的所有基于HTTP的通信过程都要执行TCP首部的压缩和解压操作,以减少数据链路层的数据分片和提高通信效率;所述方法包括下列操作步骤: (1)发送端的应用层将需要传送的HTTP协议的数据交给传输层; (2)传输层对应用层数据封装TCP首部后,形成TCP报文交给网络层; (3)网络层对TCP报文封装IP首部后,形成IP数据报交给6LoWPAN适配层; (4)6LoWPAN适配层先完成IP数据报中的IP首部与其扩展首部的压缩,然后按照6LoWPAN工作组提出的报头压缩结构:Encoding(编码)和In‑Line(队列)两个字段结构对TCP首部进行压缩操作,以保证该压缩方法的兼容性和操作实现的简便性;再将形成的6LoWPAN数据报交给数据链路层;其中,TCP首部的压缩操作包括两部分:基本首部的7个字段压缩操作和扩展选项的3个字段压缩操作;且所涉及的基本首部和扩展选项的两种字段压缩操作都是根据网络层传送来的不同类型的IP数据报而分别选择执行其中的若干项字段或全部字段执行压缩操作,并对每个字段的压缩顺序没有特殊要求; 所述TCP中基本首部是顺序包括端口号(Ports)、序列号和确认号(Sequence and Acknowledgment Number)、首部长度(Header Length)、标志位(Flags)、窗口值(Window)、紧急指针(Urgent Pointer)和校验和(Checksum)共7个字段的TCP报文前20个字节,TCP基本首部的压缩操作是对LoWPAN_NHC编码方法的扩展,即将该20个字节压缩为前3个比特为标志位F、接着2个比特为端口号P,最后3个比特为首部长度HL的单字节TCP基本首部的压缩编码;包括下列操作内容: (41)对标志位F(Flags)进行压缩:因在HTTP中不会用到紧急指针位(URG),且在TCP传输过程中有些情况不会出现,故只对包括应答位ACK、 推送位PSH、重置位RST、同步位SYN和结束位FIN共5个标志位可能出现的各种不同情况进行下述编码: 000:表示ACK=0,PSH=0,RST=0,SYN=1,FIN=0; 001:表示ACK=1,PSH=0,RST=0,SYN=1,FIN=0; 010:表示ACK=1,PSH=0,RST=0,SYN=0,FIN=1; 011:表示ACK=1,PSH=0,RST=0,SYN=0,FIN=0; 100:表示ACK=1,PSH=1,RST=0,SYN=0,FIN=0; 101:表示ACK=0,PSH=0,RST=1,SYN=0,FIN=0; 110和111:均为保留标志位; (42)对端口号P(Ports)进行压缩:因每一次完整的TCP传输过程中,源端口号和目的端口号都不会改变,故在TCP首次握手时,就将源端口号分别储存于HTTP客户端和服务器,但当服务器端口不是80时,则还要存储目的端口;并在后续的传输过程中,采用下述三种状态:01、10和11分别表示端口号,直到本次TCP连接断开;其中, 00:表示TCP连接的第一次握手,如果目的端口号是服务器端口80,则只存储源端口号于In‑Line部分;否则,将源端口和目的端口都存储于In‑Line部分; 01:源端口号是表示HTTP服务器的80,目的端口号是HTTP客户端; 10:目的端口号是表示HTTP服务器的80,源端口号是HTTP客户端; 11:HTTP服务器端口号不是80的情况; (43)对首部长度HL(Header Length)进行压缩:因不含选项字段的TCP首部长度是20字节,意味着首部长度值不会出现在0000到0100之间;含有一个或多个选项字段的TCP首部在HTTP协议通信中最长为40字节,即不会使用1011到1111;故对下述可能出现的首部长度值进行编码如下: 000:首部长度为5,表示不含选项字段的TCP首部长度是20字节; 001:首部长度为6,表示包含选项字段的TCP首部长度是24字节; 010:首部长度为7,表示包含选项字段的TCP首部长度是28字节; 011:首部长度为8,表示包含选项字段的TCP首部长度是32字节; 100:首部长度为9,表示包含选项字段的TCP首部长度是36字节; 101:首部长度为10,表示包含选项字段的TCP首部长度是HTTP中最长的40字节; 110和111:均为保留用途; (44)对序列号和确认号(Sequence and Acknowledgment Number)进行压缩:因TCP连接第一次握手时,数据包不会携带确认号,故直接省略该字段;若不是第一次握手时,则将序列号和确认号均保留于In‑Line部分; (45)对窗口值(Window)进行压缩:将其保留于In‑Line部分; (46)对紧急指针(Urgent Pointer)进行压缩:因其与紧急指针位(URG)一起使用,而HTTP不会使用该字段,故直接省略; (47)对校验和(Checksum)进行压缩:因HTTP不进行校验,故将其保留于In‑Line部分; (5)数据链路层对6LoWPAN数据报封装帧头和帧尾后,形成数据链路帧交给物理层; (6)物理层将数据链路帧通过网络发送给接收端; (7)接收端按照上述过程的逆处理对接收的数据报进行解压,接收端的应用层接收到发送端传送的HTTP协议的数据。 
地址 100876 北京市海淀区西土城路10号