多wan口的网关、实现http下载的方法及系统的制作方法_3

文档序号:9730224阅读:来源:国知局
的请求下载的资源之和等于步骤101中的HTTP GET请求包请求下载的资源。
[0068]该网关与内外PC的交互流程包括以下步骤,参见图3:
[0069]步骤111、该网关根据步骤102记录的IP head和TCP head及步骤105记录的TCPhead,修改接收到的下载数据包的IP head和TCP head,其中,将接收到的下载数据包的IPhead的源IP修改为外网服务器的IP,将下载数据包的IP head的目的端口的IP修改为内网PC的IP,还将下载数据包的TCP head的seq字段和ack字段修改成与步骤105记录的TCP head的seq字段和ack字段连续。此步骤修改seq字段是为了是所有的下载数据包具有符合TCP协议的、能够保证内网PC接收该些下载数据包的连续性,而不是指将所有下载数据包连续发送给内网PC,依据TCP协议定义的下一个包的seq =这个包的seq+这个包的data的长度。由每个WAN 口发给内网PC的下载数据包的seq需要根据自身下载的range、相对于请求下载的资源的range的位置以及最开始记录的response数据包来计算得出,另外还要修改下载数据包的IP head的checksum字段和TCP head的checksum字段,具体的修改符合TCP协议,具体修改过程在此不再赘述。
[0070]步骤112、该网关通过LAN 口将修改后的下载数据包按照修改完成的顺序通过LAN口逐一发送至内网PC。
[0071]步骤113、内网PC利用TCP协议的乱序整理特性,重组接收到的下载数据包。
[0072]虽然步骤108-步骤113采用顺序标记,但是步骤108-步骤110与步骤111_步骤113是相互独立执行的,该网关在外网服务器与内网PC之间起中转作用。
[0073]在本实施例中,考虑到网络具有不稳定性,因此生成的HTTP GET请求包的range的分配可能需要实时的调整,而且分配给每个WAN 口的数据长度跟WAN 口的下载速度相关,也就是分配给每个WAN 口的数据长度不是完全一样的。根据每个WAN 口的下载速度分配下载的数据长度,能够有利于每个WAN 口的下载时间近似,充分利用每个WAN 口。
[0074]本实施例的4WAN 口的网关2,参见图4,包括一发送模块201、一记录模块202、一RESET数据包生成模块203、一 HTTP GET请求包生成模块204、一接收模块205和一修改模块 206。
[0075]该记录模块202用于在调用该发送模块201通过WAN1将内网PC3的一 HTTP GET请求包发送至外网服务器4时记录该HTTP GET请求包的HTTP head,TCP head和IP head,尤其是包含的请求下载的内容、TCP head包括的seq、ack等字段及IP head包括的内网PC3的IP和外网服务器4的IP,还用于在调用该发送模块201通过LAN 口将外网服务器4的一响应于该HTTP GET请求包的response数据包发送至内网PC3时记录该response数据包的 HTTP head 和 TCP head,尤其是 HTTP head 的 Content-Length 字段及 TCP head 的seq、ack等字段,然后调用该RESET数据包生成模块203。
[0076]该RESET数据包生成模块203用于生成一 RESET数据包,然后调用该发送模块201通过WAN1将该RESET数据包发送至外网服务器4,然后调用该HTTP GET请求包生成模块204。
[0077]该HTTP GET请求包生成模块204用于生成4个HTTP GET请求包,生成的每个HTTPGET请求包分别包括一 Range字段,且每个Range字段的下载范围的大小与发送的WAN 口的下载速率成正比,然后调用该发送模块201分别通过WAN1、WAN2、WAN3和WAN4将该HTTPGET请求包生成模块204生成的HTTP GET请求包发送至外网服务器4,然后调用该接收模块 205。
[0078]该接收模块205用于通过该发送模块201发送该HTTP GET请求包生成模块204生成的HTTP GET请求包的WAN 口接收由外网服务器4发送的下载数据包,该下载数据包响应于该HTTP GET请求包生成模块204生成的HTTP GET请求包且包括实际下载的数据,然调用该修改模块206。
[0079]该修改模块206用于根据该记录模块202记录的内网PC的HTTP GET请求包的IP head和TCP head及response数据包的TCP head,修改接收到的下载数据包的IP head和TCP head,其中,将该接收模块205接收到的下载数据包的IP head的源IP修改为外网服务器4的IP,将下载数据包的IP head的目的端口的IP修改为内网PC3的IP,还将下载数据包的TCP head的seq字段和ack字段修改成与该记录模块202记录的TCP head的seq字段和ack字段连续以及修改下载数据包的IP head的checksum字段和TCP head的checksum字段,然后调用该发送模块201将修改后的下载数据包按照修改完成的顺序通过LAN 口逐一发送至内网PC3,然后重复调用该HTTP GET请求包生成模块204,直至生成的所有的HTTP GET请求包的Range字段表征的请求下载的资源之和等于内网PC3的HTTP GET请求包请求下载的资源。
[0080]本实施例的HTTP下载系统,参见图5,包括该网关2、内网PC3和外网服务器4,内网PC3与该网关2的LAN 口网络连接,外网服务器4与该网关2的WAN1、WAN2、WAN3和WAN4网络连接。
[0081]实施例2
[0082]本实施例与实施例1基本相同,不同之处在于,参见图6和图7:
[0083]步骤108替换为:步骤1081、该网关一次性生成15个HTTP GET请求包;步骤1082、该网关将其中的4个HTTP GET请求包分别通过WAN1、WAN2、WAN3和WAN4发送至外网服务器。此步骤中生成的所有的HTTP GET请求包的Range字段表征的请求下载的资源之和等于步骤101中的HTTP GET请求包请求下载的资源。
[0084]该网关与该外网服务器之间重复执行步骤1082-步骤110,直至将生成的所有的HTTP GET请求包均发送至外网服务器。
[0085]步骤112替换为:该网关在修改后的下载数据包中筛选出Range字段连续的下载数据包一同发送至内网PC。
[0086]如,修改完了下载数据包1、3、和5,再修改完了下载数据包2、9和10,那么该网关将下载数据包1、2、3 —同发送至内网PC。本实施例与实施例1的主要区别在于:实施例1的方法是逐批生成HTTP GET请求包以及将修改后的下载数据包按照修改完成的顺序发送(即先修改完的先发送),而本实施的方法是一次性生成所有HTTP GET请求包以及将Range字段连续的下载数据包一同发送。
[0087]本实施例的4WAN 口的网关和实施例1基本相同,不同之处在于,
[0088]该HTTP GET请求包生成模块204用于一次性生成15个HTTP GET请求包,然后调用该发送模块201逐批将其中的4个HTTP GET请求包分别通过WAN1、WAN2、WAN3和WAN4发送至外网服务器,直至将生成的所有的HTTP GET请求包均发送至外网服务器,其中生成的所有的HTTP GET请求包的Range字段表征的请求下载的资源之和等于内网PC的HTTPGET请求包请求下载的资源,然后调用该接收模块205。
[0089]该修改模块206调用该发送模块201在修改后的下载数据包中筛选出Range字段连续的下载数据包一同发送至内网PC。
[0090]实施例3
[0091]本实施例的4WAN 口的网关实现HTTP下载的方法与实施例1基本相同,不同之处在于,参见图8:
[0092]步骤112替换为:该网关将修改后的下载数据包存储在该网关的硬件存储设备上,待所有下载数据包修改完毕后通过LAN 口一同发送至内网PC。S卩,本实施例的网关能够将修改后下载数据包存储在该网关中,待请求下载的资源从外网服务器全部下载完毕后再一并传送给内网PC。
[0093]本实施例的4WAN 口的网关和实施例1基本相同,不同之处在于,该修改模块调用该发送模块将修改后的下载数据包存储在该硬
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1