终端的上行数据传输方法及终端的制作方法

文档序号:7763668阅读:322来源:国知局
专利名称:终端的上行数据传输方法及终端的制作方法
技术领域
本发明涉及通信领域,特别涉及通信领域中的数据传输技术。
背景技术
在无线通信系统中,移动终端和网络设备作为底层的承载,可以为应用程序提供传输链路,来完成数据的传输。对于使用传输控制协议TCP/网间互联协议IP协议的应用程序,终端和无线设备之间传递的数据就是IP包,如图1所示,终端(MQ本身包括非接入层、接入层和物理层,TCP/IP以及应用层则属于应用程序的范畴,应用程序可以位于PC(个人计算机)侧。文件传输协议(File Transfer Protocol,简称“FTP”)就是应用程序中的一种, 在终端和网络之间可以进行两个方向的数据传输,终端向网络传输数据称为上行数据传输,网络向终端方向的数据传输称为下行数据传输。进行上行数据传输的时候,TCP/IP数据包经过终端的非接入层、接入层和物理层,通过无线信道到达基站子系统(BSS),后来又经过有线网络到达服务通用分组无线业务支持节点(Serving GPRS Support Node,简称 “SGSN”),再经过互联网,最终到达第三方应用程序服务器(APP server)。下行数据传输则是相反的过程。对于无线网络来说,主要的区别在于图1中MS和BSS之间的无线信道,这是一个资源共享的信道,每时每刻分配给某个终端的上行和下行资源都可能是变化的,或者大一些,或者小一些,这就有可能造成在这个空中接口上出现数据传输中的瓶颈。目前,在进行上行数据传输时,在终端的协议层完全是透明的,也就是说,终端根据收到的TCP/IP报文的先后顺序,进行拆包、组包的操作,然后存放于缓存队列,如果得到物理层的获得上行无线资源的通知,表明可以发送数据,则从缓存队列中取出数据,经过编码、调制过程,然后通过无线链路发送到网络一侧,在网络一侧,经过有线网络传输,最终到达第三方应用程序服务器,如图2所示。在下行数据传输的时候,终端的协议层对于接收到的数据也完全是透明的,即终端接收到来自空口的消息,经过解调、解码、拆包、组包的过程,然后依照接收到这些数据块的顺序递交给终端的应用层。而对终端一侧的应用程序和网络一侧的应用程序来说,将根据拥塞窗口和通告窗口来进行流量控制。其中拥塞窗口是发送方用来进行流量控制的,通告窗口则是接收方用来进行流量控制的。发送方根据拥塞窗口来决定是否需要继续发送TCP包给对端,接收方则通过通告窗口来告诉发送方是否可以继续接收TCP包,这是TCP/IP协议所描述的。接收方是否回复确认信息,一方面取决于收到的TCP报文段的个数,另一方面取决于接收方的周期定时器,这两个条件符合其中一个,就会触发确认信息的传递。以拥塞窗口和通告窗口都是4个报文段的大小为例拥塞窗口 = 5840字节,通告窗口 = 5840字节,报文段长度(LEN) = 1460字节正常情况下,接收方收到一个包或者两个包就会通过ACK回复确认信息。在只有一个TCP连接的情况下,这个过程如图3所示。可以看到,发送方可以连续发送4个TCP包, 会到达拥塞状态,窗口不再移动。在发送过程中又收到了来自对端的确认,因此发送窗口被移动,又可以继续发送。如果整个发送过程很顺利,空口没有出现差错和掉包,那么seq(报文序号)=4840的TCP包就会在时间点3传送到网络,在这个点上,网络收到了 5个完整的TCP包。但是,由于TCP/IP位于PC侧,TCP报文需要经过NAS层(非接入层)、AS层(接入层),然后通过无线接口发送给网络。而上行资源并不是每时每刻都是充分的,在这种情况下,TCP包虽然通过TCP协议发给了终端,但是可能因为终端在等待上行资源,而缓存在 NAS层或者AS层,在没有重传的情况下,现有方案也不会有什么问题,从应用层看到的数据传输速率是较为稳定的,无线资源是被充分利用的。但是如果无线信道质量较差或者发生了重选,就会发生TCP包重传,现有方案下就会出现降低效率的情况。举例说明,如图4所示,seq = 1460的TCP包在第一次发送的时候在无线接口丢失了,网络侧回复了 ACK要求终端侧重新发送,因为终端的发送窗口还比较大,seq = 2920 和seq = 3380的TCP包也已经产生了,但是因为上行资源的原因缓存在终端侧没有发送出去,在PC侧收到了两次要求重发seq = 1460的ACK之后,产生了重传的seq = 1460的TCP 包,即使在重传的seq = 1460的包发送到终端侧的时候,seq = 2920和seq = 3380的TCP 包依然没有发送出去。在现有方案下,即使碰到这种情况,终端依然按照从PC侧收到的TCP包的顺序来发送TCP包,这样一方面造成网络接收侧由于迟迟收不到连续序号的TCP包,就会发送重复的ACK要求终端重发丢失的数据,而终端在收到这些ACK之后,又需要产生新的重传TCP数据包,如图4中虚线所示的那样,这就加大了空口的负载;另一方面,一些应用程序如果在一定时间内收不到连续序号的TCP包,就会认为接收失败,需要发起新的应用过程来重新进行数据传输,之前发送的数据就相当于没有发送,占用过的无线资源就被浪费了。因此在现有方案下,由于整个网络的TCP数据传输经过了终端和无线子系统之间的通信过程,使得TCP数据传输在这个环节上出现了瓶颈,于是整个网络的TCP数据传输效率就降低了。

发明内容
本发明的目的在于提供一种终端的上行数据传输方法及终端,以提高无线资源利用率和系统效率。为解决上述技术问题,本发明的实施方式提供了一种终端的上行数据传输方法, 包含以下步骤将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较;如果所述缓存队列中存在报文序号大于所述待发送的TCP数据包的报文序号的 TCP包,则将所述待发送的TCP数据包置于该TCP包之前;所述终端在被允许发送上行数据时,从所述缓存队列中依次获取TCP包,并将获取的TCP包重组为IP包后进行发送。本发明的实施方式还提供了一种终端,包含
比较模块,用于将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较;序号调整模块,用于根据所述比较模块的比较结果,在所述缓存队列中存在报文序号大于所述待发送的TCP数据包的报文序号的TCP包时,将所述待发送的TCP数据包置于该TCP包之前;发送模块,用于在被允许发送上行数据时,从所述缓存队列中依次获取TCP包,并将获取的TCP包重组为IP包后进行发送。本发明实施方式相对于现有技术而言,通过比较待发送的TCP数据包的报文序号和缓存队列中的TCP包的报文序号,并对待发送的TCP数据包的位置调整,使得在缓存队列中,位于待发送的TCP数据包之前的TCP包的报文序号,均小于该待发送的TCP数据包的报文序号。由于将来自上层应用的TCP数据包根据报文序号在缓存队列中进行了重新排列, 按照报文序号的先后顺序发送出去,而不管是否是重传的数据包或者新的数据包,使得接收端能及时收到重传的数据包,不会有释放TCP连接的过程。也就是说,当TCP/IP协议运行在无线网络上的时候,可以有效提高TCP/IP协议的运行效率,从而有效的提高了无线资源的利用率,有利于整个系统资源的合理使用。另外,如果缓存队列中存在报文序号与待发送的TCP数据包的报文序号相同的 TCP包,则终端删除待发送的TCP数据包。通过删除冗余的TCP包,可节省传输资源,进一步提高无线资源的利用率。另外,在将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较之前,需要先判断来自上层应用的TCP包是否为TCP数据包,如果是TCP数据包则进入报文序号比较的步骤;如果不是TCP数据包,则将来自上层应用的TCP包排列在缓存队列的尾部。由于现有技术中无线资源的浪费主要是因TCP数据包的重传导致,因此本发明的技术方案仅针对TCP数据包进行位置调整,对于单纯的TCP控制报文,仍按现有技术处理, 排列在缓存队列的尾部,从而能与现有技术更好地兼容。另外,通过对TCP包的包头中包含的A比特和该TCP包的数据域部分长度进行检测判断TCP包是否为TCP数据包,简单易行,方便实施。


图1是根据现有技术中的通过无线终端进行数据传输的协议结构示意图;图2是根据现有技术中的终端传输上行数据的流程示意图;图3是根据现有技术中数据发送的TCP消息序列示意图;图4是根据现有技术中存在TCP丢失的消息序列示意图;图5是根据本发明第一实施方式的终端的上行数据传输方法流程图;图6是根据本发明第一实施方式中的TCP header的结构示意图;图7是根据本发明第一实施方式中的IP header的结构示意图;图8是根据本发明第一实施方式中的判断TCP/IP包是否为单纯的ACK控制包的流程图;图9是根据本发明第一实施方式中的TCP消息序列示意图;图10是根据本发明第一实施方式的终端的上行数据传输结构示意图11是根据本发明第三实施方式的终端结构示意图。
具体实施例方式本发明的第一实施方式涉及一种终端的上行数据传输方法。具体流程如图5所
7J\ ο在步骤501中,终端在收到来自上层应用的TCP包后,将该TCP包定为目标TCP包。 也就是说,终端在收到来自PC侧的TCP包后,将该来自PC侧的TCP包作为目标TCP包。接着,在步骤502中,终端判断该目标TCP包是否为TCP数据包。具体地说,终端通过解析目标TCP包,检测包头中包含的A比特和目标TCP包的数据域部分长度,判断该目标TCP包是否为TCP数据包,如果判定不是TCP数据包,则进入步骤503 ;如果判定是TCP数据包,则进入步骤504。本领域技术人员可以理解,TCP包由header (包头)和数据构成。TCPheader由不少于5个字节构成,TCP包的header的结构如图6所示。其中的序号表示数据部分第一个字节的序列号,即该TCP包的报文序号,头长度表示以32比特为单位的TCP header的长度,A是一个比特,为“ 1”表示该TCP包包含一个ACK报文,TCP包的header中各组成部分与现有协议相同,在此不再赘述。IP包同样由header部分和数据内容部分两部分构成,其中数据内容部分包括TCP 包,IP header由至少5个字节构成,IP包的header的结构如图7所示。其中,总长表示以字节为单位的IP包的总长度,头标长表示以32比特为单位的IP header的长度。IP包的 header中各组成部分与现有协议相同,在此不再赘述。在步骤502中,如果通过对目标TCP包的解析,检测到TCP包的包头中包含的A比特被置为1,并且目标TCP包的数据域部分长度为0,则判定该目标TCP包为单纯的TCP控制包,即不是TCP数据包,如图8所示。图8中的数据域部分长度(data_Len)是否为0,通过TCP header部分和IP header部分的几个参数相减得到,如Ip_header_Len = IP header 头t示长氺4 ;Ip_total_Len = IP header 总长;Tcp_header_Len = TCP header 头长度氺4 ;data_Len = Ip_total_Len-Ip_header_Len-Tcp_header_Len ;如果判定不是TCP数据包,则在步骤503中,将该目标TCP包排列在缓存队列的尾部,回到步骤501。也就是说,如果在步骤502中判定目标TCP包是一个单纯的TCP控制包, 而非TCP数据包,则就直接透传,不做处理。通过对TCP包的包头中包含的A比特和该TCP 包的数据域部分长度进行检测判断TCP包是否为TCP数据包,简单易行,方便实施。如果判定是TCP数据包,则在步骤504中,获取目标TCP包(即待发送的TCP数据包)的报文序号。通过上述对TCP包的header的结构介绍,不难发现,通过解析TCP header,根据TCP header中的“序号”字段即可轻易获得目标TCP包的报文序号。需要说明的是,通过对TCP header和IP header的解析,还可获得socket对,即源端口,源IP地址,目的端口,目的IP地址的组合。针对同一个TCP连接而言,具有相同的 socket对。在本实施方式中,都是针对同一个TCP连接而言的。接着,在步骤505中,将缓存队列中开头的TCP数据包作为对比TCP包。
接着,在步骤506中,通过比较目标TCP包和对比TCP包的报文序号,判断目标TCP 包和对比TCP包的报文序号是否相同,如果相同,则进入步骤507 ;如果不相同,则进入步骤 508。在步骤507中,终端删除目标TCP包(也可以理解为丢弃该目标TCP包)。由于当目标TCP包的报文序号与缓存队列中已有的TCP包的报文序号相同时,说明目标TCP包为冗余的TCP包,因此通过删除冗余的TCP包,可节省传输资源,进一步提高无线资源的利用率。在步骤508中,通过比较目标TCP包和对比TCP包的报文序号,判断目标TCP包的报文序号,是否比对比TCP包的报文序号大。如果判定目标TCP包的报文序号,比对比TCP 包的报文序号大,则进入步骤509,将缓存队列中的下一个TCP包作为对比TCP包,并回到步骤506 ;如果判定目标TCP包的报文序号,比对比TCP包的报文序号小,则进入步骤510。在步骤510中,终端将目标TCP包放在对比TCP包之前。也就是说,在步骤505至步骤510中,终端从缓存队列的头部开始找起(称之为对比TCP包),如果报文序号相同, 那就说明目标TCP包是多余的,需要丢弃,如果找到第一个序号大于目标TCP包的对比TCP 包,就把目标TCP放在对比TCP包之前,使得在缓存队列中,位于目标TCP包之前的TCP包的报文序号,均小于目标TCP数据包的报文序号。接着,在步骤511中,终端判断当前是否被允许发送数据。具体地说,终端根据物理层收到的通知,获知被允许发送上行数据的时间。如果当前允许发送上行数据,则进入步骤512;如果不允许发送上行数据,则等待来自应用层的新的数据的到来,在收到来自应用层的新的TCP包后,回到步骤501。在步骤512中,终端从缓存队列中依次取出TCP包,经过拆包、组包和编码调制过程,重组为IP包发送到空口。不难发现,由于将来自上层应用的TCP数据包根据报文序号在缓存队列中进行了重新排列,按照报文序号的先后顺序发送出去,而不管是否是重传的数据包或者新的数据包,使得接收端能及时收到重传的数据包,不会有释放TCP连接的过程。如图9所示,在消息序列中,在时间点1网络就收到了来自终端的重传的SEQ = 1460的TCP包,比原先需要在时间点3才能收到提前了不少。如果原先在时间点2,网络的定时器就要超时了,会引起 TCP的重新建立,而现在,因为在时间点1就收到了重传的数据包,不会有释放TCP连接的过程,从而提高了无线资源的利用率。而对于虚线所示的重传包,由于是冗余的数据包将被丢弃。由此可见,当TCP/IP协议运行在无线网络上的时候,可以有效提高TCP/IP协议的运行效率,从而有效的提高了无线资源的利用率,有利于整个系统资源的合理使用。而且,对终端而言,仅增加了对缓存队列中TCP包的重排序过程(该过程可通过硬件或者软件的方式实现),如图10所示,使得本实施方式具有较强的可行性。本发明的第二实施方式涉及一种终端的上行数据传输方法。第二实施方式与第一实施方式大致相同,主要区别之处在于在第一实施方式中,来自应用层的TCP包都是针对同一个TCP连接的,具有相同的socket对。而在本发明第二实施方式中,来自应用层的TCP 包可能是针对不同TCP连接的。因此,在本实施方式中,对每一个TCP连接,都需要进行如图5所示的流程。需要说明的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。本发明第三实施方式涉及一种终端,如图11所示,包含比较模块,用于将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较。比较模块通过解析待发送的TCP数据包的包头,得到待发送的TCP数据包的报文序号。序号调整模块,用于根据比较模块的比较结果,在缓存队列中存在报文序号大于待发送的TCP数据包的报文序号的TCP包时,将待发送的TCP数据包置于该TCP包之前。序号调整模块还用于在缓存队列中存在报文序号与待发送的TCP数据包的报文序号相同的 TCP包时,删除待发送的TCP数据包。发送模块,用于在被允许发送上行数据时,从缓存队列中依次获取TCP包,并将获取的TCP包重组为IP包后进行发送。其中,发送模块根据物理层收到的通知,获知被允许发送上行数据的时间。判断模块,用于判断来自上层应用的TCP包是否为TCP数据包,在判定为是TCP数据包时,指示比较模块进行上述比较;在判定不是TCP数据包时,将来自上层应用的TCP包排列在缓存队列的尾部。该判断模块包含以下子模块检测子模块,用于检测来自上层应用的TCP包的包头中包含的A比特和来自上层应用的TCP包的数据域部分长度;结果判定子模块,用于在检测子模块检测到A比特被置为1,并且数据域部分长度为O时,判定来自上层应用的TCP包不是TCP数据包,在检测子模块检测到A比特未被置为 1,或者数据域部分长度不为0时,判定来自上层应用的TCP包是TCP数据包。不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单兀。本发明的第四实施方式涉及一种终端。第四实施方式与第三实施方式大致相同, 主要区别之处在于在第三实施方式中,来自应用层的TCP包都是针对同一个TCP连接的, 具有相同的socket对。而在本发明第四实施方式中,来自应用层的TCP包可能是针对不同 TCP连接的。因此,在本实施方式中,判断模块、比较模块、序号调整模块和发送模块需要针对每一个TCP连接,都需要执行第三实施方式中所述的功能。上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
权利要求
1.一种终端的上行数据传输方法,其特征在于,包含以下步骤将待发送的传输控制协议TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较;如果所述缓存队列中存在报文序号大于所述待发送的TCP数据包的报文序号的TCP 包,则将所述待发送的TCP数据包置于该TCP包之前;所述终端在被允许发送上行数据时,从所述缓存队列中依次获取TCP包,并将获取的 TCP包重组为网间互联协议IP包后进行发送。
2.根据权利要求1所述的终端的上行数据传输方法,其特征在于,所述终端通过解析所述待发送的TCP数据包的包头,得到所述待发送的TCP数据包的报文序号。
3.根据权利要求1所述的终端的上行数据传输方法,其特征在于,在将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较之后,还包含以下步骤如果所述缓存队列中存在报文序号与所述待发送的TCP数据包的报文序号相同的TCP 包,则所述终端删除所述待发送的TCP数据包。
4.根据权利要求1所述的终端的上行数据传输方法,其特征在于,在将待发送的TCP数据包的报文序号,与缓存队列中的TCP包的报文序号进行比较之前,还包含以下步骤判断来自上层应用的TCP包是否为TCP数据包,如果是TCP数据包则进入所述比较的步骤;如果不是TCP数据包,则将所述来自上层应用的TCP包排列在所述缓存队列的尾部。
5.根据权利要求4所述的终端的上行数据传输方法,其特征在于,所述终端通过以下方式判断来自上层应用的TCP包是否为TCP数据包检测所述来自上层应用的TCP包的包头中包含的A比特和所述来自上层应用的TCP包的数据域部分长度;如果所述A比特被置为1,并且所述数据域部分长度为0,则判定所述来自上层应用的 TCP包不是TCP数据包;如果所述A比特未被置为1,或者所述数据域部分长度不为0,则判定所述来自上层应用的TCP包是TCP数据包。
6.根据权利要求1至5中任一项所述的终端的上行数据传输方法,其特征在于,所述终端根据物理层收到的通知,获知所述被允许发送上行数据的时间。
7.—种终端,其特征在于,包含比较模块,用于将待发送的传输控制协议TCP数据包的报文序号,与缓存队列中的TCP 包的报文序号进行比较;序号调整模块,用于根据所述比较模块的比较结果,在所述缓存队列中存在报文序号大于所述待发送的TCP数据包的报文序号的TCP包时,将所述待发送的TCP数据包置于该 TCP包之前;发送模块,用于在被允许发送上行数据时,从所述缓存队列中依次获取TCP包,并将获取的TCP包重组为网间互联协议IP包后进行发送。
8.根据权利要求7所述的终端,其特征在于,所述比较模块通过解析所述待发送的TCP 数据包的包头,得到所述待发送的TCP数据包的报文序号。
9.根据权利要求7所述的终端,其特征在于,所述序号调整模块还用于在所述缓存队列中存在报文序号与所述待发送的TCP数据包的报文序号相同的TCP包时,删除所述待发送的TCP数据包。
10.根据权利要求7所述的终端,其特征在于,所述终端还包含判断模块,用于判断来自上层应用的TCP包是否为TCP数据包,在判定为是TCP数据包时,指示所述比较模块进行所述比较;在判定不是TCP数据包时,将所述来自上层应用的 TCP包排列在所述缓存队列的尾部。
11.根据权利要求10所述的终端,其特征在于,所述判断模块包含以下子模块检测子模块,用于检测所述来自上层应用的TCP包的包头中包含的A比特和所述来自上层应用的TCP包的数据域部分长度;结果判定子模块,用于在所述检测子模块检测到所述A比特被置为1,并且所述数据域部分长度为0时,判定所述来自上层应用的TCP包不是TCP数据包,在所述检测子模块检测到所述A比特未被置为1,或者所述数据域部分长度不为0时,判定所述来自上层应用的 TCP包是TCP数据包。
12.根据权利要求7至11中任一项所述的终端,其特征在于,所述发送模块根据物理层收到的通知,获知所述被允许发送上行数据的时间。
全文摘要
本发明涉及通信领域,公开了一种终端的上行数据传输方法及终端。本发明中,比较待发送的TCP数据包的报文序号和缓存队列中的TCP包的报文序号,并通过对待发送的TCP数据包的位置调整,使得在缓存队列中,位于待发送的TCP数据包之前的TCP包的报文序号,均小于该待发送的TCP数据包的报文序号。使得接收端能及时收到重传的数据包,不会有释放TCP连接的过程,从而有效的提高了无线资源的利用率,有利于整个系统资源的合理使用。
文档编号H04W80/06GK102457986SQ20101052560
公开日2012年5月16日 申请日期2010年10月29日 优先权日2010年10月29日
发明者李引新, 陈加明 申请人:联芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1