路由器之间进行数据文件共享的系统及方法
技术领域
本发明涉及数据共享技术领域,尤其涉及一种路由器之间进行数据文件共享的系统及方法。
背景技术
目前,随着通信技术的飞速发展,智能路由器得到越来越广泛的应用,而由于智能路由器一般均具有存储功能,相应的,业界便开发出路由器与路由器之间进行数据文件共享的技术,即相互匹配的两个路由器A、B之间,通过在路由器A上建一个文件服务器(ftp server或web server),而路由器B则可通过外网并利用上述的文件服务器直接访问路由器A中存储的诸如音视频等数据文件,并可将该数据文件直接下载到路由器B的本地进行存储,进而实现对路由器A中存储的数据文件的共享;或者,也可通过在路由器B上建一个文件服务器,而路由器A则通过公网并基于路由器B上建立的文件服务器直接将该路由器A中存储的数据上传到路由器B的存储设备中,进而也可实现对路由器A中存储的数据文件的共享。
但是,由于上述数据文件共享的前提条件是路由器A、B均能够直接访问公网,而当前很多的路由器却不具备公网IP,即无论是在路由器A或路由器B上建立文件服务器,其对方均有可能因不能直接访问,进而导致无法在路由器之间实现数据文件的共享。
另外,当前具备公网IP的路由器之间进行数据传输时,经常会出现丢包、接收方乱序及断点续传等问题,且在传输层需依赖具体的协议才能完成数据传输操作,进而导致实现数据共享的难度非常大,不利于推广应用。
发明内容
鉴于上述问题,本申请记载了一种路由器之间进行数据文件共享的系统包括:
第一路由器1,具有第一存储设备,且该第一存储设备中存储有待共享数据文件;
第二路由器2,具有第二存储设备;
第一NAT(Network Address Translation,网络地址转换)设备5,与所述第一路由器1通信连接;
第二NAT设备6,与所述第二路由器2通信连接;以及
设置在同一公网7中的中继服务器3和控制服务器4,所述中继服务器3分别与所述第一NAT设备5和所述第二NAT设备6连接,以分别通过所述第一NAT设备5建立用于所述第一路由器1发送所述待共享数据文件的第一数据通道d1和通过所述第二NAT设备6建立用于所述第二路由器2接收所述待共享数据文件的第二数据通道d2;所述控制服务器4分别与所述第一NAT设备1、所述第二NAT设备2及所述中继服务器3通信连接,以控制所述中继服务器3建立所述第一数据通道d1和所述第二数据通道d2;并且
所述控制服务器4还分别通过所述第一NAT设备5控制所述第一路由器1进行所述待共享数据文件的发送、通过所述第二NAT设备6控制所述第二路由器2进行所述待共享数据文件的接收。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的系统还包括:
第一用户终端,与所述第一路由器1连接,以向所述控制服务器4发送对所述待共享数据文件的共享请求;
第二用户终端,与所述第二路由器2连接,以对所述共享请求进行确认。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的系统中:
所述中继服务器3具有转发模块31;
所述第一路由器1还具有第一发送接口11和第一汇聚模块13,所述第一发送接口11通过所述第一汇聚模块13与所述转发模块31连接,用于以分片传输的方式将所述待共享数据文件发送至所述转发模块31;以及
所述第二路由器2还具有第二接收接口22和第二汇聚模块23,所述第二接收接口22通过所述第二汇聚模块23与所述转发模块31连接,用于接收所述待共享数据文件。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的系统中:
所述转发模块31通过TCP/UDP端口分别与所述第一汇聚模块13和所述第二汇聚模块23通信连接。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的系统中:
所述第一路由器1还具有第一接收接口12,且该第一接收接口12与所述第一汇聚模块连接13;
所述第二路由器2还具有第二发送接口21,且该第二发送接口21与所述第二汇聚模块23连接,以用于将所述第二存储设备中存储的数据文件经所述第一接收接口12共享至所述第一存储设备中。
本申请还提供了一种路由器之间进行数据文件共享的方法,可基于上述的任意一项所述路由器之间进行数据文件共享的系统的基础上,利用具有第一存储设备的第一路由器和具有第二存储设备的第二路由器,且所述第一存储设备中存储有待共享数据文件,所述方法包括:
提供设置在同一公网中相互连接的中继服务器和控制服务器,并通过第一NAT设备建立所述第一路由器分别与所述中继服务器和所述控制服务器之间的连接,通过第二NAT设备建立所述第二路由器分别与所述中继服务器和所述控制服务器之间的连接;
所述第一路由器经所述控制服务器向所述第二路由器发送共享请求;
所述第二路由器发送针对所述共享请求的确认信息至所述控制服务器;
所述控制服务器控制所述中继服务器开启连接端口,以建立所述第一路由器与所述中继服务器之间的第一数据通道,及所述第二路由器与所述中继服务器之间的第二数据通道;
所述第一路由器通过所述第一数据通道将所述待共享数据文件发送至所述中继服务器;
所述中继服务器将接收的所述待共享数据文件通过所述第二数据通道转发至所述第二路由器;以及
所述第二路由器将接收的所述待共享数据文件存储至所述第二存储设备中。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法还包括:
第一用户终端向所述第一路由器发送所述共享请求;
第二用户终端经所述第二路由器接收所述共享请求,并对该共享请求进行确认操作;
若所述第二用户终端同意所述共享请求,则发送所述确认信息至所述第二路由器;
若所述第二用户终端不同意所述共享请求,则发送拒绝信息至所述第二路由器;以及
所述第二路由器将所述拒绝信息转发至所述控制服务器后,所述控制服务器结束共享操作,并反馈至所述第一用户终端。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法中,所述第一路由器向所述第二路由器发送所述待共享数据文件的步骤包括:
所述第一路由器发送待共享数据文件信息至所述第二路由器;
所述第二路由器根据接收的所述待共享数据文件信息进行初始化操作;
若所述初始化操作成功,则将所述待共享数据文件发送至所述第二路由器;
若所述初始化操作失败,则结束共享操作。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法中:
所述第一路由器以分片传输的方式将所述待共享数据文件发送至所述第二路由器。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法中,以所述分片传输的方式将所述待共享数据文件发送至所述第二路由器的步骤包括:
步骤A:所述第一路由器将所述待共享数据文件转换为若干个分片文件,并对所述若干个分片文件按照既定顺序进行编号;
步骤B:基于所述编号,将所述分片文件发送至所述第二路由器;
步骤C:所述第二路由器对每个所述分片文件均进行完整性检查,以获取并发送未被正确接收的所述分片文件的编号至所述第一路由器,并继续所述步骤B;
步骤D:每个所述分片文件均被正确接收后,所述第二路由器根据所述编号按照所述既定顺序将接收的所述分片文件拼接成所述待共享数据文件。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法的所述步骤A中:
所述第一路由器将所述待共享数据文件分成若干个分片数据,并添加头部数据至每个所述分片数据,以形成所述若干分片文件;
其中,所述头部数据包括文件ID、编号、当前分片文件的长度和当前分片文件的CRC值。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法的所述步骤C中:
所述第二路由器对接收的所述分片文件中头部数据以后的内容进行CRC计算,并将计算获取的CRC值与所述头部数据中包括的CRC值进行比较;
若获取的CRC值与所述头部数据中包括的CRC值相等,则所述分片文件被正确接收;
否则,该分片文件未被正确接收。
作为一个优选的实施例,上述的路由器之间进行数据文件共享的方法中:
所述连接端口为TCP/UDP端口;所述待共享数据文件信息包括名称、文件ID、数据大小和分片大小。
上述技术方案具有如下优点或有益效果:
本申请中记载的一种路由器之间进行数据文件共享的系统及方法,通过利用公网中的中继服务器进而实现NAT环境下路由器之间数据文件的共享,即使得不具有公网IP地址的路由器之间也能进行数据文件的共享;另外,基于分片传输的方式进行的数据文件共享,在有效的避免数据在传输的过程中出现的丢包、接收乱序及断点续传等问题出现的同时,还使得系统的传输层能够不依赖具体的协议,如采用TCP或UDP等均能够实现路由器之间数据的传送,进而有效的降低路由器之间数据共享的难度,利于其推广应用。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本申请实施例中路由器之间进行数据文件共享的系统的网络拓扑图;
图2为本申请实施例的路由器之间进行数据文件共享的系统中第一路由器向第二路由器发送数据文件的模块结构示意图;
图3为本申请实施例中路由器对待分析数据文件进行分片化操作步骤的流程示意图。
具体实施方式
本发明实施例中路由器之间进行数据文件共享的系统及方法,基于具有存储功能的路由器的基础上,通过引入中继服务器的方法来NAT环境下路由器之间的数据文件共享,使得不具有公网IP地址的路由器之间也能进行数据文件的共享,而利用分片传输的方式来提高路由器之间数据文件传输的性能,避免因传输过程中出现丢包、接收方乱序及断点续传等问题的出现;同时,由于通过采用分片传输的方式进行数据文件的共享,还使得系统的传输层可不依赖具体的协议,就能实现诸如TCP或UDP等各种类型的数据传送,在提高系统灵活性的同时,能够有效降低路由器之间数据共享的难度,利于推广应用。
下面结合附图和具体实施例对本发明的像素阵列及包括该像素阵列的显示器件的制备方法进行详细说明。
图1为本申请实施例中路由器之间进行数据文件共享的系统的网络拓扑图,图2为本申请实施例的路由器之间进行数据文件共享的系统中第一路由器向第二路由器发送数据文件的模块结构示意图,图3为本申请实施例中路由器对待分析数据文件进行分片化操作步骤的流程示意图;如图1所示,一种路由器之间进行数据文件共享的系统包括:
具有数据文件存储及发送的第一路由器1,且第一路由器1的第一存储设备(图中未标示)中储有待共享数据文件;与上述的第一路由器1匹配的第二路由器2,即该第二路由器2也具有数据文件存储及发送的功能,同时该第二路由器2也具有用于数据存储的第二存储设备(图中未标示),且该第二存储设备的存储容量大于上述待共享数据文件的大小,以便于接收并存储该待共享数据文件,进而实现数据文件的共享;设置在同一公网7(如因特网等)中的中继服务器3和控制服务器4,第一路由器1则通过第一NAT设备5连接至上述的公网7,即该第一路由器1与中继服务器3通信连接;相应的,第二路由器2通过第二NAT设备6也连接至上述的公网7,以使得该第二路由器2也与中继服务器3通信连接,即该中继服务器3可用于建立其与第一路由器1、第二路由器2之间的数据通道,以对第一路由器1与第二路由器2进行共享的数据文件进行转发;上述的控制服务器4在分别通过第一NAT设备5与第一路由器1通信连接、通过第二NAT设备6与第二路由器2通信连接的同时,还与上述的中继服务器3连接,以建立第一路由器1、第二路由器2及中继服务器3之间的控制链路,即接收/发送数据文件共享的命令,进而控制第一路由器1、第二路由器2及中继服务器3的工作,实现第一路由器1与第二路由器2之间数据文件的共享。
优选的,本实施例路由器之间进行数据文件共享的系统还包括连接至第一路由器1的第一用户终端(图中未标示),以及连接至第二路由器2的第二用户终端(图中未标示);上述的第一、二用户终端均可为安装有数据文件共享功能APP的手机、平板电脑等可移动的通信设备终端。
如图2所示,上述的第一路由器1具有第一发送接口11、第一接收接口12、第一汇聚模块13和第一TCP/UDP端口(TCP/UDP socket)14,且第一发送接口11和第一接收接口12均通过第一汇聚模块13与第一TCP/UDP端口14通信连接;第二路由器2具有第二发送接口21、第二接收接口22、第二汇聚模块23和第二TCP/UDP端口(TCP/UDP socket)24,且第二发送接口21和第二接收接口22均通过第二汇聚模块23与第二TCP/UDP端口24通信连接;即上述的第一路由器1、第二路由器2均具可划分三层结构:接口层,包括上述的第一发送接口11、第二发送接口21、第一接收接口12和第二接收接口22,第一发送接口11主要负责将待共享的数据文件传送给第一汇聚模块13,第二发送接口21主要负责将待共享的数据文件传送给第二汇聚模块23,而第一接收接口12则主要负责从第一汇聚模块13接收待共享的数据文件,第二接收接口22则主要负责从第二汇聚模块23接收待共享的数据文件;汇聚层,即上述的第一汇聚模块13和第二汇聚模块23均可用于接收/发送数据分片发送的控制报文、对待共享数据文件进行分片及编号操作、将待共享数据文件的分片文件传送至相应的TCP/UDP端口、根据接收方反馈的需重传分片文件编号重传丢失的分片文件、从相应的TCP/UDP端口接收分片文件、根据分片文件编号按照既定顺序重组待共享数据文件及发送丢失或损坏等需重传的分片文件编号等操作;TCP/UDP层,即上述的第一TCP/UDP端口14和第二TCP/UDP端口24均具有标准的TCP或UDP网络连接协议。
进一步的,中继服务器3则具有转发模块31、与上述第一TCP/UDP端口14匹配的第三TCP/UDP端口32及与上述第二TCP/UDP端口24匹配的第四TCP/UDP端口33,且上述的第一TCP/UDP端口14通过第三TCP/UDP端口32与转发模块31通信连接,而第二TCP/UDP端口24则通过第四TCP/UDP端口33也与转发模块31通信连接。
基于上述实施例的基础上,本申请还提供了一种路由器之间进行数据文件共享的方法,由于上述的第一路由器1和第二路由器2均可具有数据发送和/或存储的功能,为了便于具体阐述,在本实施例中是以第一路由器1作为数据文件发送的一方,而第二路由器2则作为数据文件接收并存储的一方,即将第一路由器1中存储的数据文件共享至第二路由器2中,但本领域技术人员应当明白,第一路由器1和第二路由器2之间能够进行相互的数据文件的共享。下面就以第一路由器1将其第一存储设备中存储的待共享数据文件通过中继服务器共享至第二路由器2中的操作方法进行详细阐述:
参见图1~3可知,提供设置在同一公网7(如因特网(Internet))中且相互通信连接的中继服务器3和控制服务器4,并将第一路由器1通过第一NAT设备5连接至上述的公网7中,同时将第二路由器2通过第二NAT设备6也与上述的公网7连接,进而使得连接在第一路由器1上的第一用户终端能够依次通过上述的第一路由器1及第一NAT设备5与公网7通信连接,使得连接在第二路由器2上的第二用户终端也能够依次通过上述的第二路由器2及第二NAT设备6通信连接至公网7上。
优选的,上述的第一用户终端及第二用户终端均可为安装有可用于路由器间进行数据文件共享功能的应用软件(APP)的手机、平板电脑等移动通信终端设备,并通过上述的应用软件用户进行账号注册,以生成并存储第一路由器1与第一用户终端之间的绑定关系及第二路由器2与第二用户终端之间的绑定关系均存储在上述的控制服务器中。
如图1所示,启动上述的第一路由器1和第二路由器2后,建立控制服务器4与上述第一路由器1、第二路由器2及中继服务器3之间的TCP长链接(即图1中所示的黑色双向箭头),以用于传送控制信令。
然后,第一用户终端依次通过第一路由器1及第一NAT设备5并利用上述的公网7连接至控制服务器4,以发送存储在第一路由器1中的待共享数据文件的共享请求,即第一用户通过移动通信终端设备中的APP触发待共享数据文件的共享请求;控制服务器4接收并根据该共享请求发送请求传送文件利用公网7并依次通过第二NAT设备6及第二路由器2至第二用户终端。
之后,若第二用户终端拒绝上述的共享请求,则控制服务器4结束共享操作的同时,可发送拒绝信息至第一用户终端;否则,第二用户终端回复确认信息至控制服务器4后,该控制服务器4通知中继服务器4开启两个服务端口(如TCP端口或UDP端口);该两个服务端口中端口Rs(即图2中所示的第三TCP/UDP端口32)用于接收第一路由器1上传的数据,而端口Sc(即图2中所示的第四TCP/UDP端口33)则用于将端口Rs接收到的数据发送给第二路由器2。
进一步的,中继服务器4开启上述的端口Rs和端口Sc后,将两个服务端口的ip地址、端口号与协议类型等相关端口参数信息发送至控制服务器3;控制服务器3再将端口Rs的端口参数信息发送至第一路由器1,将端口Sc的端口参数信息发送至第二路由器2,并通知该第一路由器1和第二路由器2分别向中继服务器4建立各自的数据通道;之后,第一路由器1通过其自身的第一TCP/UDP端口14与第三TCP/UDP端口32建立第一数据通道d1,而第二路由器2则通过其自身的第二TCP/UDP端口24与第四TCP/UDP端口33建立第二数据通道d2,且第一路由器1和第二路由器2各自返回执行成功的状态至控制服务器4,以确定数据通道建立成功。
进一步的,控制服务器4在确认上述数据通道建立成功后,通知第一路由器1开始发送上述的待共享数据文件,通知第二路由器2开始准备接收上述的待共享数据文件,并基于上述的数据通道(即第一数据通道d1和第二数据通道d2),第一路由器1通过上述的中继服务器3将上述待共享数据文件传送至第二路由器2中,且在进行待共享数据文件传送的过程中,所有的信息交互动作均可基于上述的第一数据通道d1和/或第二数据通道d2进行发送。
最后,在第二路由器2接收并完成待共享数据文件的完整性校验后,发送成功接收文件的消息至控制服务器4,该控制服务器4通知上述的第一路由器1、第二路由器2及中继服务器3回收相关的资源,以完成上述待共享数据文件的共享操作。
优选的,在完成上述待共享数据文件的共享操作的同时,控制服务4可分别通过上述第一路由1及第二路由器2发送共享成功的信息至第一用户终端和第二用户终端,以告知待共享数据文件的共享操作已完成。
优选的,上述的第一路由器1以分片传输的方式向第二路由器2发送待共享数据文件,且该第一路由器1在向第二路由器2传送待共享数据文件时,可先发送待共享数据文件信息至第二路由器2,该第二路由器2根据接收的待共享数据文件信息进行初始化操作;若初始化操作失败则结束共享操作;否则,返回接受消息至第一路由器1,该第一路由器1对待共享数据文件进行分片化处理操作。
优选的,上述的待共享数据文件信息包括有待共享数据文件的名称、文件ID、大小、类型、编号顺序及分片大小等信息;而第二路由器2进行的初始化操作则包括有磁盘剩余空间检查,若该第二路由器2中的磁盘剩余空间(即第二存储设备中剩余的存储空间)小于上述的待共享数据文件的大小,则返回拒绝消息至第一路由器1,以便于结束共享操作;此时,还可同时反馈磁盘存储空间不足分别至第一用户终端和第二用户终端,以便用户知晓共享操作失败的原因。
优选的,参见图3可知,上述的对待共享数据文件进行分片化处理的步骤包括:
步骤A:利用第一路由器1将待共享数据文件转换为若干个分片文件,并对该若干个分片文件按照既定顺序进行编号;即第一路由器1利用其自身的发送接口11将待共享数据文件发送至第一汇聚模块13,并利用该第一汇聚模块13将待共享数据文件划分成n(n为正整数且大于1)份,并可按照既定顺序(如按照递增或递减的方式)对该n份分片文件进行编号;如按照递增的方式进行编号,则第1~(n-1)份文件的大小等于分片大小,而第n份文件的大小则为待共享数据文件剩余部分的大小,且该第n份文件的大小较优的小于上述的分片大小;同时,第一路由器1将该第1~n份文件均标记为“需要发送的分片”。
步骤B:基于分片文件的编号,第一汇聚模块13可按照任意顺序将上述“需要发送的分片”所对应的分片文件经中继服务器3发送至第二路由器2中。
步骤C:第二路由器2对每个分片文件均进行完整性检查,以获取并发送未被正确接收的分片文件的编号至第一路由器1中,在记录正确接收的分片文件的编号的同时,将该未被正确接收的分片文件均标记为“需要发送的分片”,并继续步骤B;
步骤D:每个上述的分片文件均被正确接收后,第二路由器2根据编号按照既定顺序将接收的分片文件拼接成上述的待共享数据文件。
优选的,上述步骤A中第一路由器1将待共享数据文件分成若干个分片数据,并添加头部数据至每个所述分片数据,以形成上述的若干分片文件;且该头部数据包括文件ID、编号、当前分片文件的长度和当前分片文件的CRC值等信息。
优选的,上述的步骤C具体包括:
步骤C1:第二路由器2对每个分片文件均进行完整性检查;
步骤C2:判断是否有未被正确接收的分片文件;若有未被正确接收的分片文件,则进行继续步骤C3;否则,继续步骤D;
步骤C3:获取并发送未被正确接收的分片文件的编号至第一路由器1中,在记录正确接收的分片文件的编号的同时,将该未被正确接收的分片文件均标记为“需要发送的分片”,并继续步骤B。
优选的,上述的步骤C中第二路由器2对接收的分片文件中头部数据以后的内容进行CRC计算,并将计算获取的CRC值与头部数据中包括的CRC值进行比较;若获取的CRC值与头部数据中包括的CRC值相等,则分片文件被正确接收;否则,该分片文件未被正确接收。
需要注意的是,本申请实施中的第一路由器1和第二路由器2均可为家庭网关。
综上所述,本发明的上述实施例中,通过利用公网中的中继服务器进而实现NAT环境下路由器之间数据文件的共享,而基于分片传输的方式进行的数据文件共享,在有效的避免数据在传输的过程中出现的丢包、接收乱序及断点续传等问题出现的同时,还使得系统的传输层能够不依赖具体的协议,便能够实现路由器之间数据的传送,进而有效的降低路由器之间数据共享的难度,利于其推广应用。
对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容,都应认为仍属本发明的意图和范围内。