发明内容
本发明实施例提供了一种基于TCP协议传输数据包的方法,所述技术方案如下:
一种基于TCP协议传输数据包的方法,所述方法包括:
根据所述原数据包的属性,确定与接收端建立的TCP连接的数量;
与所述接收端建立相应数量的TCP连接,并利用建立的每个所述TCP连接,将所述原数据包发送到接收端。
所述原数据包的属性为数据包长度时,所述根据所述原数据包的属性确定与接收端建立的TCP连接的数量,包括:
当所述原数据包的长度大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;
当所述原数据包的长度小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
所述根据所述原数据包的属性确定与接收端建立的TCP连接的数量,包括:
根据预设传输策略中为数据包各项属性分配的权值,计算所述原数据包的传输加权值。
当所述原数据包的传输加权值大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;
当所述原数据包的传输加权值小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
所述第一数量为固定值;或,所述第一数量根据所述原数据包的长度按照预设的算法计算得到;所述第一数量大于100。
所述利用建立的每个所述TCP连接,将所述原数据包发送到接收端,包括:
当所述原数据包的长度大于预设的阈值时,将所述原数据包拆分成多个小数据包,拆分的所述小数据包的数量大于所述第一数量;
对拆分的每个所述小数据包进行TCP协议的封装;
利用建立的每个所述TCP连接,将封装后的每个所述小数据包发送到接收端。
所述利用建立的每个所述TCP连接,将所述原数据包发送到接收端之后,还包括:
所述接收端利用每个所述TCP连接,接收每个所述小数据包;
所述接收端对接收到的每个所述小数据包进行数据合并,还原为发送端需要发送的所述原数据包。
本发明实施例还提供了一种基于TCP协议传输数据包的系统,所述系统包括发送端和接收端,所述发送端包括:
获取模块,用于获取需要发送的原数据包的属性;
确定模块,用于根据所述原数据包的长度确定与接收端建立的TCP连接的数量;
发送模块,用于与所述接收端建立相应数量的TCP连接,并利用建立的每个所述TCP连接,将所述原数据包发送到接收端。
所述原数据包的属性为数据包长度时;所述确定模块,具体用于当所述原数据包的长度大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;当所述原数据包的长度小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
所述确定模块,具体用于根据预设传输策略中为数据包各项属性分配的权值,计算所述原数据包的传输加权值;当所述原数据包的传输加权值大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;当所述原数据包的传输加权值小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
所述第一数量为固定值;或,所述第一数量根据所述原数据包的长度按照预设的算法计算得到,所述第一数量大于100。
所述发送模块,具体用于当所述原数据包的长度大于预设的阈值时,将所述原数据包拆分成多个小数据包,拆分的所述小数据包的数量大于所述第一数量;对拆分的每个所述小数据包进行TCP协议的封装;利用建立的每个所述TCP连接,将封装后的每个所述小数据包发送到接收端。
所述接收端包括:
接收模块,用于利用与所述发送端建立的每个所述TCP连接,接收每个所述小数据包;
合并模块,用于对接收到的每个所述小数据包进行数据合并,还原为发送端需要发送的所述原数据包。
本发明实施例在利用TCP协议传输数据包时,根据数据包的属性确定发送端与接收端之间建立的TCP连接的数量,在对大数据包进行传输时,通过对大数据包进行拆分,并建立大量的TCP连接以进行并发传输,提高了大数据包的传输速度。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本发明实施例提供了一种基于TCP协议传输数据包的方法,适用于互联网环境下用户与用户之间、用户与SP(Service Provider,提供互联网服务内容应用服务的提供商)、同一网络运营商的两个IDC之间点对点的数据传输,本发明实施例根据数据包的长度确定发送端与接收端之间建立的TCP连接的数量,在进行大数据包的传输时,将大数据包拆分成多个小数据包,并建立大量的TCP连接对小数据包进行传输,由此提高了大数据包的传输速度。
参见图1,本发明实施例的具体步骤如下:
101:发送端获取需要发送的原数据包的长度。
102:发送端根据步骤101中得到的该原数据包的长度确定与接收端建立的TCP连接的数量。
具体地,为原数据包建立的TCP连接是并发的连接,确定为该原数据包建立TCP连接的数量的方法如下:
当该原数据包的长度大于预设的阈值时,判定该原数据包为大数据包,则确定与接收端建立的TCP连接的数量为第一数量,第一数量大于100。可以从数百个到上千个不等。其中,第一数量可以为固定值,如大于100的固定值,也可以按照预设的算法进行计算,比如可以根据数据包的长度按照预设算法计算建立TCP连接的数量。数据包越大,则建立的TCP连接的数量越多,数据包越小,则建立的TCP连接的数量越少。当该原数据包的长度大于预设的阈值,确定了与接收端建立的TCP连接的数量为第一数量后,则执行103。
当该原数据包的长度小于预设的阈值时,判定该原数据包为普通数据包。按照现有技术中的TCP协议传输数据方式对该原数据包进行传输,确定与接收端建立的TCP连接的数量为第二数量,第二数量较小,通常小于100。此时对数据包进行传输的方法与现有技术相同,不再赘述。
从上述方法可以看出,本发明实施例中,根据数据包的长度信息将发送的原数据包划分为大数据包或普通数据包,对于大数据包就建立数量较多的TCP连接以进行传输,对于普通数据包就建立较少的TCP连接,按照通常的传输方法进行传输。由此在提高了大数据包传输速度的同时,也保证了系统整体的传输效率。
在本实施例中,预设的阈值可以根据网络系统的数据传输能力进行设定,如在网络环境比较好的情况下,可以将阈值设定的较大,如将阈值设置在50MB至100MB之间,在网络环境欠佳的情况下,可以将阈值设定的较小以利于较大数据包的传输,如将阈值设置为10MB。
103:发送端将原数据包拆分成多个小数据包以进行传输。
需要说明的是,发送端将原数据包拆分成的小数据包的数量大于建立的TCP连接的数量。在对原数据包拆分时,通常考虑到带宽利用及网络延时,每个小数据包的长度在2千字节到4千字节之间是比较合适的,对于较大的数据包,如10MB大小的文件,就会拆分成的数千个小包,而建立数百个TCP连接就可以保证文件的快速传输,对于GB级别的大文件(1GB=10亿个字节),拆分成的小数据包的数量就会有数十万个,因此拆分的小数据包的数量会远比需要建立的TCP连接的数量要多。
104:在发送端对拆分的多个小数据包进行TCP协议的封装。
具体地,为了接收端能将拆分的多个小数据包进行合并还原为原数据包,发送端在对拆分的每个小数据包进行封装时,至少需要附加如下信息:原数据包长度信息、小数据包位置信息:即拆分的每个小数据包在原数据包中的起始位置,以及每个小数据包的长度信息。附加的信息及其作用如表1所示:
附加信息 |
附加信息用途 |
原数据包的长度信息 |
接收端根据原数据包的长度创建适合的缓存(内存或磁盘空间),以保存接收到的数据 |
小数据包位置信息 |
接收端接收到小数据包后根据该信息将小数据包填入缓存中的相应位置 |
小数据包的长度信息 |
接收端填入缓存的小数据包的数据长度 |
表1
105:发送端与该接收端建立第一数量的TCP连接,并利用建立的每个该TCP连接,将该原数据包拆分成的多个小数据包发送到接收端。
发送端利用建立的多个TCP连接,将拆分的数据包按照在原数据包中的顺序,循环地放入已建立的多个TCP连接中,利用每个TCP连接将所有的小数据包发送到接收端。每个TCP连接负责将若干个小数据包发送到接收端端。
参见图2为发送端利用建立的多个TCP连接,对所有小数据包进行传输的示意图。
在发送端将所有小数据包发送出去后,相应地,参见图3,在接收端执行的相应操作如下:
301:接收端利用与发送端建立的多个TCP连接,接收发送端发送的小数据包,并根据封装在小数据包中的原数据包的长度信息,建立能够接收原数据包的缓存。
302:接收端根据封装在每个小数据包中的小数据包位置信息,将每个小数据包进行解封装后,写入缓存中的相应位置。
在本步骤中,需要说明的是,由于发送端通过多个TCP连接传输的小数据包,在经过互联网中的多个路由器转发后,小数据包到达接收端的次序是不能保证的,存在乱序的情况,此时接收端需要根据封装在小数据包中的小数据包的位置信息,将小数据包写入缓存相应的正确位置中。以确保在缓存中合并还原为原数据包的正确性。
303:接收端在缓存中对各个解封装后的小数据包进行合并。并不断检查是否所有的小数据包都写入缓存并完成合并,当检查到所有的小数据包都写入缓存并完成了合并时,则说明在缓存中合并还原了发送端需要发送的原数据包。原大数据包的传输结束。
在本步骤中,由于按照小数据包的位置信息,将小数据包写入在缓存的正确位置中,因此当接收端在接收到所有的小数据包并写入了缓存后,就可以正确的在缓存中将所有小数据包合并还原为原数据包了。
参见图4,为接收端接收到所有小数据包后,在缓存中进行合并还原为原数据包的示意图。
本发明实施例在利用TCP协议传输数据包时,根据数据包的长度确定发送端与接收端之间建立的TCP连接的数量,在对大数据包进行传输时,通过对大数据包进行拆分,并建立大量的TCP连接以进行并发传输,提高了大数据包的传输速度。
实施例2
本发明实施例提供了一种基于TCP协议传输数据包的方法,在实施例1的基础上进一步的扩展,根据数据包的各项属性确定发送端与接收端之间建立的TCP连接的数量,并利用这些TCP连接将大数据包拆分成多个小数据包进行传输,进一步提高大数据包的传输效率。
参见图5,本发明实施例的具体步骤如下:
501:发送端按照根据预设的传输策略,获取需要发送的原数据包的属性。
具体的,在本实施例中,可以根据具体的应用场景预设传输策略,预先设定发送端需要获取数据包的哪些属性,如在仅考虑大数据包传输速度的应用场景中,发送端可以只获取原数据包的长度作为依据;而在需要进一步的考虑传输质量的应用场景中时,发送端可以获取原数据包的长度以及服务类型信息作为依据;在更进一步复杂的系统中,发送端获取的数据包的属性还可以包括:数据包长度、数据包的服务类型、数据包的源地址和源端口、IP优先级、是否分片等。
502:根据预设传输策略中为数据包各项属性分配的权值,计算该原数据包的传输加权值。
具体的,数据包的传输加权值就是将数据包各个属性的权值相加得到的加权值。以预设传输策略中仅考虑数据包的长度和服务类型为例进行说明,优选的,可以采用以下方法定义数据包属性的权值:数据包长度在50M-100M时,权值为1,100M-200M时,权值为2,以数据包越大权值越大的原则定义所有长度的数据包属性的权值;同时,服务类型也作为一个重要的参考依据,可以定义视频服务的权值为3,音频服务的权值为2等,由此,可以计算得到提供视频服务的一个150M数据包的传输加权值为5。
通过计算数据包传输加权值以对数据包进行传输,传输系统可以根据具体的应用场景预设传输策略,使得系统在传输大数据包时能更好的满足自身需求,比如,当系统传输的数据包中多以视频服务为主时,则可以相应定义视频服务的权值较大,这样就更倾向于将视频服务的原数据包当大数据包进行处理,使得系统能更有效的传输视频服务的大数据包,从而使得系统在传输数据包时能更有针对性。
503:发送端根据步骤502中得到的该原数据包的传输加权值确定与接收端建立的TCP连接的数量。
具体的,当发送端判断该原数据包的传输加权值大于预设的阈值时,判定该原数据包为大数据包,则确定与接收端建立的TCP连接的数量为第一数量,第一数量大于100。可以从数百个到上千个不等。其中,第一数量可以为固定值,如大于100的固定值,也可以按照预设的算法进行计算,比如可以根据数据包的传输加权值按照预设算法计算建立TCP连接的数量,数据包的传输加权值越大,则建立的TCP连接的数量越多,数据包的传输加权值越小,则建立的TCP连接的数量越少。当该原数据包的传输加权值大于预设的阈值,确定了与接收端建立的TCP连接的数量为第一数量后,则执行504。
当发送端判断该原数据包的传输加权值小于预设的阈值时,判定该原数据包为普通数据包,则按照现有技术中的TCP协议传输数据方式对该原数据包进行传输,确定与接收端建立的TCP连接的数量为第二数量,第二数量较小,通常小于100。此时对数据包进行传输的方法与现有技术相同,不再赘述。
在本实施例中,预设的阈值可以根据网络系统的数据传输能力进行设定,如在网络环境比较好的情况下,可以将阈值设定的较大,以使得传输加权值较大的数据包才当做大数据包。在网络环境欠佳的情况下,可以将阈值设定的较小。
从上述方法可以看出,本发明实施例中,按照预设传输策略,根据数据包的各项属性的加权值将发送的原数据包划分为大数据包或普通数据包以进行传输,对于大数据包就建立数量较多的TCP连接以进行传输,对于普通数据包就建立较少的TCP连接,按照通常的传输方法进行传输。同时,传输系统可以根据具体的需求,预先分配数据包各项属性的权值,在提高了大数据包传输速度的同时,也使得系统传输大数据包更有针对性,进一步提高了系统整体的传输效率。
504-506与103-105方法相同,接收端接收大数据包的方法也与实施例1相同,此处不再赘述。
本发明实施例在利用TCP协议传输数据包时,根据数据包的传输加权值确定发送端与接收端之间建立的TCP连接的数量,在对大数据包进行传输时,通过对大数据包进行拆分,并建立大量的TCP连接以进行并发传输,提高了大数据包的传输效率。
实施例3
本发明提供了一种基于TCP协议传输数据包的系统,在传输大容量的数据包时,采用将大容量数据包拆分成多个小数据包,并建立大量的TCP连接对小数据包进行传输,由此提高了大容量数据包的传输速度。
参见图6,该系统包括发送端601和接收端602,该发送端601包括:
获取模块601a,用于获取需要发送的原数据包的属性;
确定模块601b,用于根据该原数据包的属性确定与接收端建立的TCP连接的数量;
发送模块601c,用于与该接收端602建立相应数量的TCP连接,并利用建立的每个该TCP连接,将该原数据包发送到接收端602。
进一步的,当该原数据包的属性为数据包长度时;该确定模块601b,具体用于当该原数据包的长度大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;当该原数据包的长度小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
当该原数据包的属性为多项内容,如还可以包括:数据包长度、数据包的服务类型、数据包的源地址和源端口、IP优先级、是否分片等时,该确定模块601b,具体用于根据预设传输策略中为数据包各项属性分配的权值,计算该原数据包的传输加权值;当该原数据包的传输加权值大于预设的阈值时,则确定与接收端建立的TCP连接的数量为第一数量;当该原数据包的传输加权值小于预设的阈值时,则确定与接收端建立的TCP连接的数量为第二数量。
具体地,为原数据包建立的TCP连接是并发的连接,当该确定模块601b判定该原数据包为大数据包时,则确定与接收端建立的TCP连接的数量为第一数量,第一数量大于100。可以从数百个到上千个不等。第一数量可以为固定值,如大于100的固定值,也可以按照预设的算法进行计算,比如可以根据数据包的传输加权值按照预设算法计算建立TCP连接的数量,数据包的传输加权值越大,则建立的TCP连接的数量越多,数据包的传输加权值越小,则建立的TCP连接的数量越少。
当该确定模块601b判定该原数据包为普通数据包。则按照现有技术中的TCP协议传输数据方式对该原数据包进行传输,确定与接收端建立的TCP连接的数量为第二数量,第二数量较小,通常小于100。此时对数据包进行传输的方法与现有技术相同,不再赘述。
进一步的,在仅考虑数据包长度的应用场景中,该发送模块601c,具体用于当该原数据包的长度大于预设的阈值时,将该原数据包拆分成多个小数据包,拆分的小数据包的数量大于该第一数量;对拆分的每个该小数据包进行TCP协议的封装;利用建立的每个该TCP连接,将封装后的每个该小数据包发送到接收端。在从传输加权值方面进行考虑的场景中,该发送模块601c,具体用于当该原数据包的传输加权值大于预设的阈值时,将该原数据包拆分成多个小数据包并进行封装和发送。
具体地,在对每个该小数据包进行封装时,在小数据包中添加该原数据包长度信息、该小数据包位置信息,以及该小数据包的长度信息;其中,该小数据包位置信息为该小数据包在原数据包中的起始位置。
该发送模块601c利用建立的每个TCP连接,将每个该小数据包按照在原数据包中的顺序,循环地放入每个该TCP连接中,利用每个该TCP连接将该小数据包发送到接收端602。
在发送端601将所有小数据包发送出去后,需要接收端执行的相应操作,相应的,该接收端602包括:
接收模块602a,用于利用与发送端601建立的每个TCP连接,接收发送端601发送的每个小数据包;
合并模块602b,用于对接收到的每个该小数据包进行数据合并,还原为发送端601需要发送的原数据包。
进一步的,该接收模块602a,具体用于利用每个该TCP连接,接收发送端601发送的该小数据包,并根据封装在该小数据包中的原数据包的长度信息,建立接收该原数据包的缓存;并根据封装在每个该小数据包中的小数据包位置信息,将每个该小数据包进行解封装后写入缓存中的相应位置。
需要说明的是,由于发送端601通过多个TCP连接传输的小数据包,在经过互联网中的多个路由器转发后,小数据包到达接收端602的次序是不能保证的,存在乱序的情况,此时接收端602需要根据封装在小数据包中的小数据包的位置信息,将小数据包写入缓存相应的正确位置中。以确保在缓存中合并还原为的原数据包的正确性。
按照小数据包的位置信息,将小数据包写入在缓存的正确位置中,因此当接收端602在接收到所有的小数据包并写入了缓存后,就可以在缓存中将所有小数据包合并还原为原数据包了。
该合并模块602b,具体用于在端检查到每个该小数据包都接收到并写入缓存中时,在缓存中对每个该小数据包进行合并,还原为原数据包。
本发明实施例在利用TCP协议传输数据包时,根据数据包的属性确定发送端与接收端之间建立的TCP连接的数量,在对大数据包进行传输时,通过对大数据包进行拆分,并建立大量的TCP连接以进行并发传输,提高了大数据包的传输速度。
本发明实施例可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,例如,路由器的硬盘、缓存或光盘中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。