[发明专利]一种分发传输TCP数据包的方法及装置无效
| 申请号: | 200810102559.X | 申请日: | 2008-03-24 |
| 公开(公告)号: | CN101547192A | 公开(公告)日: | 2009-09-30 |
| 发明(设计)人: | 李孟喜;张剑锋;邓伟;于晓伟 | 申请(专利权)人: | 大唐移动通信设备有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/56 |
| 代理公司: | 北京银龙知识产权代理有限公司 | 代理人: | 许 静 |
| 地址: | 100083*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 分发 传输 tcp 数据包 方法 装置 | ||
技术领域
本发明涉及数字信息传输技术,尤其涉及一种分发传输TCP(TransmissionControl Protocol,传输控制协议)数据包的方法及装置。
背景技术
在通信设备的两个端点之间采用TCP协议通信时,可根据数据流的传送方向,将通信两端分别称为TCP发送端和TCP接收端,其中TCP发送端和TCP接收端之间需要建立起一条或多条TCP链接才能传输数据,而每条TCP链接由收发两端的TCP端口号和收发两端的IP(Internet Protocol,国际互联网络通讯协定)地址唯一确定。
在TCP链接上,每个TCP数据包的头部都携带有一个SN(Serial Number,序列号),而且该TCP数据包中的SN是由TCP发送端填写。并且TCP发送端对每条TCP链接都维持一个SN值,而SN的起始数值由TCP发送端在TCP链接建立时随机生成的。
TCP接收端在建立一条链接时可获知TCP发送端为该链接生成的起始SN,并将其记录为该条TCP链接上希望接收到的下一个数据包的序列号(EXP_SN);TCP接收端对每条TCP链接都维持一个EXP_SN值。在一条TCP链接上,TCP接收端每接收到一个TCP数据包时,首先判断数据包头中的SN是否等于当前的EXP_SN。
如果SN与当前的EXP_SN相同,那么TCP协议栈则认为接收到正确的TCP数据包,将该TCP数据包递交给高层应用,并把当前的EXP_SN加上包内的数据长度,作为新的EXP_SN值。
如果SN与当前的EXP_SN不相同,则可能发生TCP数据包的丢失或者乱序,此时,不更新当前的EXP_SN,TCP接收端将立即向TCP发送端返回一个DupACK,并携带EXP_SN。
针对TCP接收端返回DupACK的情况,TCP协议规定:TCP发送端如果连续三次接收到携带有相同EXP_SN的DupACK,那么认为序号为EXP_SN的TCP数据包已经丢失,将重新发送该TCP数据包。
可见,在一条TCP链接上,TCP接收端会因数据包的乱序反馈DupACK,进而可能导致TCP发送端对数据包的重发,这会降低数据传输效率。因此,为了保证一条TCP链接上的数据传输效率,应该努力保证其上的TCP数据包有序传输。
在现有的在TCP数据包传输过程中,TCP数据包从TCP发送端到TCP接收端传输时,可能需要经过多个数据处理节点。此时可将TCP发送端定义为源节点,负责TCP数据包的生成和发送;将TCP接收端定义为目的节点,负责TCP数据包的接收。然而除源节点和目的节点外,TCP数据包还可能会经过一些中间节点,这些中间节点负责TCP数据包的转发以及分发。一个TCP数据包从节点A传输至节点B,如果不经过中间节点,那么称节点B是节点A的后节点,节点A是节点B的前节点。当某一节点具有多个后节点时,可将该节点称为分流节点。
参见图1,在该图中节点0和节点1分别有两个后节点,节点4和节点5分别有两个前节点。则此时节点0和节点1是分流节点。并且在该两个节点之间TCP数据包在传输时可能使用的每条通道可称作这两个节点之间的物理链路。在图1中,节点0和节点5之间有3条物理链路;而节点2和节点5之间有1条物理链路。
如果在分流节点上对TCP数据包不做特殊的处理,而把TCP数据包随意通过分流节点与其多个后节点间的物理链路进行发送,那么由于各条物理链路上的传输时延和抖动不同,会增加目的节点接收到的数据包顺序与分流节点发送的数据包顺序不一致,即发生TCP数据包传输乱序。
如图2所示,可能会出现如下情况:TCP接收端针对一条TCP链接的当前EXP_SN是sn1,此时在分流节点中,这条TCP链接上存在四个连续的TCP数据包等待发送,序列号分别为sn1、sn2、sn3和sn4,其中sn2、sn3和sn4的顺序在sn1之后。分流节点把序号为sn1的数据包从分流节点与其后节点1间的物理链路上发送出去,把序号sn2、sn3和sn4的数据包从分流节点与其他后节点间的物理链路上发送出去;由于分流节点与其后节点1间的物理链路的时延较大,而其他物理链路的时延较小,导致目的节点(TCP接收端)在没有接收到序号为sn1的数据包时,先接收到了序号sn2、sn3和sn4的数据包。此时,TCP接收端的协议栈会连续发送三次针对sn1的DupACK。这些DupACK会导致TCP发送端必须对sn1的数据包进行重传,从而降低了这条TCP链接上的数据传输效率。
在实现本发明的过程中,发现现有技术中至少存在如下问题:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐移动通信设备有限公司,未经大唐移动通信设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810102559.X/2.html,转载请声明来源钻瓜专利网。





