CN101179564B - 基于链路层自动请求重传的tcp分组头部压缩方法及其*** - Google Patents
基于链路层自动请求重传的tcp分组头部压缩方法及其*** Download PDFInfo
- Publication number
- CN101179564B CN101179564B CN2007100529443A CN200710052944A CN101179564B CN 101179564 B CN101179564 B CN 101179564B CN 2007100529443 A CN2007100529443 A CN 2007100529443A CN 200710052944 A CN200710052944 A CN 200710052944A CN 101179564 B CN101179564 B CN 101179564B
- Authority
- CN
- China
- Prior art keywords
- packet header
- tcp
- connection tracking
- header
- message segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于链路层自动请求重传的TCP分组头部压缩方法及其***。在基站和移动站之间利用链路层完全可靠ARQ作为保障,保证收发双方连接跟踪表的一致性的前提下,根据不同的情况对TCP报文段IP分组完成不同级别的压缩,并用表项记录的内容完成头部的恢复,从而不会影响到上层的后续操作。相比于传统方法,本发明方法有更高的头部压缩效率,提高网络传输效率。由于在无线网络中传输的不可靠性和广泛使用的ARQ机制,本发明方法对无线网络特别适用。
Description
技术领域
本发明属于无线数据通信***中TCP/IP协议的数据传输技术领域,具体涉及基于链路层自动请求重传(ARQ)信息的TCP报文段IP分组头部压缩的方法及其***。
背景技术
TCP/IP协议在Internet中广泛使用,已经成为网络互联的首选协议。由于当前使用的TCP/IP协议是为有线网络设计的,在有线网络中不存在带宽有限的问题,而对于无线网络节省带宽资源尤其重要。因为无线通信中MAC层有ARQ机制作为保障,原有的TCP报文段IP分组头中有很多信息是对于某个连接固定的,或可以通过已有信息和ARQ中携带的信息推算出来的,如果能将这些信息位以某种规则压缩,再在接收端通过相应的规则恢复出来,则需要在空口上传输的数据就比压缩前的要少,这样自然就节省了带宽资源。
同时,现阶段已有不少改进无线网络上TCP的技术出现,如基于ARQ信息的基站TCP代理确认技术,在这些传输反馈机制的辅助下,TCP报文段IP分组头部有了更多的压缩空间,能发挥更有效的作用。此外,按照IEEE发布的802.16标准,为MAC层提供了头部压缩机制,提供了PHSI标识,并且MAC层的ARQ在数据包封装重组时提供了足够的信息,也为TCP/IP头部压缩提供了更大的范围。
发明内容
本发明的目的在于提供一种基于链路层自动请求重传的TCP报文段IP分组头部压缩方法,该方法节省了有限的带宽资源,提高了数据的传输效率;本发明还提供了实现该方法的***。
本发明提供的基于链路层自动请求重传的TCP分组头部压缩方法,其步骤包括:
(A1)判断TCP报文段IP分组是否同时满足下述头部压缩条件,如果是进入步骤(A4),否则,设置包头中的标志字段PHSL为T0,进入步骤(A2);
头部压缩条件:
①TCP头部标志位URG、PSH、RST、SYN、FIN均不为1;
②接收到TCP包头窗口大小与表中存储的窗口大小的差值小于设定的阀值n,n的取值范围为:256<n<65535;
③连接跟踪表处于活跃状态;
(A2)判断SYN、RST、FIN位是否有为1的,如果SYN位为1,创建连接跟踪表,并置于等待状态;如果RST位或FIN位为1,则连接跟踪表状态为停止,删除连接跟踪表,进入步骤(A9),否则进入步骤(A3);
(A3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,置为活跃状态,进入步骤(A9),否则直接进入步骤(A9);
(A4)判断是否为顺序包且无选项字段,如果是进入步骤(A5),否则压缩掉头部中固定字段,并设置标志字段PHSL为T1,进入(A9);
(A5)建立数据块与TCP报文段对应表,判断包头部中TTL和连接跟踪表中TTL的值是否一样,且IP包标志位是否全零,如果是,则置标志字段PHSL为T2,压缩整个TCP/IP包头,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A6);
(A6)判断包头部中TTL是否和连接跟踪表中TTL值一样,如果是,置标志字段PHSL为T3,压缩标志位及分段偏移量之外的所有头部字段,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A7);
(A7)判断包头部中IP包标志位是否为全零,如果是,置PHSL为T4,压缩除TTL之外的所有头部字段,更新连接跟踪表中TTL的记录值,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A8);
(A8)置PHSL为T5,压缩除TTL、标志位及分段偏移量之外的所有头部字段,更新连接跟踪表中TTL的记录值,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,进入步骤(A9);
(A9)将收到的包交给下层准备发送。
本发明提供的基于链路层自动请求重传的TCP分组头部压缩***,其特征在于:该***包括头部压缩控制模块、包头部压缩模块、包头部恢复模块、数据发送模块、数据接收模块、连接跟踪表、数据块与TCP报文段对应表和IP ID跟踪表;
头部压缩控制模块用于判断TCP连接双方是否同时具有进行头部压缩和恢复的能力,并将判断结果发送给包头部压缩模块和包头部恢复模块,控制包头部压缩模块和包头部恢复模块的操作;
包头部压缩模块用于接收来自于上层的TCP报文段IP分组,根据头部压缩控制模块的指令,通过查找连接跟踪表和数据块与TCP报文段对应表对TCP报文段IP分组的头部进行压缩,并对连接跟踪表和数据块与TCP报文段对应表进行更新;包头部压缩模块将压缩后的TCP报文段IP分组发送给数据发送模块;
数据发送模块将收到的TCP报文段IP分组放入链路层发送窗口中等待发送;
数据接收模块从链路层接收窗口中接收数据,提交给包头部恢复模块;
包头部恢复模块查找连接跟踪表、数据块与TCP报文段对应表和IP ID跟踪表对接收的数据进行重组,恢复TCP报文段IP分组头部,并提交给上层;包头部恢复模块还根据TCP报文段IP分组头部中未压缩的信息对连接跟踪表、数据块与TCP报文段对应表和IP ID跟踪表进行更新。
本发明中基站和移动站利用链路层完全可靠ARQ作为保障,保证收发双方连接跟踪表的一致性,在此基础上完成可恢复的头部压缩。基站或者移动站可以根据各自的条件协商是否支持头部压缩,如果判断具有头部压缩能力,则根据不同情况应用不同的头部压缩规则,在完成头部压缩后在包头设置一个标志字段,该标志字段用于对端的头部恢复过程。如果不需要进行头部压缩则在该标志字段用一个不同于以上选择的符号标识。接收端能根据发送端数据的标志字段判断包是否使用了头部压缩,如果使用了头部压缩,还能根据标志字段的不同判断出应用的哪一种压缩规则,并将头部恢复出来。与现在已有的头部压缩技术——低速串行链路上的TCP/IP头部压缩相比,本发明有更高的压缩效率。该发明对上层完全透明,由于可以保证包头部从已知信息中恢复出来,便无须对上层协议进行修改即可达到改善***性能的目的。无线环境下通常都有ARQ传输反馈机制的辅助,这为本发明在无线通信中应用提供了条件。
附图说明
图1为TCP报文段IP分组头部压缩应用环境;
图2为压缩前后包头部结构:
图2-1为原IP包头;
图2-2为原TCP包头;
图2-3为步骤(A5)压缩完后的包头;
图2-4为步骤(A6)压缩完后的包头;
图2-5为步骤(A7)压缩完后的包头;
图2-6为步骤(A8)压缩完后的包头;
图3为TCP报文段IP分组头部压缩流程;
图4为TCP报文段IP分组头部恢复流程;
图5为TCP报文段IP分组头部压缩的逻辑结构图;
图6为TCP报文段IP分组连接跟踪表状态转移图。
具体实施方式
下面结合附图和实例对本发明作进一步详细的描述。
本发明方法在链路层ARQ信息的辅助下对TCP报文段IP分组头部进行可恢复的最大程度的压缩,并且支持接收双方对是否具有头部压缩能力的协商过程的判断,以及对是否能够进行头部压缩的判断。
基站和移动站首先要对是否具有头部压缩能力进行协商,当确定双方都支持头部压缩后,才能对接收到的TCP报文段IP分组进行头部压缩操作。在操作过程中会增加头部指示连接的13位标志字段TID,和指示压缩级别的3位标志字段PHSL,在压缩/恢复过程中将创建相应表项,包括连接跟踪表、数据块与TCP报文段对应表、IP包标识跟踪表,各表所包含的数据项如表1-3所示,其中连接跟踪表有等待、活跃、复位和停止四种状态。
表1连接跟踪表
长度
数据项 说明
(Byte)
TID 2 TCP连接的唯一标识
sndIP 4 TCP报文段IP分组发方的IP地址
rcvIP 4 TCP报文段IP分组收方的IP地址
sndPort 2 TCP报文段IP分组发方的端口地址
rcvPort 2 TCP报文段IP分组收方的端口地址
StateInfo 1 记录头部压缩当前所处的状态
PktNum 1 ARQ复位后收/发包的个数
LifeTime 2 侦听连接没有数据流的时间
sndTTL 1 待发送包包头中的TTL信息
sndExpSN 4 期待发送的TCP/IP包的序列号
sndWinSize 2 待发送包包头中接收窗口大小
rcvTTL 1 被接收包包头中的TTL信息
rcvExpSN 4 期待接收的TCP报文段IP分组的序号
rcvWinSize 2 最近一次未压缩包接收窗口大小
rcvWinSize_exp 2 最近一次预测的接收窗口大小
rcvTOS 1 TCP报文段IP分组的服务类型
表2数据块与TCP报文段对应表
数据项 长度(Byte) 说明
TID 2 TCP连接的唯一标识
arqBlockID 2 ARQ封装TCP/IP包的数据帧编号
lastSN 4 由ARQ封装的最后一个TCP
报文段IP分组的序号
表3IP包标识跟踪表
数据项 长度(Byte) 说明
sourceIP 4 TCP报文段IP分组的源IP地址
destinationIP 4 TCP报文段IP分组的目的IP地址
IP ID 2 IP包标识符
图1为TCP报文段IP分组头部压缩应用环境,本发明是针对应用TCP/IP协议基于ARQ的无线链路。
进行头部压缩前,IP分组头部如图2-1所示,TCP报文段头部如图2-2所示。若不进行压缩就必须传送头部的完整信息,如果进行压缩,按照连接两端所掌握信息的不同,可以对头部进行不同程度的压缩,压缩后的头部如图2-3、2-4、2-5、2-6所示,将在下面详细描述其压缩过程。
如图3所示,TCP报文段IP分组头部压缩处理过程为:
一种基于链路层自动请求重传的TCP分组头部压缩方法,其步骤为:
(A)按照下述过程对TCP报文段IP分组头部进行压缩:
(A1)判断TCP报文段IP分组是否同时满足下述头部压缩条件,如果是进入步骤(A4),否则,置PHSL为111,进入步骤(A2);
头部压缩条件:
①TCP头部标志位URG、PSH、RST、SYN、FIN均不为1;
②TCP包头中窗口大小的变化值,即接收到TCP包头窗口大小与表中存储(从表中读取sndWinSize)的窗口大小的差值小于设定的阀值n,n的取值范围为:256<n<65535;
③连接跟踪表处于活跃状态。
(A2)判断SYN、RST、FIN位是否有为1的,如果SYN位为1,创建连接跟踪表,并置于等待状态。如果RST位或FIN位为1,则连接跟踪表状态为停止,删除连接跟踪表,进入步骤(A9),否则进入步骤(A3);
(A3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,置为活跃状态,进入步骤(A9),否则直接进入步骤(A9);
(A4)判断是否为顺序包且无选项字段,如果是进入步骤(A5),否则压缩掉头部中的如下部分:4位版本号、8位服务类型、16位标识符、8位传输协议、32位源IP地址、32位目的IP地址、16位IP包首部检验和、16位源端口号、16位目的端口号、16位紧急指针、16位TCP包首部检验和,并置PHSL为100,进入(A9);
(A5)建立数据块与TCP报文段对应表,判断包头部中TTL和记录表中TTL的值一样,且IP包标志位全零,如果是置PHSL为000,压缩整个TCP/IP包头,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-3所示,进入步骤(A9),否则进入步骤(A6);
(A6)判断包头部中TTL是否和记录表中TTL值一样,如果是置PHSL为001,压缩除3个标志位及13位分段偏移量之外的所有头部字段,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-4所示,进入步骤(A9),否则进入步骤(A7);
(A7)判断包头部中IP包标志位是否为全零,如果是置PHSL为010,压缩除8位TTL之外的所有头部字段,更新连接跟踪表中TTL的记录值,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-5所示,进入步骤(A9),否则进入步骤(A8);
(A8)置PHSL为011,压缩除8位TTL,3个标志位及13位分段偏移量之外的所有头部字段,更新连接跟踪表中TTL的记录值,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-6所示,进入步骤(A9);
(A9)将收到的包交给下层准备发送。
如图4所示,TCP报文段IP分组头部恢复处理过程为:
(B1)判断标志字段PHSL是否为111,如果是,查找是否有相应的IP ID跟踪表,如果有,用表中的IP ID代替TCP报文段IP分组的IP ID,并将表中的IP ID加一,进入步骤(B2),否则进入步骤(B4);
(B2)如果SYN位为1,建立如表1所示的连接跟踪表、如表3所示的IP ID跟踪表,置连接跟踪表为等待状态。如果RST位或FIN位为1,连接跟踪表进入停止状态,删除连接跟踪表。如果对应连接跟踪表项已存在,按包头部填充字段的内容更新表项,进入步骤(B3);
(B3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,就置状态为活跃,进入步骤(B9),否则直接进入步骤(B9)。
(B4)判断标志字段PHSL是否为100,如果是采用如下方法恢复头部:IP包头恢复:
4位版本号:4;
8位服务类型:根据TID查表1中的rcvTOS;
16位标识符:查表IP包标识跟踪表中的IPID,在IP ID的数值上加一,并将这个值作为更新值存入表中。
8位传输协议:TCP协议;
16位首部检验和:重新计算;
32位源IP地址:根据TID查表1中的sndIP;
32位目的IP地址:根据TID查表1中的rcvIP。
TCP包头恢复:
16位源端口号:根据TID查表1中的sndPort
16位目的端口号:根据TID查表1中的rcvPort;
16位检验和:重新计算;
16位紧急指针:填全零。
根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。
进入步骤(B9),否则进入步骤(B5);
(B5)判断标志字段PHSL是否为000,如果是采用如下方法恢复头部:IP包头恢复:
4位版本号:4;
8位服务类型:根据TID查表1中的rcvTOS;
16位标识符:查表IP包标识跟踪表中的IP ID,在IP ID的数值上加一,并将这个值作为更新值存入表中。
8位传输协议:TCP协议;
16位首部检验和:重新计算;
32位源IP地址:根据TID查表1中的sndIP;
32位目的IP地址:根据TID查表1中的rcvIP。
4位首部长度:5;
8位生存时间:根据TID查表1中的rcvTTL;
16位总长度:从ARQ块头部信息中获得;
3位标志:000;
13位分段偏移量:填全零;
TCP包头恢复:
16位源端口号:根据TID查表1中的sndPort;
16位目的端口号:根据TID查表1中的rcvPort;
16位检验和:重新计算;
16位紧急指针:填全零。
根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。
32位序号:根据TID查表1中的rcvExpSN,并根据ARQ块头部信息更新连接跟踪表中的该项;
32位确认序号:根据保留的包确认信息配合表2恢复出原来的32位ACK序号。
4位首部长度:5;
6位保留:填全零;
URG、PSH、RST、SYN、FIN:填全零;
ACK:1;
16位窗口大小:最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波:通告窗口大小
其中,P:最近一次未压缩确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。
进入步骤(B9),否则进入步骤(B6);
(B6)判断标志字段PHSL是否为001,如果是采用如下方法恢复头部:IP包头恢复:
4位版本号:4;
8位服务类型:根据TID查表1中的rcvTOS;
16位标识符:查表IP包标识跟踪表中的IP ID,在IP ID的数值上加一,并将这个值作为更新值存入表中。
8位传输协议:TCP协议;
16位首部检验和:重新计算;
32位源IP地址:根据TID查表1中的sndIP;
32位目的IP地址:根据TID查表1中的rcvIP。
4位首部长度:5;
8位生存时间:根据TID查表1中的rcvTTL;
16位总长度:从ARQ块头部信息中获得;
TCP包头恢复:
16位源端口号:根据TID查表1中的sndPort;
16位目的端口号:根据TID查表1中的rcvPort;
16位检验和:重新计算;
16位紧急指针:填全零。
根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。
32位序号:根据TID查表1中的rcvExpSN,并根据ARQ块头部信息更新连接跟踪表中的该项;
32位确认序号:根据保留的包确认信息配合表2恢复出原来的32位ACK序号。
4位首部长度:5;
6位保留:填全零;
URG、PSH、RST、SYN、FIN:填全零;
ACK:1;
16位窗口大小:最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波:通告窗口大小
其中,P:最近一次未压缩确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。
进入步骤(B9),否则进入步骤(B7);
(B7)判断标志字段PHSL是否为010,如果是采用如下方法恢复头部:IP包头恢复:
4位版本号:4;
8位服务类型:根据TID查表1中的rcvTOS;
16位标识符:查表IP包标识跟踪表中的IP ID,在IP ID的数值上加一,并将这个值作为更新值存入表中。
8位传输协议:TCP协议;
16位首部检验和:重新计算;
32位源IP地址:根据TID查表1中的sndIP;
32位目的IP地址:根据TID查表1中的rcvIP。
4位首部长度:5;
16位总长度:从ARQ块头部信息中获得;
3位标志:000;
13位分段偏移量:填全零;
用包头部保留的TTL信息更新表1中的rcvTTL;
TCP包头恢复:
16位源端口号:根据TID查表1中的sndPort;
16位目的端口号:根据TID查表1中的rcvPort;
16位检验和:重新计算;
16位紧急指针:填全零。
根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。
32位序号:根据TID查表1中的rcvExpSN,并根据ARQ块头部信息更新连接跟踪表中的该项;
32位确认序号:根据保留的包确认信息配合表2恢复出原来的32位ACK序号。
4位首部长度:5;
6位保留:填全零;
URG、PSH、RST、SYN、FIN:填全零;
ACK:1;
16位窗口大小:最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波:通告窗口大小
其中,P:最近一次未压缩确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。
进入步骤(B9),否则进入步骤(B8);
(B8)判断标志字段PHSL是否为011,如果是采用如下方法恢复头部:IP包头恢复:
4位版本号:4;
8位服务类型:根据TID查表1中的rcvTOS;
16位标识符:查表IP包标识跟踪表中的IP ID,在IP ID的数值上加一,并将这个值作为更新值存入表中。
8位传输协议:TCP协议;
16位首部检验和:重新计算;
32位源IP地址:根据TID查表1中的sndIP;
32位目的IP地址:根据TID查表1中的rcvIP。
4位首部长度:5;
16位总长度:从ARQ块头部信息中获得;
用包头部保留的TTL信息更新连接跟踪表中的rcvTTL;
TCP包头恢复:
16位源端口号:根据TID查表1中的sndPort;
16位目的端口号:根据TID查表1中的rcvPort;
16位检验和:重新计算;
16位紧急指针:填全零。
根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。
32位序号:根据TID查表1中的rcvExpSN,并根据ARQ块头部信息更新连接跟踪表中的该项;
32位确认序号:根据保留的包确认信息配合表2恢复出原来的32位ACK序号。
4位首部长度:5;
6位保留:填全零;
URG、PSH、RST、SYN、FIN:填全零;
ACK:1;
16位窗口大小:最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波:通告窗口大小
其中,P:最近一次未压缩确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。
进入步骤(B9),否则直接进入步骤(B9);
(B9)将收到的包交给上层处理。
如图5所示,本发明的链路层采用完全可靠的自动请求重传机制(ARQ)。基站利用ARQ提供的信息,压缩或恢复TCP报文段IP分组的头部字段。本发明***包括头部压缩控制模块1、包头部压缩模块2、包头部恢复模块3、数据发送模块4、数据接收模块5、连接跟踪表6、数据块与TCP报文段对应表7和IP ID跟踪表8。
下面对各模块的功能作进一步详细的说明。
头部压缩控制模块1负责为TCP连接的双方协商是否同时具有进行头部压缩和恢复的能力,并将协商的结果作为对包头部压缩模块2和包头部恢复模块3的指示,控制包头部压缩模块2、包头部恢复模块3的操作。
包头部压缩模块2负责TCP报文段IP分组的头部压缩过程,如果头部压缩控制模块1指示双方都有包头部压缩能力,则该模块发挥效用。
如图6所示,当接收/发送SYN标志位为1包的连接建立包时,由初始状态转移到等待状态。在等待状态下,如果收到第一个该连接的数据包就进入活跃状态;如果接收/发送SYN标志位为1的包,仍留在等待状态;如果接收/发送RST或FIN标志位为1的包,就进入停止状态;在活跃状态下,如果收到RST或FIN标志位为1的包,就进入停止状态。如果收到链路层ARQ复位完成指示,就进入复位状态。在复位状态下,跟踪收/发数据包个数,并记录在连接跟踪表中,当表项中数值为k(k)0)就进入活跃状态。
TCP报文段IP分组经包头部压缩模块2处理时,对判断无需压缩的包,如果是建立连接的SYN位为1的包,就建立连接跟踪表8并进入等待状态,如表1所示,为该连接分配一个TID,并记录下发方的IP地址(sndIP)和端口号(sndPort),收方的IP地址(rcvIP)和端口号(rcvPort),状态信息(StateInfo),及其它可填充的表项。收到/发送第一个数据包时激活该表。
用TID标识每一个TCP连接,一组源IP地址,目的IP地址,源端口号,目的端口号唯一确定一个TID,由于TCP连接是双向的,作为发送方获取的源与作为接收方获取的目的一致,作为接收方获取的源与作为发送方获取的目的一致时,就可以认为是一个TCP连接,因此在表中用发送方IP地址sndIP,发送方端口号sndPort,和接收方IP地址rcvIP,接收方端口号rcvPort表示,此后对该表的更新和删除工作以TID为单位进行。一个TID和PHSL的组合在WiMAX***中对应一个CID和PHSI的组合。
对每一个不压缩的包,只要包头部压缩模块处于活跃状态,就需要根据包头信息更新表中的sndTTL,rcvTTL,rcvWinSize。rcvTOS信息只需在开始时记录一次即可。LifeTime在没有数据流的情况下每隔100ms加一,当LifeTime=360000时,清除该表,如果中途又有数据到达则将该项清零。sndExpSN,rcvExpSN每发一个包进行一次更新。rcvWinSize_exp是最近一次预测的接收窗口大小。每当包头部压缩模块2对TCP报文段IP分组进行操作时,就同步更新相应得表项。如果包头部压缩模块2或包头部恢复模块3处于复位状态,每收/发一个包就对PktNum进行加1。
包头部压缩模块2在完成包头的压缩处理后对包进行分割或合并,在分割合并过程中建立数据块与TCP报文段对应表7如表2所示,记录下ARQ块序号和TCP序号的对应关系。
当一个TCP报文段IP分组被分割成多个ARQ Block时,arqBlockID对应封装该TCP报文段IP分组的最后一个ARQ Block,lastSN记录该TCP报文段IP分组得序号,当多个TCP报文段IP分组被整合到同一个ARQ Block时,lastSN对应该ARQ Block封装的最后一个TCP报文段IP分组的序号,arqBlockID记录该ARQ Block的序号。
TCP报文段IP分组由包头部压缩模块2处理完后交给数据发送模块4。
数据发送模块4将收到的包放入链路层发送窗口中等待发送。
数据接收模块5接收从链路层接收窗口中接收数据,提交给包头部恢复模块3进行重组,并恢复TCP报文段IP分组头部。
包头部恢复模块3如果接收到未压缩的标志位SYN为1的包,即将连接跟踪表7状态由初始转入等待,收发第一个数据包时再进入激活状态。恢复包头部的具体方法见步骤(B5)、(B6),恢复的过程中更新表1中的rcvExpSN,rcvWinSize,rcvWinSize_exp,rcvTTL,StateInfo。另外为恢复IP包头中的IP ID,还需头部压缩表项管理模块4维护IP ID跟踪表8,如表3所示:
每接收到一个IP包,只要源IP地址和目的IP地址与sourceIP和destinationIP一致就将表项中的IP ID加1。如果该IP包不是TCP报文段IP分组就用表中的IP ID值替换该包IP包头中的IP ID。
Claims (3)
1.一种基于链路层自动请求重传的TCP分组头部压缩方法,其步骤包括:
(A1)判断TCP报文段IP分组是否同时满足下述头部压缩条件,如果是进入步骤(A4),否则,设置包头中的标志字段PHSL为T0,进入步骤(A2);
头部压缩条件:
①TCP头部标志位URG、PSH、RST、SYN、FIN均不为1;
②接收到TCP包头窗口大小与表中存储的窗口大小的差值小于设定的阀值n,n的取值范围为:256<n<65535;
③连接跟踪表处于活跃状态;
(A2)判断SYN、RST、FIN位是否有为1的,如果SYN位为1,创建连接跟踪表,并置于等待状态;如果RST位或FIN位为1,则连接跟踪表状态为停止,删除连接跟踪表,进入步骤(A9),否则进入步骤(A3);
(A3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,置为活跃状态,进入步骤(A9),否则直接进入步骤(A9);
(A4)判断是否为顺序包且无选项字段,如果是进入步骤(A5),否则压缩掉头部中固定字段,并设置标志字段PHSL为T1,进入(A9);
(A5)建立数据块与TCP报文段对应表,判断包头部中TTL和连接跟踪表中TTL的值是否一样,且IP包标志位是否全零,如果是,则置标志字段PHSL为T2,压缩整个TCP/IP包头,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A6);
(A6)判断包头部中TTL是否和连接跟踪表中TTL值一样,如果是,置标志字段PHSL为T3,压缩标志位及分段偏移量之外的所有头部字段,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A7);
(A7)判断包头部中IP包标志位是否为全零,如果是,置PHSL为T4,压缩除TTL之外的所有头部字段,更新连接跟踪表中TTL的记录值,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,然后转入步骤(A9),否则进入步骤(A8);
(A8)置PHSL为T5,压缩除TTL、标志位及分段偏移量之外的所有头部字段,更新连接跟踪表中TTL的记录值,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,进入步骤(A9);
(A9)将收到的包交给下层准备发送。
2.一种基于链路层自动请求重传的TCP分组头部恢复方法,其步骤包括:
(B1)判断标志字段PHSL是否为T0,如果是,查找是否有相应的IP ID跟踪表,如果有,用表中的IP ID代替TCP报文段IP分组的IP ID,并将表中的IP ID加一,进入步骤(B2),否则进入步骤(B4);
(B2)如果SYN位为1,建立连接跟踪表和IP ID跟踪表,置连接跟踪表为等待状态;如果RST位或FIN位为1,连接跟踪表进入停止状态,删除连接跟踪表;如果对应连接跟踪表项已存在,按包头部填充字段的内容更新表项,进入步骤(B3);
(B3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,就置状态为活跃,进入步骤(B5),否则直接进入步骤(B5);
(B4)根据标志字段PHSL的不同,采用对应的方法对TCP头部和IP头部进行恢复;
(B5)将收到的包交给上层处理。
3.一种基于链路层自动请求重传的TCP分组头部压缩***,其特征在于:该***包括头部压缩控制模块(1)、包头部压缩模块(2)、包头部恢复模块(3)、数据发送模块(4)、数据接收模块(5)、连接跟踪表(6)、数据块与TCP报文段对应表(7)和IP ID跟踪表(8);
头部压缩控制模块(1)用于判断TCP连接双方是否同时具有进行头部压缩和恢复的能力,并将判断结果发送给包头部压缩模块(2)和包头部恢复模块(3),控制包头部压缩模块(2)和包头部恢复模块(3)的操作;
包头部压缩模块(2)用于接收来自于上层的TCP报文段IP分组,根据头部压缩控制模块(1)的指令,通过查找连接跟踪表(6)和数据块与TCP报文段对应表(7)对TCP报文段IP分组的头部进行压缩,并对连接跟踪表(6)和数据块与TCP报文段对应表(7)进行更新;包头部压缩模块
(2)将压缩后的TCP报文段IP分组发送给数据发送模块(4);
数据发送模块(4)将收到的TCP报文段IP分组放入链路层发送窗口中等待发送;
数据接收模块(5)从链路层接收窗口中接收数据,提交给包头部恢复模块(3);
包头部恢复模块(3)查找连接跟踪表(6)、数据块与TCP报文段对应表(7)和IP ID跟踪表(8)对接收的数据进行重组,恢复TCP报文段IP分组头部,并提交给上层;包头部恢复模块(3)还根据TCP报文段IP分组头部中未压缩的信息对连接跟踪表(6)、数据块与TCP报文段对应表(7)和IP ID跟踪表(8)进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100529443A CN101179564B (zh) | 2007-08-10 | 2007-08-10 | 基于链路层自动请求重传的tcp分组头部压缩方法及其*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100529443A CN101179564B (zh) | 2007-08-10 | 2007-08-10 | 基于链路层自动请求重传的tcp分组头部压缩方法及其*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101179564A CN101179564A (zh) | 2008-05-14 |
CN101179564B true CN101179564B (zh) | 2010-12-01 |
Family
ID=39405649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100529443A Expired - Fee Related CN101179564B (zh) | 2007-08-10 | 2007-08-10 | 基于链路层自动请求重传的tcp分组头部压缩方法及其*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101179564B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582833B (zh) * | 2008-05-15 | 2011-10-05 | 成都市华为赛门铁克科技有限公司 | 一种伪造ip数据包的处理方法及装置 |
CN102292940B (zh) * | 2009-04-20 | 2014-04-02 | 华为技术有限公司 | 一种采用arq机制的头压缩通信方法和装置 |
CN102025605A (zh) * | 2009-09-23 | 2011-04-20 | 中兴通讯股份有限公司 | 一种数据传输方法及*** |
CN102291406B (zh) * | 2011-08-12 | 2017-02-15 | 中兴通讯股份有限公司 | 鲁棒性头压缩处理方法及鲁棒性头压缩处理器 |
CN103188146B (zh) * | 2011-12-31 | 2017-04-26 | 华为技术有限公司 | 一种连续数据包的发送、接收方法和装置 |
CN102761393A (zh) * | 2012-07-05 | 2012-10-31 | 中兴通讯股份有限公司 | 数据报文处理方法及装置 |
CN103944880B (zh) * | 2014-03-13 | 2017-11-14 | 湖南强军科技有限公司 | 一种ZigBee数据传输的方法 |
CN104636432B (zh) * | 2014-12-29 | 2019-03-12 | 大唐移动通信设备有限公司 | 一种日志文件压缩和解压的方法及装置 |
CN109729047A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种报文处理方法及装置 |
CN109729059B (zh) | 2017-10-31 | 2020-08-14 | 华为技术有限公司 | 数据处理方法、装置及计算机 |
CN108924954B (zh) * | 2018-07-29 | 2023-11-14 | 江苏博克斯科技股份有限公司 | 基于无线网络的水污染监测方法及*** |
CN110048818B (zh) * | 2019-05-05 | 2020-06-23 | 华中科技大学 | 一种对于用户的tid的反馈信息确认及处理***及处理方法 |
CN110247998A (zh) * | 2019-07-03 | 2019-09-17 | 北京宏图佳都通信设备有限公司 | 一种IPv4/IPv6数据传输处理方法和*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1913531A (zh) * | 2006-08-25 | 2007-02-14 | 华为技术有限公司 | 一种tcp/ip包头的传输方法、压缩方法和装置 |
-
2007
- 2007-08-10 CN CN2007100529443A patent/CN101179564B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1913531A (zh) * | 2006-08-25 | 2007-02-14 | 华为技术有限公司 | 一种tcp/ip包头的传输方法、压缩方法和装置 |
Non-Patent Citations (2)
Title |
---|
朱光喜,周楠,吴伟民,李盈.基于ARQ信息的TCP代理确认方法.华中科技大学学报(自然科学版)34 11.2006,34(11),全文. |
朱光喜,周楠,吴伟民,李盈.基于ARQ信息的TCP代理确认方法.华中科技大学学报(自然科学版)34 11.2006,34(11),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN101179564A (zh) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101179564B (zh) | 基于链路层自动请求重传的tcp分组头部压缩方法及其*** | |
CN101204068B (zh) | 动态鲁棒首部压缩 | |
JP6025880B2 (ja) | データ伝送方法、装置及びシステム | |
CN100525289C (zh) | 用于voip无线终端的***和方法 | |
US5446736A (en) | Method and apparatus for connecting a node to a wireless network using a standard protocol | |
US8160106B2 (en) | Method, device and system for transmitting Ethernet packets | |
CN100461770C (zh) | 用于终端无线通信***分组业务传输链路的数据处理方法 | |
CN1359581A (zh) | 在移动通信***中提供安全链路的技术 | |
CN104780119B (zh) | 一种基于scps‑tp的丢包定位及检测方法 | |
CN108632229A (zh) | 一种多连接中的头压缩方法、解头压缩方法及装置 | |
CN102045132A (zh) | 基于重传机制的对头压缩数据包进行传输的方法和装置 | |
CA2440814A1 (en) | Method and apparatus for providing multiple quality of service levels in a wireless packet data services connection | |
CN101848171A (zh) | 一种基于gre隧道的数据传输方法、设备和*** | |
CN101568144A (zh) | 一种适用于无线自组织网络的报头压缩方法 | |
CN104079488A (zh) | 基于以太网二层头压缩的传输设备及方法 | |
CN102413506B (zh) | 一种压缩方法与装置 | |
Moons et al. | Using SCHC for an optimized protocol stack in multimodal LPWAN solutions | |
CN104683017A (zh) | 一种卫星移动通信rlc层am模式传输方法 | |
CN102739569A (zh) | 一种用于卫星通信中的网关及其tcp性能增强的方法 | |
CN103748916A (zh) | 一种数据发送、接收方法和装置 | |
CN106576108A (zh) | 通信***中的通信方法和设备及*** | |
CN109936492A (zh) | 一种通过隧道传输报文的方法、装置和*** | |
CN104836642A (zh) | 基于纠删编码的ltp协议优化设计方法 | |
CN102318282A (zh) | 一种压缩数据包的传输方法及装置 | |
CN109587733A (zh) | 低功耗无线通讯传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101201 Termination date: 20140810 |
|
EXPY | Termination of patent right or utility model |