CN103200072A - 一种基于网络的数据传输方法、装置及系统 - Google Patents

一种基于网络的数据传输方法、装置及系统 Download PDF

Info

Publication number
CN103200072A
CN103200072A CN2013101623151A CN201310162315A CN103200072A CN 103200072 A CN103200072 A CN 103200072A CN 2013101623151 A CN2013101623151 A CN 2013101623151A CN 201310162315 A CN201310162315 A CN 201310162315A CN 103200072 A CN103200072 A CN 103200072A
Authority
CN
China
Prior art keywords
time
packet
physical link
data packet
encapsulated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013101623151A
Other languages
English (en)
Other versions
CN103200072B (zh
Inventor
钟国峰
王胜波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JILIN PROVINCE JINGANG COMPUTER NETWORK CO Ltd
Original Assignee
JILIN PROVINCE JINGANG COMPUTER NETWORK CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by JILIN PROVINCE JINGANG COMPUTER NETWORK CO Ltd filed Critical JILIN PROVINCE JINGANG COMPUTER NETWORK CO Ltd
Priority to CN201310162315.1A priority Critical patent/CN103200072B/zh
Publication of CN103200072A publication Critical patent/CN103200072A/zh
Application granted granted Critical
Publication of CN103200072B publication Critical patent/CN103200072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种基于网络的数据传输方法,包括:发送端由第一协议服务器将第一次封装数据包发送至第一虚拟网络设备,第一数据传输服务器从第一虚拟网络设备中读取第一次封装数据包,并对其再次封装,得到第二次封装数据包,为每个第二次封装数据包一一分配物理链路,确定第二次封装数据包的传输链路。接收端由第二数据传输服务器从各条物理链路中读取发送端发送的第二次封装数据包,并对其进行解码还原为原始数据包,然后对原始数据包进行处理。因此发送端通过多条物理链路传输同一个网络连接请求的第二次封装数据包,达到充分利用各个物理链路带宽资源的目的,实现了多条物理链路带宽的合并。

Description

一种基于网络的数据传输方法、装置及系统
技术领域
本申请涉及数据传输领域,特别涉及一种基于网络的数据传输方法、装置及系统。
背景技术
目前,发送端的应用程序向网络发出请求并建立网络连接后,应用程序发送的待发送数据,即网络连接的待发送数据进行传输时的物理链路由路由策略确定。其中,路由策略分为两种,一种为多线路路由策略,另一种为Nth(第几个)路由策略。
在多线路路由策略下,同一个网络连接的待发送数据进行传输时的具体过程为:TCP/IP(传输控制协议/因特网互联协议,Transmission ControlProtocol/Internet Protocol)协议栈在接收到该网络连接的待发送数据后,检测路由表,确定用来传输该网络连接的待发送数据的物理链路;TCP/IP协议栈将数据打包写入物理链路以进行传输,该网络连接的待发送数据进行传输的物理链路确定后,该网络连接的所有待发送数据都通过该物理链路进行传输。从上述过程可以看出,在多线路路由策略下,在同一个网络连接的有效期内,该网络连接的待发送数据的传输链路不会发生改变,从而该网络连接的待发送数据无法通过其它物理链路进行传输。
Nth路由策略根据当前网络连接的数量、可用物理链路的数量以及各个网络连接的建立顺序,来决定不同网络连接的待发送数据包在哪个物理链路中传输。假设有两条物理链路,则第一个网络连接的待发送数据通过第一条物理链路进行传输,第二个网络连接的待发送数据通过第二条物理链路进行传输,第三个网络连接的待发送数据通过第一条物理链路进行传输,……,第n个网络连接的待发送数据通过第n%2(n对2取余)条物理链路进行数据传输,当n%2为0时,选用第二条物理链路作为传输链路。但对于同一个网络连接来说,该网络连接中的待发送数据进行传输的物理链路在确定后,该网络连接的所有待发送数据都通过该物理链路进行传输,因此该网络连接的待发送数据无法通过其它物理链路进行传输。
从上述过程中可以看出,同一个网络连接的待发送数据只能通过一条与该网络连接对应的固定物理链路进行传输,同一个网络连接的待发送数据无法通过其它物理链路进行传输,从而使其它链路的带宽资源得不到利用,浪费了带宽资源。
发明内容
为解决上述技术问题,本申请提供一种基于网络的数据传输方法,以达到充分利用各个物理链路带宽资源,实现多条物理链路带宽的合并的目的,技术方案如下:
一种基于网络的数据传输方法,包括:
在第一数据传输服务器启动时,由第一虚拟网络设备获取本地IP地址;
由第一协议服务器依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
优选的,所述对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端的过程包括:
依据各条物理链路的可用占比,确定当前可用占比最大的物理链路;
其中,所述可用占比为一条物理链路可用带宽在该条物理链路总带宽中所占的比例,所述一条物理链路可用带宽等于该条物理链路总带宽减去该物理链路在单位时间内已发送字节数;
判断所述当前可用占比最大的物理链路的可用占比是否小于预设值;
若是,将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
若否,将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
其中,所述当前可用占比最大的物理链路为当前带宽负载最小的物理链路。
优选的,所述预设值为可以调整的阈值。
优选的,所述由第一协议服务器依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备的过程包括:
依据TCP/IP协议对接收到的待发送数据包进行封装,得到对应的第一次封装数据包,所述第一次封装数据包中携带有目的IP地址;
查找路由表,确定对应所述本地IP地址的第一虚拟网络设备;
判断所述第一次封装数据包的大小是否大于所述第一虚拟网络设备的最大传输单元的大小;
若是,拆分所述第一次封装数据包,将拆分后获得的各个数据包一一发送至所述第一虚拟网络设备;
若否,发送所述第一次封装数据包至所述第一虚拟网络设备。
优选的,所述由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包的过程包括:
第一数据传输服务器读取所述第一虚拟网络设备中的各个所述第一次封装数据包,将每次读取到的第一次封装数据包作为当前待处理数据包,将当前待处理数据包大小和预先设定的报头大小、记录当前待处理数据包接收顺序的小报头大小之和作为当前待处理数据包的虚拟大小;
比较当前待处理数据包的虚拟大小和物理链路的最大传输单元的大小;
在比较结果为当前待处理数据包的虚拟大小大于物理链路的最大传输单元的大小时,对当前待处理数据包进行拆分,并为拆分后得到的各个数据包添加预先设定的报头和记录数据包接收顺序的小报头得到第二次封装数据包,且第二次封装数据包的大小不大于物理链路的最大传输单元的大小;
在比较结果为当前待处理数据包的虚拟大小等于物理链路的最大传输单元的大小,为当前待处理数据包添加预先设定的报头和记录当前待处理数据包接收顺序的小报头得到第二次封装数据包;
在比较结果为当前待处理数据包的虚拟大小小于物理链路的最大传输单元的大小时,缓存当前待处理数据包,并将缓存的当前待处理数据包作为缓存数据包;
判断在预设时间内是否读取到下一个数据包;
若否,为缓存数据包添加预先设定的报头和记录缓存数据包接收顺序的小报头得到第二次封装数据包;
若是,将读取到的下一个数据包作为当前待处理数据包,判断当前待处理数据包的大小、记录当前待处理数据包接收顺序的小报头的大小、缓存数据包的大小、记录缓存数据包接收顺序的小报头的大小以及预先设定的报头的大小之和是否大于物理链路的最大传输单元的大小;
若是,为缓存数据包添加预先设定的报头和记录缓存数据包接收顺序的报头得到第二次封装数据包;
若否,合并缓存数据包和当前待处理数据包,并为合并后得到的数据包添加预先设定的报头得到第二次封装数据包;
其中,所述预先设定的报头至少包括来源标记、目标标记、包序列号、包原始信息标记和辅助管理标记。
一种发送端,包括:
第一虚拟网络设备,用于在第一数据传输服务器启动时,获取本地IP地址,并存储第一协议服务器发送的第一次封装数据包;
第一协议服务器,用于依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
第一数据传输服务器,用于从所述第一虚拟网络设备读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
优选的,所述第一数据传输服务器包括:
处理单元,用于依据各条物理链路的可用占比,确定当前可用占比最大的物理链路;
判断单元,用于判断所述处理单元确定的物理链路的可用占比是否小于预设值;
若是,触发第一分配单元;
若否,触发第二分配单元;
第一分配单元,用于将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
第二分配单元,用于将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
一种基于网络的数据传输方法,包括:
由第二数据传输服务器从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
由第二协议服务器依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,处理所述原始数据包;
若否,丢弃所述原始数据包。
一种接收端,包括:
第二数据传输服务器,用于从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
第二虚拟网络设备,用于存储所述第二数据传输服务器发送的原始数据包;
第二协议服务器,用于依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,触发处理器;
若否,由第二协议服务器丢弃所述原始数据包;
处理器,用于处理所述原始数据包。
一种基于网络的数据传输系统,包括:
如权利要求6~7任意一项的发送端和如权利要求9的接收端,其中:
所述第一虚拟网络设备,用于在所述第一数据传输服务器启动时,获取本地IP地址,并存储所述第一议服务器发送的第一次封装数据包;
所述第一协议服务器,用于依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
所述第一数据传输服务器,用于对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
所述第二数据传输服务器,用于从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
第二虚拟网络设备,用于存储所述第二数据传输服务器发送的原始数据包;
第二协议服务器,用于依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,触发处理器;
若否,由所述第二协议服务器丢弃所述原始数据包;
处理器,用于处理所述原始数据包。
与现有技术相比,本申请的有益效果为:
在本申请中,在第一数据传输服务器启动时,由第一虚拟网络设备获取本地IP地址;由第一协议服务器依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
在接收端,由第二数据传输服务器从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;由第二协议服务器依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;若是,处理所述原始数据包,并将处理结果反馈给发送端;若否,丢弃所述原始数据包。
由此可见,发送端的第一协议服务器将同一个网络连接的待发送原始数据包封装为第一次封装数据包,并将第一封装数据包转发至第一虚拟网络设备,达到将待发送原始数据包不直接发送给物理链路的目的,第一数据传输服务器从第一虚拟网络设备中读取同一个网络连接的各个第一封装数据包,对各个第一封装数据包进行再次封装,得到第二次封装数据包,并为各个第二次封装数据包一一分配物理链路,同一个网络连接的各个第二次封装数据包不再是通过一条相同的物理链路进行传输,而是通过不同的物理链路进行传输,解决了同一个网络连接的各个待发送数据包通过一条相同的物理链路进行传输时,其他空闲物理链路带宽资源不可用的问题,达到充分利用各个物理链路带宽资源的目的。
接收端的第二传输服务器从多条物理链路中读取同一个连接请求的第二次封装数据包,实现了多条物理链路带宽的合并。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种基于网络的数据传输方法的一种流程图;
图2是本申请提供的一种基于网络的数据传输方法的一种子流程图;
图3是本申请提供的一种基于网络的数据传输方法的一种子流程图;
图4是本申请提供的一种基于网络的数据传输方法的一种子流程图;
图5是本申请提供的一种基于网络的数据传输方法的另一种流程图;
图6是本申请提供的一种发送端的一种结构示意图;
图7是本申请提供的一种发送端中的第一传输服务器的一种结构示意图;
图8是本申请提供的一种接收端的一种结构示意图;
图9是本申请提供的一种基于网络的数据传输系统的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,其示出了本申请提供的一种基于网络的数据传输方法的一种流程图,其中,本实施例是从发送端角度,即发起网络连接请求端阐述基于网络的数据传输的具体过程,该发送端中设置有第一数据传输服务器、第一协议服务器和第一虚拟网络设备,可以包括以下步骤:
步骤S11:在第一数据传输服务器启动时,由第一虚拟网络设备获取本地IP地址。
在本实施例中,发送端的第一虚拟网络设备的本地IP地址由中心服务器动态分配,或根据需要静态设置,但发送端的第一虚拟网络设备的本地IP地址与所述中心管理服务器动态分配的其他发送端的IP不能冲突。
第一虚拟网络设备可以为TUN或TAP,其中TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包,在本实施例中,TUN和TAP不能同时作为第一虚拟网络设备使用。
发送端的第一虚拟网络设备在获取本地IP地址后,发送端操作系统会生成一个与该本地IP地址对应的路由表记录,该路由表记录中记录了该本地IP地址和该本地IP地址对应的第一虚拟网络设备的对应关系。
发送端的应用程序发起一个网络连接请求时,将该连接请求待发送数据打包成待发送原始数据包,并通过操作系统的套接字接口将待发送原始数据包发送至第一协议服务器。其中,套接字接口至少包含两个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP等)。
由于操作系统在处理完应用程序的一个连接请求后,再处理应用程序的下一个连接请求,所以本实施例中的待发送原始数据包同属于一个连接请求。
步骤S12:由第一协议服务器依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备。
第一协议服务器接收到的待发送原始数据包携带有通信的目的IP地址、使用的传输层协议(TCP或UDP等),第一协议服务器接收到的待发送原始数据包携带有通信的目的IP地址为接收端的第二虚拟网络设备的虚拟网络IP地址。
步骤S13:由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
第一数据传输服务器从所述第一虚拟网络设备中读取所述第一次封装数据包后,第一数据传输服务器需要将第一次封装数据包通过物理链路发送出去,但由于物理链路的最大传输单元的大小和所述第一次封装数据包的大小不同,因此需要对所述第一次封装数据包进行再次封装,对第一次封装数据包再次封装后得到第二次封装数据包。
第一数据传输服务器在得到第二次封装数据包后,为每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包。所述第二次封装数据包为同一个网络连接请求的内容,每个所述第二次封装数据包通过不同的物理链路进行传输,从而同一个网络连接请求的数据包不再通过一条固定不变的物理链路进行传输。
第一数据传输服务器在为第二次封装数据包分配物理链路时,是从可用物理链路中选择可以分配给第二次封装数据包的物理链路,当一个可用物理链路出现故障时,第一数据传输服务器可以通过操作系统的接口检测到故障链路,然后将其从可用的物理链路中移除。当故障链路故障解除后,第一数据传输服务器再将其加入到可用的物理链路。发送端上层应用程序只关心第一虚拟网络设备是否可用,而第一虚拟网络设备中的数据包可通过多个可用的物理链路进行传输,当多个可用的物理链路中其中一个发生故障时,第一虚拟网络设备中的数据包还可通过除发生故障的物理链路的其他可用物理链路进行传输,使数据包传输的可靠性比现有技术中使用单一链路传输同一个网络连接请求的数据包的可靠性提高很多,若第一虚拟网络设备的数据包的可用物理链路为n条,则本申请的数据包传输的可靠性是现有技术中使用单一链路传输同一个网络连接请求的数据包的可靠性的n倍。
第一传输服务器记录了每个可用物理链路的总带宽、已发送字节数和网络IO时间。其中,网络IO时间为末次网络IO传送往返时间。
在本实施例中,中心服务器中包括第一虚拟网络设备的本地IP地址与该虚拟网络设备对应的可用物理链路的IP地址的对应关系的列表,其中,一个本地IP地址对应一个或多个可用物理链路的IP地址。第一数据传输服务器在为每个第二次封装数据包一一分配物理链路时,可以从第一虚拟网络设备的本地IP地址与该虚拟网络设备对应的可用物理链路的IP地址的对应关系的列表中确定当前有哪些物理链路可以使用。
第一协议服务器将同一个网络连接的待发送原始数据包封装为第一次封装数据包,并将第一封装数据包转发至第一虚拟网络设备,达到将待发送原始数据包不直接发送给物理链路的目的,第一数据传输服务器从第一虚拟网络设备中读取同一个网络连接的各个第一封装数据包,对各个第一封装数据包进行再次封装,得到第二次封装数据包,并为各个第二次封装数据包一一分配物理链路,同一个网络连接的各个第二次封装数据包不再是通过一条相同的物理链路进行传输,而是通过不同的物理链路进行传输,解决了同一个网络连接的各个待发送数据包通过一条相同的物理链路进行传输时,其他空闲物理链路带宽资源不可用的问题,达到充分利用各个物理链路带宽资源的目的。
另一个实施例
请参阅图2,图2示出的是一种基于网络的数据传输方法的一种子流程图,本实施例示出的是由第一协议服务器依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备的具体过程,可以包括以下步骤:
步骤S21:依据TCP/IP协议对接收到的待发送数据包进行封装,得到对应的第一次封装数据包,所述第一次封装数据包中携带有目的IP地址。
第一协议服务器依据TCP/IP协议对接收到的待发送数据包进行封装,得到第一次封装数据包,所述第一次封装数据包中至少携带有通信目的IP地址、使用的传输层协议(TCP或UDP等)以及本地IP地址。
步骤S22:查找路由表,确定对应所述本地IP地址的第一虚拟网络设备。
在本实施例中,第一协议服务器依据TCP/IP协议查找路由表,该路由表为第一虚拟网络设备在获取本地IP地址时生成的路由表,通过查找路由表,可以确定所述本地IP地址对应的第一虚拟网络设备。在确定第一虚拟网络设备后,执行步骤S23。
步骤S23:判断所述第一次封装数据包的大小是否大于所述第一虚拟网络设备的最大传输单元的大小。
第一协议服务器在将接收到的待发送数据包发送至所述第一虚拟网络设备时,必须保证所述待发送数据包的大小小于所述第一虚拟网络设备的最大传输单元的大小,只有所述待发送数据包的大小小于所述第一虚拟网络设备的最大传输单元的大小,才能保证所述待发送数据包能够发送至所述第一虚拟网络设备。
在判断结果为第一次封装数据包的大小大于所述第一虚拟网络设备的最大传输单元的大小时,执行步骤S24,在判断结果为第一次封装数据包的大小不大于所述第一虚拟网络设备的最大传输单元的大小时,执行步骤S25。
步骤S24:拆分所述第一次封装数据包,将拆分后获得的各个数据包一一发送至所述第一虚拟网络设备。
在对所述第一协议服务器接收到的待发送数据包拆分后得到的各个数据包的大小均小于所述第一虚拟网络设备的最大传输单元的大小。
步骤S25:发送所述第一次封装数据包至所述第一虚拟网络设备。
在所述第一次封装数据包的大小不大于所述第一虚拟网络设备的大小时,直接发送所述第一次封装数据包至所述第一虚拟网络设备。
再一个实施例
请参阅图3,图3示出的是一种基于网络的数据传输方法的一种子流程图,本实施例示出的是由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包的具体过程,可以包括以下步骤:
步骤S31:第一数据传输服务器读取所述第一虚拟网络设备中的各个所述第一次封装数据包。
第一数据传输服务器将每次读取到的第一次封装数据包作为当前待处理数据包,当前待处理数据包在通过物理链路传输之前,需要对当前待处理数据包进行二次封装,即为当前待处理数据包添加预先设定的报头和记录当前待处理数据包接收顺序的报头,因此在当前待处理数据包通过物理链路传输之外,需要比较对当前待处理数据包添加预设设定的报头和记录当前待处理数据包接收顺序的报头后的数据包的大小和物理链路的最大传输大于的大小。将当前待处理数据包大小和预先设定的报头大小、记录当前待处理数据包接收顺序的报头大小之和作为当前待处理数据包的虚拟大小。
其中,所述预先设定的报头至少包括来源标记、目标标记、包序列号、包原始大小标记和辅助管理标记,所述预先设定的报头的大小至少为30个字节。
在本实施例中,预先设定的报头中的来源标记为64位,用于标记网络上各个主机的唯一性,该标记由48位的本地第一个互联网出口网卡的物理地址和16位的唯一进程标记组成。
目标标记用于标记发送端发送的数据包的接收目标是谁,即由哪个接收端来接收发送端发送的该数据包。接收端在接收到发送端发送的第二次封装数据包后,会检测第二次封装数据包中的目标标记是否为自己,若是,则继续处理该第二次封装数据包。其中,发送端在向接收端发起初始连接请求时,发送端并不知道接收目标是谁,因而目标标记值不确定,将目标标记设置为0,接收端在接收到目标标记为0的数据包时,按照初始连接模式对数据包进行处理。
包序列号用于标记该数据包是发送至接收目标的第几个包。
包原始信息标记用于还原第二次封装数据包对应的原始数据包的原始信息,接收端在接收到包括预先设定的报头的第二次封装数据包后,能够根据包原始信息标记确定接收到的数据包属于哪个原始数据包和原始数据包的大小。
辅助管理标记包括同步标识、确认标识、提交标识、结束标识、重置标识、错误标识、丢包标识和中转标识。根据辅助管理标识可以实现数据包的重传。
在本实施例中,接收端可以根据预先设定的报头对通过多个物理链路传输的同一个网络连接的数据包进行正确的重组。例如,原始数据包A被拆分为三个数据包a、b、c,a、b、c这三个数据包分别通过三个物理链路传输至接收端,若a、b、c这三个数据包仅是数据,而不包括表明自己身份的信息,接收端则不会知道a、b、c这三个数据包属于同一个数据包A,则不能将a、b、c重组为数据包A。
步骤S32:比较当前待处理数据包的虚拟大小和物理链路的最大传输单元的大小。
在本实施例中,物理链路的最大传输单元的大小和当前待处理数据包的虚拟大小的比较结果有三种,分别是当前待处理数据包的虚拟大小大于物理链路的最大传输单元的大小,当前待处理数据包的虚拟大小等于物理链路的最大传输单元的大小,当前待处理数据包的虚拟大小小于物理链路的最大传输单元的大小。在比较结果不同时,对当前待处理数据包进行的操作不同,下面会对每个比较结果进行说明。
步骤S33:在比较结果为当前待处理数据包的虚拟大小大于物理链路的最大传输单元的大小时,对当前待处理数据包进行拆分,并为拆分后得到的各个数据包添加预先设定的报头和记录数据包接收顺序的小报头得到第二次封装数据包。
在比较结果为当前待处理数据包的虚拟大小大于物理链路的最大传输单元时,对当前待处理数据包添加预先设定的报头和记录当前待处理数据包接收顺序的报头后得到的数据包不能通过物理链路进行传输,因此需要对当前待处理的数据包拆分,并为拆分后得到的各个数据包添加预先设定的报头和记录数据包接收顺序的小报头得到第二次封装数据包,并保证第二次封装数据包的大小不大于物理链路的最大传输单元的大小。
步骤S34:在比较结果为当前待处理数据包的虚拟大小等于物理链路的最大传输单元的大小,为当前待处理数据包添加预先设定的报头和记录当前待处理数据包接收顺序的报头得到第二次封装数据包。
步骤S35:在比较结果为当前待处理数据包的虚拟大小小于物理链路的最大传输单元的大小时,缓存当前待处理数据包,并将缓存的当前待处理数据包作为缓存数据包。
在缓存当前待处理数据包后,执行步骤S36。
步骤S36:判断在预设时间内是否读取到下一个数据包,若否,执行步骤S37,若是,执行步骤S38。
步骤S37:为缓存数据包添加预先设定的报头和记录缓存数据包接收顺序的小报头得到第二次封装数据包。
步骤S38:将读取到的下一个数据包作为当前待处理数据包,判断当前待处理数据包的大小、记录当前待处理数据包接收顺序的小报头的大小、缓存数据包的大小、记录缓存数据包接收顺序的小报头的大小以及预先设定的报头的大小之和是否大于物理链路的最大传输单元的大小,若是,执行步骤S37,若否,执行步骤S39。
步骤S39:合并缓存数据包和当前待处理数据包,并为合并后得到的数据包添加预先设定的报头得到第二次封装数据包。
合并缓存数据包和当前待处理数据包的具体过程为:
为缓存数据包添加记录缓存数据包接收顺序的报头得到第一待合并数据包,为当前处理数据包添加记录当前待处理数据包接收顺序的报头得到第二待合并数据包,合并第一待合并数据包和第二待合并数据包得到合并后的数据包。
再一个实施例
请参阅图4,图4示出的是一种基于网络的数据传输方法的一种子流程图,本实施例示出的是对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包的具体过程,可以包括以下步骤:
步骤S41:依据各条物理链路的可用占比,确定当前可用占比最大的物理链路。
在本实施例中,可以根据一条物理链路的总带宽、已发送字节数确定该条物理链路的可用带宽,该条物理链路的可用带宽为该条物理链路总带宽减去该物理链路在单位时间内已发送字节数,所述可用占比为一条物理链路可用带宽在该条物理链路总带宽中所占的比例,其中,任意一条物理链路的已发送字节数为该条物理链路在单位时间内的某一个时刻的已发送字节数,在该时刻已发送字节数为该条物理链路在该时刻之前发送的所有字节数。例如:物理链路A在单位时间内的时刻M已发送字节数为100,物理链路A在时刻M之后的时刻N刚发送完一个字节数为200的数据包L,则物理链路A在时刻N的已发送字节数为300,且时刻M和时刻N之间,物理链路A未发送除数据包L之外的其他数据包。在本实施例中,以1秒为一个单位时间。
步骤S42:判断所述当前可用占比最大的物理链路的可用占比是否小于预设值。
在本实施例中,根据该条物理链路的可用占比为该条物理链路的可用带宽与该条物理链路的总带宽的比例,可知该条物理链路的可用带宽等于该条物理链路的总带宽乘以该条物理链路的可用占比,当所述可用占比很小时,由于该条物理链路的总带宽不变,所以该条物理链路的可用带宽也会很小,当该条物理链路的可用带宽很小时,会影响封装的待发送数据包的传输速度,因此在为封装的待发送数据包分配物理链路时,在确定当前可用占比最小的物理链路后,也要判断该物理链路的可用占比是否小于预设值。
在本实施例中,预设值为可以通过外部配置文件来调整的阈值,在本实施例中,可以但不局限于将预设值设置为为万分之五,其中,外部配置文件可以为INI(Initialization,初始化)文件或注册表项目。
若判断结果为各条所述物理链路的可用占比小于预设值,执行步骤S43,若判断结果为各条所述物理链路的可用占比不小于预设值,执行步骤S44。
步骤S43:将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
在本实施例中,对多个网络IO时间进行平均运算,确定在一段时间内的网络IO时间的平均值。
网络IO时间平均值的长短反应了物理链路发送数据包时的网络状况,网络IO时间越短,说明物理链路发送数据包时的网络状况越好,反之,越差。
在所述当前可用占比最大的物理链路的可用占比小于预设值的情况下,选择网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以使网络IO速度和带宽占用之间取得一个相对平衡。
步骤S44:将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
在本实施例中,当前可用占比最大的物理链路为当前带宽负载最小的物理链路。
在本实施例中,将当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包后,当前待分配物理链路的第二次封装数据包通过当前可用占比最大的物理链路发送出去,在当前可用占比最大的物理链路将当前待分配物理链路的第二次封装数据包发送完毕后,当前可用占比最大的物理链路的已发送字节数和当前待分配物理链路的第二次封装数据包的字节数相加之和作为当前可用占比最大的物理链路的已发送字节数,由于当前可用占比最大的物理链路的已发送字节数增大,因此当前可用占比最大的物理链路的可用占比发生变化,并将发生变化后的可用占比作为当前可用占比最大的物理链路的可用占比,然后下一个待发送数据包即作为当前待分配物理链路的第二次封装数据包以等待分配物理链路。
现举例对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包的具体过程进行说明,当前可用物理链路为物理链路a、物理链路b和物理链路c,物理链路a的总带宽记为bw(a),物理链路a的已发送字节数记为st(a),可用带宽记为aw(a),网络IO时间记为t(a),可用占比记为ar(a),bw(a)=1048576B,物理链路b的总带宽记为bw(b),物理链路b的已发送字节数记为st(b),可用带宽记为aw(b),网络IO时间记为t(b),可用占比记为ar(b),bw(b)=5242880B,物理链路c的总带宽记为bw(c),物理链路c的总带宽记为bw(c),物理链路c的已发送字节数记为st(c),网络IO时间记为t(c),可用占比记为ar(c),bw(c)=2097152B。在初始时刻,st(a)=0,st(b)=0,st(c)=0,t(a)=200ms,t(b)=200ms,t(c)=200ms,ar(a)=100%,ar(b)=100%,arc)=100%。
在单位时间内,第二次封装数据包的个数为500个,为500个第二次封装数据包一一分配物理链路时各个物理链路的状态请参见表1。
表1
Figure BDA00003147425900181
表1中的序号为待发送数据包的序号,字节数为对应序号的待发送数据包的大小,目标物理链路为对应序号的待发送数据包分配的物理链路。
参照表1中的数据,对为第二次封装数据包分配物理链路的过程进行说明,在为序号为0的待发送数据包分配物理链路时,物理链路a、物理链路b和物理链路c的可用占比均为100%,在这种情况下,三条物理链路的可用占比均不小于预设值,可以选择三条物理链路中的任意一条物理链路,本例中选择物理链路a作为序号为0的待发送数据包的物理链路,物理链路a在发送完序号为0的待发送数据包后,已发送字节数记为1009,可用占比为(bw(a)-st(a))/bw(a)=(1048576-1009)/1048576≈99.90%,而此时物理链路b和物理链路c的可用占比均为100%,三条物理链路的可用占比均不小于预设值,此时可用占比最大的物理链路为物理链路b和物理链路c,在为下一个待发送数据包即序号为1的待发送数据包分配物理链路时,可以将物理链路b和物理链路c中任意一个物理链路作为下一个待发送数据包的物理链路。
在为序号为1的待发送数据包分配物理链路时,将物理链路b作为序号为1的待发送数据包的物理链路,物理链路b在发送完序号为1的待发送数据包后,物理链路b的已发送字节数为864,可用占比为(bw(b)-st(b))/bw(b)=(5242880-864)/5242880≈99.98%,此时物理链路a的可用占比为99.90%,物理链路c的可用占比为100%,三条物理链路的可用占比均不小于预设值,在为下一个待发送数据包即序号为2的待发送数据包分配物理链路时,将可用占比最大的物理链路c作为下一个待发送数据包的物理链路。在为序号为3-499的待发送数据包分配物理链路的过程和上述过程相同,在此不再赘述。
由此可见,在为待发送数据包一一分配物理链路时,在物理链路可用占比不小于预设值的情况下,将当前可用占比最大的物理链路作为待发送数据包的物理链路。
由表1可知,三条物理链路已发送字节数的比例为:物理链路a:物理链路b:物理链路c=49025:241062:96841=1.00:4.92:1.98≈1048576:5242880:2097152=1:5:2,可见充分利用了三条物理链路的带宽资源。
发送端在为第二次封装数据包分配物理链路,并将第二次封装数据包发送至接收端后,接收端进行相应操作,对接收到的第二次封装数据包进行处理,其中接收端进行的具体操作可以参见图5。
其中图5所示的是一种基于网络的数据传输方法的另一种流程图,并且图5所示流程图从接收端角度即响应发送端发起的网络连接请求角度阐述基于网络的数据传输的具体过程,接收端中设置有第二虚拟网络设备、第二协议服务器、第二数据传输服务器和处理器。
图5所示的基于网络的数据传输方法可以包括以下步骤:
步骤S51:由第二数据传输服务器从各条物理链路中的读取发送端发送的第二次封装数据包,并对所述数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备。
在本实施例中,所述各条物理链路为发送端数据传输服务器为第二次封装数据包分配的物理链路,第二数据传输服务器从各条物理链路读取第二次封装数据包后,需要对读取到的第二次封装数据包进行解码还原,在对读取到的数据进行解码还原后,得到原始数据包,所述原始数据包的内容和发送端的待发送原始数据包的内容相同,在解码还原后可以确定原始数据包需要发送至第二虚拟网络设备。
第二数据传输服务器读取到的发送端发送的第二次封装数据包可能是发送端的1个第一次封装数据包拆分后得到的数据包,也可能是发送端的2个以上的第一次封装数据包合并后的数据包。
在第二数据传输服务器从各条物理链路中读取到的第二次封装数据包为发送端的第一次封装数据包经过拆分后得到的数据包的情况下,由第二数据传输服务器从各条物理链路中的读取发送端发送的第二次封装数据包,并对所述数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备的具体过程可以为:
第二数据传输服务器首先解码读取到的第二次封装数据包中的来源标记,根据所述来源标记,将读取到第二次封装数据包存放在与所述来源标记对应的缓冲区中;然后检查缓冲区中的第二次封装数据包的包序列号是否连续,若不连续,说明存在携带有所述来源标记的第二次封装数据包未被接收,等待接收未收到的第二次封装数据包,在接收到新数据包后返回执行检查缓冲区中的第二次封装数据包的包序列号是否连续的操作;若连续,则判断各个所述来源标记对应的减去预先设定的报头的第二次封装数据包的大小之和是否等于任意一个第二次封装数据包的预先设定的报头中包原始信息中记录的数据包的大小,若是,则按照包序列号对各个所述来源标记对应的第二次封装数据包除去预先设定的报头之后的数据包进行重组,若否,等待接收下一个数据包。
在第二数据传输服务器从各条物理链路中读取到的第二次封装数据包为发送端的2个以上的第一次封装数据包合并后得到的数据包的情况下,对读取到的第二次封装数据包进行拆分,并根据拆分后的各个数据包各自所包括的记录各自数据包接收顺序的小报头,确定各个数据包的接收顺序,然后按照各个数据包的接收顺序依次将各个数据包发送至第二虚拟网络数据包。
步骤S52:由第二协议服务器依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理。
第二协议服务器依据TCP/IP协议从第二虚拟网络设备中读取所述原始数据包后,依据所述原始数据包的使用的传输层协议(TCP或UDP等)和使用的端口号判断接收端是否可以处理所述原始数据包,若可以处理,则执行步骤S53,若不可以处理,则执行步骤S54。
步骤S53:处理所述原始数据包。
在本实施例中,处理所述原始数据包的过程可以为:
上层应用程序读取所述原始数据包,然后对所述原始数据包进行处理。
步骤S54:丢弃所述原始数据包。
与图1所示的一种基于网络的数据传输方法的实施例相对应,本申请提供了一种发送端的一种结构示意图,请参阅图6,发送端包括:第一虚拟网络设备601、第一协议服务器602和第一数据传输服务器603。
其中,第一虚拟网络设备601,用于在第一数据传输服务器603启动时,获取本地IP地址,并存储第一协议服务器602发送的第一次封装数据包。
第一协议服务器602,用于依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备。
第一数据传输服务器603,用于从所述第一虚拟网络设备读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包。
在本实施例中,第一数据传输服务器603包括:处理单元701、判断单元702、第一分配单元703和第二分配单元704,请参见图7,图7示出的是第一数据传输服务器703的结构示意图。其中:
处理单元701,用于依据各条物理链路的可用占比,确定当前可用占比最大的物理链路。
在本实施例中,所述可用占比为一条物理链路可用带宽在该条物理链路总带宽中所占的比例,所述一条物理链路可用带宽等于该条物理链路总带宽减去该物理链路在单位时间内已发送字节数。
判断单元702,用于判断所述处理单元确定的物理链路的可用占比是否小于预设值;
若是,触发第一分配单元703;
若否,触发第二分配单元704;
第一分配单元703,用于将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
第二分配单元704,用于将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
在本实施例中,所述当前可用占比最大的物理链路为当前带宽负载最小的物理链路。
与图5所示的一种基于网络的数据传输方法的实施例相对应,本申请提供了一种接收端的一种结构示意图,请参阅图8,接收端包括:第二数据传输服务器801、第二虚拟网络设备802、第二协议服务器803和处理器804。
其中,第二数据传输服务器801,用于从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备802。
第二虚拟网络设备802,用于存储所述第二数据传输服务器801发送的原始数据包。
第二协议服务器803,用于依据TCP/IP协议从所述第二虚拟网络设备902中读取所述原始数据包,并判断所述原始数据包是否可以被处理。
若是,触发处理器804;
若否,由第二协议服务器803丢弃所述原始数据包。
处理器804,用于处理所述原始数据包。
上述发送端和接收端可以构成一个基于网络的数据传输系统,如图9所示。图9示出的是基于网络的数据传输系统的一种结构示意图。其中:
第一虚拟网络设备601,用于在所述第一数据传输服务器603启动时,获取本地IP地址,并存储所述第一议服务器602发送的第一次封装数据包;
第一协议服务器602,用于依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备601。
第一数据传输服务器603,用于对从所述第一虚拟网络设备601中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
第二数据传输服务器801,用于从对应物理链路读取所述第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备802。
第二虚拟网络设备802,用于存储所述第二数据传输服务器801发送的原始数据包;
第二协议服务器803,用于依据TCP/IP协议从所述第二虚拟网络设备802中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,触发处理器804;
若否,由所述第二协议服务器803丢弃所述原始数据包;
处理器804,用于处理所述原始数据包。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种基于网络的数据传输方法、装置及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种基于网络的数据传输方法,其特征在于,包括:
在第一数据传输服务器启动时,由第一虚拟网络设备获取本地IP地址;
由第一协议服务器依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
2.根据权利要求1所述的方法,其特征在于,所述对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端的过程包括:
依据各条物理链路的可用占比,确定当前可用占比最大的物理链路;
其中,所述可用占比为一条物理链路可用带宽在该条物理链路总带宽中所占的比例,所述一条物理链路可用带宽等于该条物理链路总带宽减去该物理链路在单位时间内已发送字节数;
判断所述当前可用占比最大的物理链路的可用占比是否小于预设值;
若是,将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
若否,将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
其中,所述当前可用占比最大的物理链路为当前带宽负载最小的物理链路。
3.根据权利要求2所述的方法,其特征在于,所述预设值为可以调整的阈值。
4.根据权利要求1~3所述的方法,其特征在于,所述由第一协议服务器依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备的过程包括:
依据TCP/IP协议对接收到的待发送数据包进行封装,得到对应的第一次封装数据包,所述第一次封装数据包中携带有目的IP地址;
查找路由表,确定对应所述本地IP地址的第一虚拟网络设备;
判断所述第一次封装数据包的大小是否大于所述第一虚拟网络设备的最大传输单元的大小;
若是,拆分所述第一次封装数据包,将拆分后获得的各个数据包一一发送至所述第一虚拟网络设备;
若否,发送所述第一次封装数据包至所述第一虚拟网络设备。
5.根据权利要求1~3所述的方法,其特征在于,所述由第一数据传输服务器对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包的过程包括:
第一数据传输服务器读取所述第一虚拟网络设备中的各个所述第一次封装数据包,将每次读取到的第一次封装数据包作为当前待处理数据包,将当前待处理数据包大小和预先设定的报头大小、记录当前待处理数据包接收顺序的小报头大小之和作为当前待处理数据包的虚拟大小;
比较当前待处理数据包的虚拟大小和物理链路的最大传输单元的大小;
在比较结果为当前待处理数据包的虚拟大小大于物理链路的最大传输单元的大小时,对当前待处理数据包进行拆分,并为拆分后得到的各个数据包添加预先设定的报头和记录数据包接收顺序的小报头得到第二次封装数据包,且第二次封装数据包的大小不大于物理链路的最大传输单元的大小;
在比较结果为当前待处理数据包的虚拟大小等于物理链路的最大传输单元的大小,为当前待处理数据包添加预先设定的报头和记录当前待处理数据包接收顺序的小报头得到第二次封装数据包;
在比较结果为当前待处理数据包的虚拟大小小于物理链路的最大传输单元的大小时,缓存当前待处理数据包,并将缓存的当前待处理数据包作为缓存数据包;
判断在预设时间内是否读取到下一个数据包;
若否,为缓存数据包添加预先设定的报头和记录缓存数据包接收顺序的小报头得到第二次封装数据包;
若是,将读取到的下一个数据包作为当前待处理数据包,判断当前待处理数据包的大小、记录当前待处理数据包接收顺序的小报头的大小、缓存数据包的大小、记录缓存数据包接收顺序的小报头的大小以及预先设定的报头的大小之和是否大于物理链路的最大传输单元的大小;
若是,为缓存数据包添加预先设定的报头和记录缓存数据包接收顺序的报头得到第二次封装数据包;
若否,合并缓存数据包和当前待处理数据包,并为合并后得到的数据包添加预先设定的报头得到第二次封装数据包;
其中,所述预先设定的报头至少包括来源标记、目标标记、包序列号、包原始信息标记和辅助管理标记。
6.一种发送端,其特征在于,包括:
第一虚拟网络设备,用于在第一数据传输服务器启动时,获取本地IP地址,并存储第一协议服务器发送的第一次封装数据包;
第一协议服务器,用于依据TCP/IP协议对接收到的待发送数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
第一数据传输服务器,用于从所述第一虚拟网络设备读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
7.根据权利要求6所述的发送端,其特征在于,所述第一数据传输服务器包括:
处理单元,用于依据各条物理链路的可用占比,确定当前可用占比最大的物理链路;
判断单元,用于判断所述处理单元确定的物理链路的可用占比是否小于预设值;
若是,触发第一分配单元;
若否,触发第二分配单元;
第一分配单元,用于将网络IO时间平均值最短的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
第二分配单元,用于将所述当前可用占比最大的物理链路作为当前待分配物理链路的第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端。
8.一种基于网络的数据传输方法,其特征在于,包括:
由第二数据传输服务器从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
由第二协议服务器依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,处理所述原始数据包;
若否,丢弃所述原始数据包。
9.一种接收端,其特征在于,包括:
第二数据传输服务器,用于从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
第二虚拟网络设备,用于存储所述第二数据传输服务器发送的原始数据包;
第二协议服务器,用于依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,触发处理器;
若否,由第二协议服务器丢弃所述原始数据包;
处理器,用于处理所述原始数据包。
10.一种基于网络的数据传输系统,其特征在于,包括:
如权利要求6~7任意一项的发送端和如权利要求9的接收端,其中:
所述第一虚拟网络设备,用于在所述第一数据传输服务器启动时,获取本地IP地址,并存储所述第一议服务器发送的第一次封装数据包;
所述第一协议服务器,用于依据TCP/IP协议对接收到的待发送原始数据包进行封装,并依据所述本地IP地址将得到的第一次封装数据包发送至对应的第一虚拟网络设备;
所述第一数据传输服务器,用于对从所述第一虚拟网络设备中读取的所述第一次封装数据包再次封装,得到第二次封装数据包,并对每个所述第二次封装数据包一一分配物理链路,确定所述第二次封装数据包的传输链路,以传输所述第二次封装数据包至接收端;
所述第二数据传输服务器,用于从各条物理链路中读取发送端发送的第二次封装数据包,并对所述第二次封装数据包解码还原,得到原始数据包,将所述原始数据包发送至对应的第二虚拟网络设备;
第二虚拟网络设备,用于存储所述第二数据传输服务器发送的原始数据包;
第二协议服务器,用于依据TCP/IP协议从所述第二虚拟网络设备中读取所述原始数据包,并判断所述原始数据包是否可以被处理;
若是,触发处理器;
若否,由所述第二协议服务器丢弃所述原始数据包;
处理器,用于处理所述原始数据包。
CN201310162315.1A 2013-05-06 2013-05-06 一种基于网络的数据传输方法、装置及系统 Active CN103200072B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310162315.1A CN103200072B (zh) 2013-05-06 2013-05-06 一种基于网络的数据传输方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310162315.1A CN103200072B (zh) 2013-05-06 2013-05-06 一种基于网络的数据传输方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103200072A true CN103200072A (zh) 2013-07-10
CN103200072B CN103200072B (zh) 2016-06-08

Family

ID=48722436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310162315.1A Active CN103200072B (zh) 2013-05-06 2013-05-06 一种基于网络的数据传输方法、装置及系统

Country Status (1)

Country Link
CN (1) CN103200072B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016172978A1 (zh) * 2015-04-30 2016-11-03 华为技术有限公司 一种软件安全验证方法、设备及系统
CN106685763A (zh) * 2016-12-30 2017-05-17 中广热点云科技有限公司 一种同时支持公网传输和私网传输的应用平台
CN107493221A (zh) * 2017-07-25 2017-12-19 合肥红铭网络科技有限公司 一种提高虚拟主机传输性能的系统
CN107566215A (zh) * 2017-09-11 2018-01-09 广东欧珀移动通信有限公司 无线网络断流检测方法、装置、存储介质及移动终端
CN109428851A (zh) * 2017-07-06 2019-03-05 高德信息技术有限公司 一种数据传输组件及方法
CN110086823A (zh) * 2019-05-07 2019-08-02 山东渔翁信息技术股份有限公司 一种数据通信方法、装置、设备及介质
CN110086680A (zh) * 2019-05-17 2019-08-02 北京华力智飞科技有限公司 Afdx网络配置生成方法、装置及系统
CN111026698A (zh) * 2019-11-20 2020-04-17 迈普通信技术股份有限公司 链路修复方法、装置、电子设备及存储介质
CN114884911A (zh) * 2022-03-30 2022-08-09 阿里云计算有限公司 基于nfv的网络数据传输方法、系统和存储介质
US20230080104A1 (en) * 2021-08-25 2023-03-16 International Business Machines Corporation Bulk data transfers via transport layer security protocol

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101557386A (zh) * 2008-04-10 2009-10-14 华为技术有限公司 数据发送方法与装置及数据接收方法与装置
CN101686180A (zh) * 2008-09-28 2010-03-31 华为技术有限公司 数据传输方法及网络节点和数据传输系统
CN102215154A (zh) * 2010-04-06 2011-10-12 中兴通讯股份有限公司 网络业务的访问控制方法及终端
CN103078919A (zh) * 2012-12-28 2013-05-01 中国人民解放军国防科学技术大学 一种二次封装的数据传输方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101557386A (zh) * 2008-04-10 2009-10-14 华为技术有限公司 数据发送方法与装置及数据接收方法与装置
CN101686180A (zh) * 2008-09-28 2010-03-31 华为技术有限公司 数据传输方法及网络节点和数据传输系统
EP2323342A1 (en) * 2008-09-28 2011-05-18 Huawei Technologies Co., Ltd. Data transmission method and network node and data transmission system
CN102215154A (zh) * 2010-04-06 2011-10-12 中兴通讯股份有限公司 网络业务的访问控制方法及终端
CN103078919A (zh) * 2012-12-28 2013-05-01 中国人民解放军国防科学技术大学 一种二次封装的数据传输方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016172978A1 (zh) * 2015-04-30 2016-11-03 华为技术有限公司 一种软件安全验证方法、设备及系统
US10757129B2 (en) 2015-04-30 2020-08-25 Huawei Technologies Co., Ltd. Software security verification method, device, and system
CN106685763B (zh) * 2016-12-30 2019-11-12 中广热点云科技有限公司 一种同时支持公网传输和私网传输的应用平台
CN106685763A (zh) * 2016-12-30 2017-05-17 中广热点云科技有限公司 一种同时支持公网传输和私网传输的应用平台
CN109428851A (zh) * 2017-07-06 2019-03-05 高德信息技术有限公司 一种数据传输组件及方法
CN109428851B (zh) * 2017-07-06 2021-08-10 阿里巴巴(中国)有限公司 一种数据传输组件及方法
CN107493221A (zh) * 2017-07-25 2017-12-19 合肥红铭网络科技有限公司 一种提高虚拟主机传输性能的系统
CN107566215A (zh) * 2017-09-11 2018-01-09 广东欧珀移动通信有限公司 无线网络断流检测方法、装置、存储介质及移动终端
CN110086823A (zh) * 2019-05-07 2019-08-02 山东渔翁信息技术股份有限公司 一种数据通信方法、装置、设备及介质
CN110086680A (zh) * 2019-05-17 2019-08-02 北京华力智飞科技有限公司 Afdx网络配置生成方法、装置及系统
CN111026698A (zh) * 2019-11-20 2020-04-17 迈普通信技术股份有限公司 链路修复方法、装置、电子设备及存储介质
CN111026698B (zh) * 2019-11-20 2022-06-21 迈普通信技术股份有限公司 链路修复方法、装置、电子设备及存储介质
US20230080104A1 (en) * 2021-08-25 2023-03-16 International Business Machines Corporation Bulk data transfers via transport layer security protocol
CN114884911A (zh) * 2022-03-30 2022-08-09 阿里云计算有限公司 基于nfv的网络数据传输方法、系统和存储介质
CN114884911B (zh) * 2022-03-30 2024-05-14 阿里云计算有限公司 基于nfv的网络数据传输方法、系统和存储介质

Also Published As

Publication number Publication date
CN103200072B (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
CN103200072A (zh) 一种基于网络的数据传输方法、装置及系统
US7519724B2 (en) Method, system and article for dynamic real-time stream aggregation in a network
US7079501B2 (en) Method and system for efficiently delivering content to multiple requesters
CN103238301A (zh) 用于在路由器处管理话务的技术
CN101296176B (zh) 一种基于群集的数据处理方法和装置
US7957279B2 (en) Session border control using multiple processors
US8539089B2 (en) System and method for vertical perimeter protection
CN106034084A (zh) 一种数据传输方法及装置
CN112422489B (zh) 业务数据传输方法、装置、计算机设备和存储介质
CN102027732A (zh) 经由因特网协议网络提供对服务器应用程序的访问
CN102447638A (zh) 负载均衡的方法及转发设备
CN110278161A (zh) 基于用户态协议栈的报文分流方法、装置及系统
US8619790B2 (en) Adaptive cache for caching context and for adapting to collisions in a session lookup table
CN107579925A (zh) 报文转发方法及装置
CN104618365A (zh) 协议报文处理方法、装置及终端
US7660906B1 (en) Data delivery system and method
CN102857547B (zh) 分布式缓存的方法及设备
CN113497752B (zh) 一种报文发送方法、第一网络设备及网络系统
CN105656794A (zh) 数据分发方法及装置
CN112398845A (zh) 数据传输方法、数据传输装置、系统及电子设备
CN109040323B (zh) 负载均衡装置
CN101547192A (zh) 一种分发传输tcp数据包的方法及装置
CN113381939B (zh) 数据传输方法、装置、电子设备及计算机可读存储介质
US8559423B2 (en) Method and apparatus for packet processing
US7290055B2 (en) Multi-threaded accept mechanism in a vertical perimeter communication environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant