专利名称::基于链路层自动请求重传的tcp分组头部压缩方法及其系统的制作方法
技术领域:
:本发明属于无线数据通信系统中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分组头部压縮方法,其步骤包括(Al)判断TCP报文段IP分组是否同时满足下述头部压缩条件,如果是进入步骤(A4),否则,设置包头中的标志字段raSL为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)置raSL为T5,压縮除TTU标志位及分段偏移量之外的所有头部字段,更新连接跟踪表中TTL的纪录值,并在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,进入步骤(A9);(A9)将收到的包交给下层准备发送。本发明提供的基于链路层自动请求重传的TCP分组头部压縮系统,其特征在于该系统包括头部压縮控制模块、头部压縮模块、头部恢复模块、数据发送模块、数据接收模块、连接跟踪表、数据块与TCP报文段对应表和IPID跟踪表;头部压縮控制模块用于判断TCP连接双方是否同时具有进行头部压縮和恢复的能力,并将判断结果发送给包头部压縮模块和包头部恢复模块,控制包头部压縮模块和包头部恢复模块的操作;包头部压縮模块用于接收来自于上层的TCP报文段IP分组,根据头部压縮控制模块的指令,通过查找连接跟踪表和数据块与TCP报文段对应表对TCP报文段IP分组的头部进行压縮,并对连接跟踪表和数据块与TCP报文段对应表进行更新;包头部压縮模块将压縮后的TCP报文段IP分组发送给数据发送模块;数据发送模块将收到的TCP报文段IP分组放入链路层发送窗口中等待发送;数据接收模块从链路层接收窗口中接收数据,提交给包头部恢复模块;头部恢复模块査找连接跟踪表、数据块与TCP报文段对应表和IPID跟踪表对接收的数据进行重组,恢复TCP报文段IP分组头部,并提交给上层;头部恢复模块还根据TCP报文段IP分组头部中末压縮的信息对连接跟踪表、数据块与TCP报文段对应表和IPID跟踪表进行更新。本发明中基站和移动站利用链路层完全可靠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连接跟踪表<table>tableseeoriginaldocumentpage9</column></row><table>表2数据块与TCP报文段对应表<table>tableseeoriginaldocumentpage9</column></row><table>报文段IP分组的序号表3IP包标识跟踪表数据项长度(Byte)4说明TCP报文段IP分组的源IP地址TCP报文段IP分组的目的IP地址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分组头部进行压縮(Al)判断TCP报文段IP分组是否同时满足下述头部压縮条件,如果是进入步骤(A4),否则,置raSL为lll,进入步骤(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值一样,如果是置raSL为OOl,压縮除3个标志位及13位分段偏移量之外的所有头部字段,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-4所示,进入步骤(A9),否则进入步骤(A7);(A7)判断包头部中IP包标志位是否为全零,如果是置PHSL为010,压縮除8位TTL之外的所有头部字段,更新连接跟踪表中TTL的纪录值,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-5所示,进入步骤(A9),否则进入步骤(A8);(A8)置PHSL为Oll,压縮除8位TTL,3个标志位及13位分段偏移量之外的所有头部字段,更新连接跟踪表中TTL的纪录值,在包头中增加一个字段记录封装该数据包最后一段的ARQ块的序号,如图2-6所示,进入步骤(A9);(A9)将收到的包交给下层准备发送。如图4所示,TCP报文段IP分组头部恢复处理过程为(B1)判断标志字段PHSL是否为111,如果是,查找是否有相应的IPID跟踪表,如果有,用表中的IPID代替TCP报文段IP分组的IPID,并将表中的IPID加一,进入步骤(B2),否则进入步骤(B4);(B2)如果SYN位为1,建立如表1所示的连接跟踪表、如表3所示的IPID跟踪表,置连接跟踪表为等待状态。如果RST位或FIN位为1,连接跟踪表进入停止状态,删除连接跟踪表。如果对应连接跟踪表项已存在,按包头部填充字段的内容更新表项,进入步骤(B3);(B3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,就置状态为活跃,进入步骤(B9),否则直接进入步骤(B9)。(B4)判断标志字段PHSL是否为100,如果是采用如下方法恢复头部IP包头恢复4位版本号4;8位服务类型根据TID査表1中的rcvT0S;16位标识符查表IP包标识跟踪表中的IPID,在IPID的数值上加一,并将这个值作为更新值存入表中。8位传输协议TCP协议;16位首部检验和重新计算;32位源IP地址根据TID查表1中的sndIP;32位目的IP地址根据TID查表1中的rcvIP。TCP包头恢复16位源端口号根据TID查表1中的sndPort16位目的端口号根据TID査表1中的rcvPort;16位检验和重新计算;16位紧急指针填全零。根据TCP包头中32位序号和16位总长度更新表1中的rcvExpSN。进入步骤(B9),否则进入步骤(B5);(B5)判断标志字段PHSL是否为OOO,如果是采用如下方法恢复头部:IP包头恢复4位版本号4;8位服务类型根据TID査表1中的rcvT0S;16位标识符査表IP包标识跟踪表中的IPID,在IPID的数值上加一,并将这个值作为更新值存入表中。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位窗口大小最近一次未压縮确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波通告窗口大小R="xP+丄xQ(0<s<n)其中,P:最近一次未压縮确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。进入步骤(B9),否则进入步骤(B6);(B6)判断标志字段PHSL是否为OOl,如果是采用如下方法恢复头部IP包头恢复4位版本号4;8位服务类型根据TID查表1中的rcvTOS;16位标识符查表IP包标识跟踪表中的IPID,在IPID的数值上加一,并将这个值作为更新值存入表中。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位窗口大小最近一次未压縮确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波通告窗口大小R=^^xP+丄xQ(0<s<n)"其中:P:最近一次未压縮确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。进入步骤(B9),否则进入步骤(B7);(B7)判断标志字段rasL是否为010,如果是采用如下方法恢复头部IP包头恢复4位版本号4;8位服务类型根据TID査表1中的rcvT0S;16位标识符査表IP包标识跟踪表中的IPID,在IPID的数值上加一,并将这个值作为更新值存入表中。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位窗口大小最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波通告窗口大小R二^^xP+丄xQ(0<s<n)"其中:P:最近一次未压缩确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。进入步骤(B9),否则进入步骤(B8);(B8)判断标志字段PHSL是否为Oll,如果是采用如下方法恢复头部IP包头恢复4位版本号4;8位服务类型根据TID查表1中的rcvT0S;16位标识符查表IP包标识跟踪表中的IPID,在IPID的数值上加一,并将这个值作为更新值存入表中。8位传输协议TCP协议;16位首部检验和重新计算;32位源IP地址根据TID查表1中的snciIP;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位窗口大小最近一次未压缩确认报文通告窗口大小和最后一次头部恢复生成确认报文段通告窗口大小做平滑滤波通告窗口大小R二^^xP+丄xQ(0<s<n)"其中:P:最近一次未压縮确认报文通告窗口大小,Q:最后一次头部恢复生成TCP确认报文段通告窗口大小。进入步骤(B9),否则直接进入步骤(B9);(B9)将收到的包交给上层处理。如图5所示,本发明的链路层采用完全可靠的自动请求重传机制(ARQ)。基站利用ARQ提供的信息,压縮或恢复TCP报文段IP分组的头部字段。本发明系统包括头部压縮控制模块1、头部压縮模块2、头部恢复模块3、数据发送模块4、数据接收模块5、连接跟踪表6、数据块与TCP报文段对应表7和IPID跟踪表8。下面对各模块的功能作进一步详细的说明。头部压縮控制模块1负责为TCP连接的双方协商是否同时具有进行头部压縮和恢复的能力,并将协商的结果作为对包头部压縮模块2和包头部恢复模块3的指示,控制包头部压縮模块2、包头部恢复模块3的操作。包头部压縮模块2负责TCP报文段IP分组的头部压縮过程,如果头部压縮控制模块1指示双方都有包头部压縮能力,则该模块发挥效用。如图6所示,当接收/发送SYN标志位为l包的连接建立包时,由初始状态转移到等待状态。在等待状态下,如果收到第一个该连接的数据包就进入活跃状态;如果接收/发送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),状态信息(Statelnfo),及其它可填充的表项。收到/发送第一个数据包时激活该表。用TID标识每一个TCP连接,一组源IP地址,目的IP地址,源端口号,目的端口号唯一确定一个TID,由于TCP连接是双向的,作为发送方获取的源与作为接收方获取的目的一致,作为接收方获取的源与作为发送方获取的目的一致时,就可以认为是一个TCP连接,因此在表中用发送方IP地址sndIP,发送方端口号sndPort,和接收方IP地址rcvIP,接收方端口号rcvPort表示,此后对该表的更新和删除工作以TID为单位进行。一个TID和PHSL的组合在WiMAX系统中对应一个CID和PHSI的组合。对每一个不压縮的包,只要头部压縮模块处于活跃状态,就需要根据包头信息更新表中的sndTTL,rcvTTL,ixvWinSize。rcvT0S信息只需在开始时记录一次即可。LifeTime在没有数据流的情况下每隔100ms加一,当LifeTime二360000时,清除该表,如果中途又有数据到达则将该项清零。sndExpSN,rcvExpSN每发一个包进行一次更新。rcvWinSize—exp是最近一次预测的接收窗口大小。每当包头部压縮模块2对TCP报文段IP分组进行操作时,就同步更新相应得表项。如果包头部压縮模块2或包头部恢复模块3处于复位状态,每收/发一个包就对PktNum进行加1。包头部压縮模块2在完成包头的压縮处理后对包进行分割或合并,在分割合并过程中建立数据块与TCP报文段对应表7如表2所示,记录下ARQ块序号和TCP序号的对应关系。当一个TCP报文段IP分组被分割成多个ARQBlock时,arqBlockID对应封装该TCP报文段IP分组的最后一个ARQBlock,lastSN记录该TCP报文段IP分组得序号,当多个TCP报文段IP分组被整合到同一个ARQBlock时,lastSN对应该ARQBlock封装的最后一个TCP报文段IP分组的序号,arqBlockID记录该ARQBlock的序号。TCP报文段IP分组由包头部压縮模块2处理完后交给数据发送模块4。数据发送模块4将收到的包放入链路层发送窗口中等待发送。数据接收模块5接收从链路层接收窗口中接收数据,提交给包头部恢复模块3进行重组,并恢复TCP报文段IP分组头部。包头部恢复模块3如果接收到未压縮的标志位SYN为1的包,即将连接跟踪表7状态由初始转入等待,收发第一个数据包时再进入激活状态。恢复包头部的具体方法见步骤(B5)、(B6),恢复的过程中更新表1中的rcvExpSN,rcvWinSize,rcvWinSize一exp,rcvTTL,Statelnfo。另夕卜为恢复IP包头中的IPID,还需头部压縮表项管理模块4维护IPID跟踪表8,如表3所示每接收到一个IP包,只要源IP地址和目的IP地址与sourceIP和destinationIP—致就将表项中的IPID加1。如果该IP包不是TCP报文段IP分组就用表中的IPID值替换该包IP包头中的IPID。权利要求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分组头部恢复方法,其步骤包括(Bl)判断标志字段PHSL是否为TO,如果是,查找IPID跟踪表中是否有相应表项,如果有,用表中的IPID代替TCP报文段IP分组的IPID,并将表中的IPID加一,进入步骤(B2),否则进入步骤(B4);(B2)如果SYN位为1,建立IPID跟踪表,置连接跟踪表为等待状态;如果RST位或FIN位为1,连接跟踪表进入停止状态,删除连接跟踪表;如果对应连接跟踪表项已存在,按包头部填充字段的内容更新表项,进入步骤(B3);(B3)判断是否为第一个数据包,如果是,且连接跟踪表处于等待状态,就置状态为活跃,进入步骤(B5),否则直接进入步骤(B5);(B4)根据标志字段fflSL的不同,采用对应的方法对TCP头部和IP头部进行恢复;(B5)将收到的包交给上层处理。3、一种基于链路层自动请求重传的TCP分组头部压縮系统,其特征在于该系统包括头部压縮控制模块(1)、头部压縮模块(2)、头部恢复模块(3)、数据发送模块(4)、数据接收模块(5)、连接跟踪表(6)、数据块与TCP报文段对应表(7)和IPID跟踪表(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)和IPID跟踪表(8)对接收的数据进行重组,恢复TCP报文段IP分组头部,并提交给上层;头部恢复模块(3)还根据TCP报文段IP分组头部中末压縮的信息对连接跟踪表(6)、数据块与TCP报文段对应表(7)和IPID跟踪表(8)进行更新。全文摘要本发明公开了一种基于链路层自动请求重传的TCP分组头部压缩方法及其系统。在基站和移动站之间利用链路层完全可靠ARQ作为保障,保证收发双方连接跟踪表的一致性的前提下,根据不同的情况对TCP报文段IP分组完成不同级别的压缩,并用表项纪录的内容完成头部的恢复,从而不会影响到上层的后续操作。相比于传统方法,本发明方法有更高的头部压缩效率,提高网络传输效率。由于在无线网络中传输的不可靠性和广泛使用的ARQ机制,本发明方法对无线网络特别适用。文档编号H04L29/06GK101179564SQ20071005294公开日2008年5月14日申请日期2007年8月10日优先权日2007年8月10日发明者建刘,吴伟民,朱光喜,李彦淳,喆王,玲王,王晨琛申请人:华中科技大学