一种数据发送方法和装置的制作方法

文档序号:7765066阅读:291来源:国知局
专利名称:一种数据发送方法和装置的制作方法
技术领域
本发明涉及通信技术领域,特别是涉及一种数据发送方法和装置。
背景技术
当现有的3G/LTE无线通信系统进行TCP/IP数据传输时,一般先采用IETF标准化的头部压缩协议对数据包头进行压缩,然后依次发送压缩了包头的数据包。从而减少了传输的数据量,达到了提高信道的传输效率的效果。例如,采用RFC2507或者RFC3095协议对数据包头进行压缩。其中,数据包头的压缩方法为当发送N个连续的拥有相同的数据包头的数据包时,对第一数据包的包头不进行压缩,而对后续的N-I个数据包的包头进行压缩,并分别在压缩的数据包头中指示出压缩的类型、关联的未压缩包头的编号以及与前一个数据包头的区别。从而可以消除冗余,进一步提高了信道的传输效率。例如,请参阅图1,其为现有技术中一种IP数据包的发送方法示意图。如图1所示,对第一个IP数据包的包头不进行压缩, 而对后续的IP数据包的包头进行压缩,压缩的包头中还指示了压缩的类型、关联的未压缩包头的编号和与前一个IP数据包的差分值。通常,具有相同或者相似包头且连续的几个数据包可以被定义为一个数据包流。因此,在一个数据包流中,对该数据包流中的第一个数据包的包头不进行压缩,对后面的数据包的包头进行压缩,之后,在发送端逐一发送该数据包流中的各个数据包。但是,发明人在研究中发现实际上,在进行数据发送时,具有相同或者相似包头的数据包往往是不连续的。例如,请参阅图2,其为现有技术中一种待发送数据的结构示意图。如图2所示,为了便于描述,仅以7个数据包为例。在这7个数据包中,数据包1和数据包5具有相同的或者相似的包头,数据包2与数据包6具有相同或者相似的包头,数据包 3与数据包7具有相同或者相似的包头,而数据包4具有与前述数据包都不相同的一个包头。在这种情况下,不适于实现数据包头的压缩,发送端会频繁发送未经过包头压缩的数据包,从而导致信道的传输效率的降低。特别是随着hternet网络的普及,TCP/IP应用也越来越多。当有众多网络应用运行时,会产生大量的数据包类型,图2中的情况也会出现的越来越频繁,进而会严重地影响信道的传输效率。

发明内容
为了解决上述技术问题,本发明实施例提供了一种数据发送方法和装置,以提高信道的传输效率。本发明实施例公开了如下技术方案—种数据发送方法,包括依次从待发送的数据包队列中提取数据包;识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;如果是,将所述当前提取的数据包存储在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送所述缓存队列中的数据包。一种数据发送的装置,包括提取单元,用于依次从待发送的数据包队列中提取数据包识别单元,用于识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;存储单元,用于当所述识别单元的结果为是时,将所述当前提取的数据包缓存在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送单元,用于发送所述缓存队列中的数据包。由上述实施例可以看出,在发送数据包之前,将待发送数据包队列中的数据包重新进行排序,使具有相同或者相似包头的数据包排在一起并缓存在缓存队列中,最后,发送缓存队列中的数据包。由于具有相同或者相似包头的数据包排在一起,因此,在缓存队列中构成了一个个的符合包头压缩条件的数据包流。避免了发送端频繁发送未经过包头压缩的数据包,从而提高了信道的传输效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中一种IP数据包的发送方法示意图;图2为现有技术中一种待发送数据的结构示意图;图3为本申请一种数据发送方法的一个实施例的流程图;图4为图2中的待发送数据经过重新排序后的数据结构示意图;图5为本申请一种数据发送的方法的另一个实施例的流程图;图6为RFC2507协议下TCP数据包的包头结构图;图7为本申请一种数据发送装置的一个实施例的结构图;图8为本申请的数据发送的装置的一个应用场景示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。实施例一请参阅图3,其为本申请一种数据发送方法的一个实施例的流程图。包括以下步骤步骤301 依次从待发送的数据包队列中提取数据包;例如,为了方面描述,以图2所示的7个待发送数据包为例进行说明。在待发送的
数据包队列中,待发送的数据包的顺序为数据包1,数据包2、数据包3......数据包7。其
中,数据包1和数据包5具有相同的或者相似的包头,数据包2与数据包6具有相同或者相似的包头,数据包3与数据包7具有相同或者相似的包头,而数据包4具有与前述数据包都不相同的一个包头。步骤302 识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,如果是,进入步骤303,否则,进入步骤304,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;其中,所述识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头包括从所述当前提取的数据包的包头中和所述缓存队列的数据包的包头中分别提取关键字段;判断从当前提取的数据包中获得的关键字段是否与从缓存队列的数据包中获得的关键字段相同,如果是,所述当前提取的数据包与所述缓存队列中的数据包具有相同或者相似的包头,否则,所述当前提取的数据包与所述缓存队列中的数据包不具有相同或者相似的包头。例如,对于IPv6类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括 IPv6 数据包的包头中的 Version 字段、Traffic Class 字段、Flow Lable 字段、Next Header 字段、Hop Limit 字段、Source Address 字段和 Destination Address 字段。在 RFC3095 的头部压缩协议下,其关键字段包括IPv6数据包的包头中的Version字段、Flow Lable字段、 Next Header 字段、Source Address 字段禾口 Destination Address 字段。对于IPv4类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括IPv4 数据包的包头中的Version字段、IHL字段、Type of Service字段、Flags字段、Fragment Offset 字段、Time to Live 字段、Protocol 字段、Source Address 字段禾口 Destination Address字段。在RFC3095的头部压缩协议下,其关键字段包括IPv4数据包的包头中的 Version 字段、Don’ t Fragment flag 字段、Protocol 字段、Source Address 字段禾口 Destination Address 字段。对于UDP类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括UDP数据包的包头中的Source Port字段和Destination Port字段。在RFC3095的头部压缩协议下,其关键字段包括UDP数据包的包头中的Source Port字段和Destination Port字段。对于RTP类型的数据包,在RFC3095的头部压缩协议下,其关键字段包括RTP数据包的包头中的lidding字段、Extension字段和SSRC字段。对于TCP类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括TCP数据包的包头中的Source Port字段、Destination Port字段禾口 Offset字段。需要说明的是,本申请实施例并不限定关键字段的具体形式,除上述规定的关键字段可以用于包头的相同性或者相似性的识别之外,还可以利用其它关键字段对包头的相同性或者相似性进行识别。步骤303 将所述当前提取的数据包存储在所述缓存队列中最后一个符合条件的数据包后,进入步骤305;步骤304 将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后, 进入步骤305 ;例如,在初始情况下,由于缓存队列为空,因此,当从待发送的数据包队列中提取数据包1后,通过步骤302的识别发现,在缓存队列中没有与数据包1具有相同或者相似的包头的数据包,即将数据包1存储在缓存队列的第一位。同样,当接下来提取数据包2、数据包3和数据包4后,通过步骤302的识别发现,在缓存队列中均没有与数据包2、数据包3和
6数据包4具有相同或者相似的包头的数据包,依次将数据包2存储在数据包1后,将数据包 3存储在数据包2后,将数据包4存储在数据包3后。当提取到数据包5后,通过步骤302 的识别发现,数据包5与缓存队列中的数据包1具有相同或者相似的包头,由于数据包1是唯一的一个与数据包5具有相同或者相似包头的数据包,因此,将数据包5存储在数据包1 后。同样,当接下来提取到数据包6和数据包7后,通过步骤302的识别发现,数据包6与缓存队列中的数据包2具有相同或者相似的包头,数据包7与缓存队列中的数据包3具有相同或者相似的包头,因此,将数据包6存储在数据包2后,将数据包7存储在数据包3后。经过上述重排序后,得到了一个新的缓存队列。请参阅图4,其为图2中的待发送数据经过重新排序后的数据结构示意图。如图4所示,经过重新排序后,具有相同或者相似包头的数据包1和数据包5排列在一起,具有相同或者相似包头的数据包2和数据包6排列在一起,具有相同或者相似包头的数据包3和数据包7排列在一起,数据包4排在缓存队列的最后。步骤305 发送所述缓存队列中的数据包。例如,如图4所示,当待发送的数据包队列经过重新排序后,发送该缓存队列中的数据包。其中,数据包1和数据包5具有相同或者相似的包头,因此,对数据包1的包头不进行压缩,而对后续的数据包5的包头进行压缩,并在压缩的数据包5的包头中指示出压缩的类型、关联的未压缩包头的编号和与数据包1的差分值。同理,数据包2和数据包6采用相似的方式进行发送,数据包3和数据包7采用相似的方式进行发送。需要特别说明的是,由于数据包5和数据包2的关键字段不同,即,数据包5与数据包2具有不同或者不相似的包头,因此,当数据包5采用包头压缩的方式发送后,数据包 2采用全包头的方式发送。另外,在本实施例中,可以逐一地发送缓存队列中的数据包,也可以设定一个定时器,在定时器超时时,批量发送缓存队列中的数据包。需要说明是,本申请实施例对缓存队列中数据包的发送形式并不进行限定。由上述实施例可以看出,在发送数据包之前,将待发送数据包队列中的数据包重新进行排序,使具有相同或者相似包头的数据包排在一起并缓存在缓存队列中,最后,发送缓存队列中的数据包。由于具有相同或者相似包头的数据包排在一起,因此,在缓存队列中构成了一个个的符合包头压缩条件的数据包流。避免了发送端频繁发送未经过包头压缩的数据包,从而提高了信道的传输效率。实施例二下面以TCP数据包的发送为例,详细说明对数据发送过程。请参阅图5,其为本申请一种数据发送的方法的另一个实施例的流程图。该方法包括以下步骤步骤501 从待发送的TCP数据包队列中提取一个TCP数据包;步骤502 从当前提取出的TCP数据包和缓存队列中的TCP数据包中提取出位于包头内的关键字段;例如,请参阅图6,其为RFC2507协议下TCP数据包的包头结构图。如图6所示,在 TCP Source PortDestination Port _g、Sequence Number 字段、Acknowledgement Number 字段、Offset 字段、Reserved 字段、Urg 字段、Psh 字段、Ack 字段、Rst字段、Syn字段、Fin字段、Window字段、Checksum字段、Urgent Pointer字段和Options字段和Padding字段。其中,本步骤中所提取的关键字段包括Source Port字段、 Destination Port 字段禾口 Offset 字段。步骤503 判断当前提取出的TCP数据包中获得关键字段是否与从缓存队列的数据包中获得的关键字段相同,如果是,进入步骤504,否则,进入步骤505 ;步骤504 将当前提取的数据包存储在所述缓存队列中最后一个符合条件的数据包后,进入步骤506 ;由于在前面的实施例一中已经对该部分内容进行了详细地描述,故此处不再赘述。步骤505 将当前提取的数据包存储在所述缓存队列中最后一个数据包后,进入步骤506 ;由于在前面的实施例一中已经对该部分内容进行了详细地描述,故此处不再赘述。步骤506 发送所述缓存队列中的数据包。由上述实施例可以看出,在发送数据包之前,将待发送数据包队列中的数据包重新进行排序,使具有相同或者相似包头的数据包排在一起并缓存在缓存队列中,最后,发送缓存队列中的数据包。由于具有相同或者相似包头的数据包排在一起,因此,在缓存队列中构成了一个个的符合包头压缩条件的数据包流。避免了发送端频繁发送未经过包头压缩的数据包,从而提高了信道的传输效率。实施例三与上述数据发送方法相对应,本发明实施例还提供了一种数据发送装置。请参阅图7,其为本申请一种数据发送装置的一个实施例的结构图。如图7所示,该装置包括提取单元701、识别单元702、存储单元703和发送单元704。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。提取单元701,用于依次从待发送的数据包队列中提取数据包识别单元702,用于识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;存储单元703,用于当所述识别单元的结果为是时,将所述当前提取的数据包缓存在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送单元704,用于发送所述缓存队列中的数据包。其中,上述识别单元702包括关键字段提取子单元7021和关键字段判断子单元 7022,关键字段提取子单元7021,用于从所述当前提取的数据包的包头中和所述缓存队列的数据包的包头中分别提取关键字段;关键字段判断子单元7022,用于判断从当前提取的数据包中获得的关键字段是否与从缓存队列的数据包中获得的关键字段相同,如果是,所述当前提取的数据包与所述缓存队列中的数据包具有相同或者相似的包头,否则,所述当前提取的数据包与所述缓存队列中的数据包不具有相同或者相似的包头。
例如,对于IPv6类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括 IPv6 数据包的包头中的 Version 字段、Traffic Class 字段、Flow Lable 字段、Next Header 字段、Hop Limit 字段、Source Address 字段和 Destination Address 字段。在 RFC3095 的头部压缩协议下,其关键字段包括IPv6数据包的包头中的Version字段、Flow Lable字段、 Next Header 字段、Source Address 字段禾口 Destination Address 字段。对于IPv4类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括IPv4 数据包的包头中的Version字段、IHL字段、Type of Service字段、Flags字段、Fragment Offset 字段、Time to Live 字段、Protocol 字段、Source Address 字段禾口 Destination Address字段。在RFC3095的头部压缩协议下,其关键字段包括IPv4数据包的包头中的 Version 字段、Don’ t Fragment flag 字段、Protocol 字段、Source Address 字段禾口 Destination Address 字段。对于UDP类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括UDP数据包的包头中的Source Port字段和Destination Port字段。在RFC3095的头部压缩协议下,其关键字段包括UDP数据包的包头中的Source Port字段和Destination Port字段。对于RTP类型的数据包,在RFC3095的头部压缩协议下,其关键字段包括RTP数据包的包头中的Padding字段、Extension字段和SSRC字段。对于TCP类型的数据包,在RFC2507的头部压缩协议下,其关键字段包括TCP数据包的包头中的Source Port字段、Destination Port字段禾口 Offset字段。需要说明的是,本申请实施例并不限定关键字段的具体形式,除上述规定的关键字段可以用于包头的相同性或者相似性的识别之外,还可以利用其它关键字段对包头的相同性或者相似性进行识别。还需要说明的是,本申请实施例中带有重新排序功能的数据发送装置应用非常灵活,对于数据卡终端可以部署在PC侧或者终端侧;对于智能手机,可以部署在应用处理器一侧或者Modem —侧;对于一般的Feature Phone手机,也可以应用在手机终端侧,甚至可以部署在无线网络接入节点上。最为一个典型的实施方式,对于无线数据卡终端来说,本申请实施例中的数据发送装置可以位于PC侧的网卡驱动内部。请参阅图8,其为本申请的数据发送的装置的一个应用场景示意图。由上述实施例可以看出,在发送数据包之前,将待发送数据包队列中的数据包重新进行排序,使具有相同或者相似包头的数据包排在一起并缓存在缓存队列中,最后,发送缓存队列中的数据包。由于具有相同或者相似包头的数据包排在一起,因此,在缓存队列中构成了一个个的符合包头压缩条件的数据包流。避免了发送端频繁发送未经过包头压缩的数据包,从而提高了信道的传输效率。需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体 (Random Access Memory, RAM)等。以上对本发明所提供的一种协商报文的重传方法和系统进行了详细介绍,本文中
9应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种数据发送方法,其特征在于,包括依次从待发送的数据包队列中提取数据包;识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中, 在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;如果是,将所述当前提取的数据包存储在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送所述缓存队列中的数据包。
2.根据权利要求1所述的方法,其特征在于,所述识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头包括从所述当前提取的数据包的包头中和所述缓存队列的数据包的包头中分别提取关键字段;判断从当前提取的数据包中获得的关键字段是否与从缓存队列的数据包中获得的关键字段相同,如果是,所述当前提取的数据包与所述缓存队列中的数据包具有相同或者相似的包头,否则,所述当前提取的数据包与所述缓存队列中的数据包不具有相同或者相似的包头。
3.根据权利要求2所述的方法,其特征在于,所述关键字段包括IPv6数据包的包头中的 Version 字段、Traffic Class 字段、Flow Lable 字段、Next Header 字段、Hop Limit 字段、Source Address 字段禾口 Destination Address 字段。
4.根据权利要求2所述的方法,其特征在于,所述关键字段包括IPv6数据包的包头中的Version字段、Flow Lable 字段、Next Header字段、Source Address 字段禾口Destination Address 字段。
5.根据权利要求2所述的方法,其特征在于,所述关键字段包括IPv4数据包的包头中的 Version _ 、 IHL _ 、Type of ServiceFlagsFragment Offset Time to Live 字段、Protocol 字段、Source Address 字段禾口 Destination Address 字段。
6.根据权利要求2所述的方法,其特征在于,所述关键字段包括IPv4数据包的包头中的 Version 字段、Don' t Fragment flag 字段、Protocol 字段、Source Address 字段禾口 Destination Address 字段。
7.根据权利要求2所述的方法,其特征在于,所述关键字段包括UDP数据包的包头中的 Source Port 字段禾口 Destination Port 字段。
8.根据权利要求2所述的方法,其特征在于,所述关键字段包括RTP数据包的包头中的 Padding 字段、Extension 字段和 SSRC 字段。
9.根据权利要求2所述的方法,其特征在于,所述关键字段包括TCP数据包的包头中的 Source Port 字段、Destination Port 字段禾口 Offset 字段。
10.一种数据发送的装置,其特征在于,包括提取单元,用于依次从待发送的数据包队列中提取数据包识别单元,用于识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;存储单元,用于当所述识别单元的结果为是时,将所述当前提取的数据包缓存在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送单元,用于发送所述缓存队列中的数据包。
11.根据权利要求10所述的装置,其特征在于,所述识别单元包括 关键字段提取子单元,用于从所述当前提取的数据包的包头中和所述缓存队列的数据包的包头中分别提取关键字段;关键字段判断子单元,用于判断从当前提取的数据包中获得的关键字段是否与从缓存队列的数据包中获得的关键字段相同,如果是,所述当前提取的数据包与所述缓存队列中的数据包具有相同或者相似的包头,否则,所述当前提取的数据包与所述缓存队列中的数据包不具有相同或者相似的包头。
全文摘要
本发明实施例公开了一种数据发送的方法和装置。其中,所述方法包括依次从待发送的数据包队列中提取数据包;识别当前提取的数据包是否与缓存队列中的数据包具有相同或者相似的包头,其中,在所述缓存队列中保存有在当前提取的数据包之前提取的所有数据包;如果是,将所述当前提取的数据包存储在所述缓存队列中最后一个符合条件的数据包后,否则,将所述当前提取的数据包存储在所述缓存队列中最后一个数据包后;发送所述缓存队列中的数据包。根据本申请实施例,可以提高信道的传输效率。
文档编号H04L12/56GK102469011SQ20101054142
公开日2012年5月23日 申请日期2010年11月11日 优先权日2010年11月11日
发明者陆智慧 申请人:联芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1