CN116471283A - 一种文件传输方法 - Google Patents

一种文件传输方法 Download PDF

Info

Publication number
CN116471283A
CN116471283A CN202310727834.1A CN202310727834A CN116471283A CN 116471283 A CN116471283 A CN 116471283A CN 202310727834 A CN202310727834 A CN 202310727834A CN 116471283 A CN116471283 A CN 116471283A
Authority
CN
China
Prior art keywords
service node
block
current
file
service
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
CN202310727834.1A
Other languages
English (en)
Other versions
CN116471283B (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.)
Beijing Leadal Technology Development Co ltd
Original Assignee
Beijing Leadal Technology Development 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 Beijing Leadal Technology Development Co ltd filed Critical Beijing Leadal Technology Development Co ltd
Priority to CN202310727834.1A priority Critical patent/CN116471283B/zh
Publication of CN116471283A publication Critical patent/CN116471283A/zh
Application granted granted Critical
Publication of CN116471283B publication Critical patent/CN116471283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种文件传输方法,属于文件传输技术领域,解决了文件传输效率低的问题。方法包括:多个服务节点建立对等网络连接;源客户端通过服务节点向目标客户端发送文件传输请求,若目标客户端确认连接请求,则源客户端根据网络带宽占用信息对待传输文件进行分块;源客户端通过服务节点向目标客户端发送分块文件数据包;若当前服务节点不是目标客户端对应的服务节点,则根据规划好的当前服务节点到达目标客户端对应的服务节点的路径,将分块文件数据包转发至下一个服务节点,直至当前服务节点为目标客户端对应的服务节点;若当前服务节点是目标客户端对应的服务节点,则将分块文件数据包发送至目标客户端。实现了高效的文件传输。

Description

一种文件传输方法
技术领域
本发明涉及文件传输技术领域,尤其涉及一种文件传输方法。
背景技术
伴随着互联网时代的发展,网络信息化的普及,各个领域对于技术及的需求量不断激增,对于信息交换的需求也越来越大,在这个信息化的时代,如何做到快速的数据交换是一个迫切需要解决的技术问题。
从计算机技术看,文件传输的传统方式大概可分为4种:FTP、网盘、文件传输软件、电子邮件等几种方式。在上述的文件传输方式中,发明人发现传统的文件传输方式都需要依赖一个具体服务,即发送者将需要传输的文件上传到服务,接收者从该服务上下载此文件;传输的具体效率主要取决于服务的网络,若服务的网络上下行带宽低于发送者和接收者,则传输效率就会收到影响导致传输效率低下。特别地,当传输服务的连接数过多,传输的数据量过大,服务器端处理这些数据所需要的CPU、网络IO、内存资源会伴随的数据大小,网络状况等呈非线性的增加,这样服务器就非常容易因为数据的积压而导致的内存溢出、CPU满载最终陷入瘫痪在传输效率上常常得不到保证。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种文件传输方法,用以解决现有文件传输效率低的问题。
一方面,本发明实施例提供了一种文件传输方法,包括:
在多个服务节点间建立对等网络连接;
源客户端通过服务节点向目标客户端发送文件传输请求,若目标客户端确认连接请求,则与源客户端连接的服务节点查询网络带宽占用信息并发送至源客户端,源客户端根据网络带宽占用信息对待传输文件进行分块;
源客户端通过服务节点向目标客户端发送分块文件数据包;
服务节点解析接收的分块文件数据包的目的地址,若当前服务节点不是目标客户端对应的服务节点,则根据规划好的当前服务节点到达目标客户端对应的服务节点的路径,将分块文件数据包转发至下一个服务节点,直至当前服务节点为目标客户端对应的服务节点;若当前服务节点是目标客户端对应的服务节点,则将分块文件数据包发送至目标客户端。
基于上述方法的进一步改进,新的服务节通过与对等网络中的任一服务节点连接加入所述对等网络中;
与新的服务节点连接的服务节点将对等网络的其他服务节点的节点信息及服务节点间的链路信息发送至新的服务节点;
与新的服务节点连接的服务节点通过向新的服务节点发送探测数据包,探测与新的服务节点间链路的链路信息,将新的服务节点的节点信息和探测得到的链路信息发送至对等网络的其他服务节点。
基于上述方法的进一步改进,以与源客户端连接的服务节点为第一节点,与目标客户端连接的服务节点为第二节点;
与源客户端连接的服务节点查询网络带宽占用信息,包括:
第一服务节点查询获取规划好的从第一服务节点到第二服务节点的最短路径;
最短路径上网络带宽占用率最高的链路的剩余带宽作为查询得到的网络带宽占用信息。
基于上述方法的进一步改进,源客户端根据网络带宽占用信息对待传输文件进行分块,包括:
根据网络带宽占用信息设置文件块阈值;
将待传输文件的起始位置作为当前起始位置;
滑动窗口置于当前起始位置;
计算当前滑动窗口内数据的指纹值,基于所述指纹值判断滑动窗口是否位于分块边界,若不是则向前滑动窗口直至滑动窗口位于分块边界或待传输文件的结尾;若位于分块边界或当前窗口位于传输文件的结尾,则将当前起始位置到当前滑动窗口截止位置的数据作为当前分块;
若当前分块小于等于文件块阈值,则计算当前分块的指纹,若存在与当前分块指纹相同的分块,则仅存储指纹相同分块的索引值作为当前分块的内容;否则,存储当前分块的数据和指纹作为当前分块的内容;
若当前分块大于文件块阈值,则根据文件块阈值将当前分块分割为多个子分块,依次计算每个子分块的指纹,若存在与子分块指纹相同的分块,则仅存储指纹相同分块的索引值作为子分块的内容;否则,存储子分块的数据和指纹作为子分块的内容;
若当前滑动窗口处于待传输文件的结尾,则分块结束;否则,将当前滑动窗的下一个位置作为当前起始位置;返回将滑动窗口置于当前起始位置步骤。
基于上述方法的进一步改进,采用以下方式判断是否存在与当前分块指纹相同的分块:
计算当前分块的哈希值作为当前分块的弱指纹值,判断已存储的分块中是否存在与当前分块的弱指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,计算当前分块的Md5值作为当前分块的强指纹,判断已存储的分块中是否存在与当前分块的强指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,不存在与当前分块指纹相同的分块。
基于上述方法的进一步改进,采用以下步骤得到规划好的当前服务节点到达目标客户端对应的服务节点的路径:
每个服务节点定期向其邻接服务节点发送探测数据包,探测服务节点与每个邻接服务节点间链路的链路信息;
基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径;根据每个服务节点到其他服务节点的最短路径得到当前服务节点到达目标客户端对应的服务节点的最短路径。
基于上述方法的进一步改进,所述链路信息包括链路的网络延迟、丢包率和带宽利用率;
基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径,包括:
基于探测数据包的发送时间、发送数量和探测数据包的大小计算链路的网络延迟、丢包率和带宽利用率;
基于链路的网络延迟、丢包率和带宽利用率计算链路的权重;
根据每条链路的权重计算每个服务节点到其他服务节点的最短路径。
基于上述方法的进一步改进,根据公式计算从服务节点/>到服务节点/>的链路的权重/>,其中,/>、/>和/>表示权重系数,/>表示服务节点/>到服务节点/>的链路的网络延迟,/>表示服务节点/>到服务节点/>的链路的丢包率,/>表示服务节点/>到服务节点/>的链路的带宽利用率。
基于上述方法的进一步改进,
根据计算服务节点/>到服务节点/>的网络延迟
根据计算服务节点/>到服务节点/>间的丢包率
根据计算服务节点/>到服务节点/>间的带宽利用率/>
其中,表示服务节点/>到服务节点/>的第/>个探测数据包的发送时间,表示服务节点/>收到服务节点/>的对第/>个探测数据包的响应数据包的时间,表示服务节点/>到服务节点/>发送的探测数据包的数量,/>表示服务节点/>收到服务节点/>的响应数据包的数量,/>表示服务节点/>到服务节点/>的第/>次探测的实时流量速率,/>表示服务节点/>到服务节点/>的链路的总带宽,/>表示服务节点/>到服务节点/>发送的探测数据包的数量。
基于上述方法的进一步改进,根据每条链路的权重采用Dijkstra 算法计算每个服务节点到其他服务节点的最短路径。
与现有技术相比,本发明通过构建对等网络,网络中的服务节点是对等的,服务节点仅进行连接和转发,无需读写数据,避免数据长时间在socket缓存区中而导致的内存溢出问题;文件数据以分块的形式进行传输,有效减小了服务节点的转发压力,提高文件传输的可靠性的同时也防止服务节点内存泄漏和服务满载的情况的发生。服务节点接收到分块文件数据包后根据规划好的路径,将文件转发至规划路径中的下一个服务节点,从而实时根据网络情况选择最优的传输路径进行数据传输,从而避免出现网络拥塞的情况,提高传输的效率。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件;
图1为本发明实施例文件传输方法的流程图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
本发明的一个具体实施例,公开了一种文件传输方法,如图1所示,包括:
S1、在多个服务节点间建立对等网络连接;
S2、源客户端通过服务节点向目标客户端发送文件传输请求,若目标客户端确认连接请求,则与源客户端连接的服务节点查询网络带宽占用信息并发送至源客户端,源客户端根据网络带宽占用信息对待传输文件进行分块;
S3、源客户端通过服务节点向目标客户端发送分块文件数据包;
S4、服务节点解析接收的分块文件数据包的目的地址,若当前服务节点不是目标客户端对应的服务节点,则根据规划好的当前服务节点到达目标客户端对应的服务节点的路径,将分块文件数据包转发至下一个服务节点,直至当前服务节点为目标客户端对应的服务节点;若当前服务节点是目标客户端对应的服务节点,则将分块文件数据包发送至目标客户端。
通过构建对等网络,网络中的服务节点是对等的,服务节点仅进行连接和转发,无需读写数据,避免数据长时间在socket缓存区中而导致的内存溢出问题;文件数据以分块的形式进行传输,有效减小了服务节点的转发压力,提高文件传输的可靠性的同时也防止服务节点内存泄漏和服务满载的情况的发生。服务节点接收到分块文件数据包后根据规划好的路径,将文件转发至规划路径中的下一个服务节点,从而实时根据网络情况选择最优的传输路径进行数据传输,从而避免出现网络拥塞的情况,提高传输的效率。
实施时,首先将多个服务节点进行连接搭建对等网络结构。
每个服务节点维护一个节点链路信息表和连接信息表。
节点链路信息表用于记录当前网络中的服务节点的节点信息和服务节点间的链路信息,节点信息包括每个服务节点的ID、地址、端口以及邻接服务节点ID;链路信息包括链路的网络延迟、丢包率、宽带占用率,以及每个服务节点到其他服务节点的最短路径。
连接信息表用于记录当前服务节点连接的客户端信息,包括客户端的ID、地址和端口。
实施时,为了更准确的检测网络连接情况,提高传输效率,采用以下步骤得到规划好的当前服务节点到达目标客户端对应的服务节点的路径:
S01、每个服务节点定期向其邻接服务节点发送探测数据包,探测服务节点与每个邻接服务节点间链路的链路信息;
S02、基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径;根据每个服务节点到其他服务节点的最短路径得到当前服务节点到达目标客户端对应的服务节点的最短路径。
具体的,所述链路信息包括链路的网络延迟、丢包率和带宽利用率。
每个服务节点定期(或按照需要)向其邻接服务节点发送探测数据包,探测当前服务节点与其邻接服务节点间的链路信息。实施时,探测数据包包括目的地址、探测包的类型(例如ICMP Echo请求)、探测包的大小。
发送探测数据包的服务节点记录发送时的时间戳,接收探测数据包的服务节点记录接收时的时间戳,并向发送的服务节点返回响应数据包,例如回复 ICMP Echo响应,发送的服务节点记录接收到响应数据包时的时间戳。发送探测数据包的服务节点根据发送和接收的时间戳,可以计算出 RTT(Round-Trip Time)即往返时延,即探测包从服务节点发送到邻接节点再返回服务节点所花费的时间。同时,发送探测数据包的服务节点记录发送的探测数据包数量和接收到的响应包数量。通过探测包的大小和返回时间可得到当前服务节点与邻接节点间链路的实时流量速率。
具体的,步骤S02基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径,包括:
S021、基于探测数据包的发送时间、发送数量和探测数据包的大小计算链路的网络延迟、丢包率和带宽利用率;
实施时,根据计算服务节点/>到服务节点/>的网络延迟/>
根据计算服务节点/>到服务节点/>间的丢包率
根据计算服务节点/>到服务节点/>间的带宽利用率/>
其中,表示服务节点/>到服务节点/>的第/>个探测数据包的发送时间,表示服务节点/>收到服务节点/>的对第/>个探测数据包的响应数据包的时间,表示服务节点/>到服务节点/>发送的探测数据包的数量,/>表示服务节点/>收到服务节点/>的响应数据包的数量,/>表示服务节点/>到服务节点/>的第/>次探测的实时流量速率,/>表示服务节点/>到服务节点/>的链路的总带宽,/>表示服务节点/>到服务节点/>发送的探测数据包的数量。
S022、基于链路的网络延迟、丢包率和带宽利用率计算链路的权重。
具体的,根据公式计算从服务节点到服务节点/>的链路的权重/>
其中,、/>、/>表示权重系数,可根据需要设置,三个权重系数的和为1。
每个服务节点定期根据探测链路信息更新节点链路信息表,将网络延迟、丢包率、带宽利用率和每条链路的权重保存在节点链路信息表中,并根据每条链路的权重计算每个服务节点到其他服务节点的最短路径。
需要说明的是,每个服务节点计算得到其与邻接节点的网络延迟、丢包率、带宽利用率和每条链路的权重信息后,会将这些信息广播至其他服务节点,从而使网络中的服务节点信息一致。
实施时,根据每条链路的权重采用Dijkstra 算法计算每个服务节点到其他服务节点的最短路径。根据每个服务节点到其他服务节点的最短路径得到当前服务节点到达目标客户端对应的服务节点的最短路径。
实施时,客户端通过与对等网络中的任一服务节点与对等网络连接。例如,源客户端与目标客户端分别与第一服务节点和第二服务节点建立连接。需要说明的是,任一客户端均可作为源客户端和目标客户端,仅是为了区分不同的文件处理方,并非固定的客户端。源客户端和目标客户端可能连接于不同的服务节点,也可能连接在同一个节点上,因此,第一服务节点和第二服务节点可能是不同的服务节点,也可能是同一个服务节点。
具体的,客户端通过以下方式与服务节点建立连接:
客户端向服务节点发送连接请求,连接请求中包括客户端地址和端口,服务节点接收到连接请求后为客户端生成ID,将客户端的ID、地址和端口保存在连接信息表中,并向客户端返回连接确认信息,从而使客户端和服务节点建立连接。
与服务节点建立连接后,源客户端通过服务节点向目标客户端发送文件传输请求。文件传输请求中包含源客户端ID、目标客户端ID、文件名、文件大小、MD5校验值。
与源客户端连接的第一服务节点接收到文件传输请求后,首先对文件传输请求数据包进行校验,判断该数据包是否为合法数据包,例如,客户端与服务节点建立的是TCP连接,则判断文件传输请求数据包格式是否符合TCP协议格式要求,若符合则进一步对文件传输请求数据包进行解析,否则丢弃该文件传输请求数据包。
第一服务节点对合法的文件传输请求数据包进行解析,得到目标客户端ID。第一节点通过向邻接服务节点发送广播查询包的形式查询目标客户端ID对应的服务节点,即目标客户端ID所连接的第二节点服务节点。
如果目标客户端也连接在第一服务节点上,即第二服务节点与第一服务节点为同一个节点,则第一服务节点直接将文件传输请求数据包发送至目标客户端。
若第一服务节点与第二服务节点为不同的节点,第一服务节点根据自身保存的节点链路信息表,查询从第一服务节点到第二服务节点的最短路径,将第二服务节点ID加入文件传输请求数据包中,将文件传输请求数据包转发至最短路径中的下一个服务节点。
每个接收到文件传输请求数据包的服务节点首先对数据包进行校验,校验过程和前述第一服务节点的校验过程相同,若为合法数据包,则对数据包进行解析,得到第二服务节点ID和目标客户端ID,否则丢弃接收的数据包。若当前服务节点为第二服务节点即目标客户端对应的服务节点,则将文件传输请求数据包发送至目标客户端,否则根据自身保存的节点链路信息表,查询从当前服务节点到第二服务节点的最短路径,将文件传输请求数据包转发至最短路径中的下一个服务节点。
目标客户端接收到文件传输请求后,通过第二服务节点向源客户端反馈连接响应信息。第一服务节点接收到连接响应信息后,若响应信息为确认连接,则与源客户端连接的服务节点查询网络带宽占用信息并发送至源客户端,用于源客户端对待传输文件进行分块。
实施时,也可通过被动连接方式使源客户端和目标客户端建立连接。源客户端基于待传输文件名、文件大小采用加密算法生成一个密钥,目标客户端通过向源客户端发送密钥信息从而使源客户端与目标客户端被动连接。
步骤S2中与源客户端连接的服务节点查询网络带宽占用信息,包括:
第一服务节点查询获取规划好的从第一服务节点到第二服务节点的最短路径;
最短路径上网络带宽占用率最高的链路的剩余带宽作为查询得到的网络带宽占用信息。
与源客户端连接的服务节点(即第一服务节点)将剩余带宽发送至源客户端,源客户端根据接收到的带宽占用率最高的链路的剩余带宽对待传输文件进行分块。
由于探测模块定期探测更新网络带宽占用信息,因此,可根据动态的网络带宽进行文件分块大小的调整,使得每个数据包的大小都能够充分利用当前的网络带宽,并且避免网络拥堵和数据丢失的情况的发生。
具体的,步骤S2中源客户端根据网络带宽占用信息对待传输文件进行分块,包括以下步骤:
S21、根据网络带宽占用信息设置文件块阈值;
S22、将待传输文件的起始位置作为当前起始位置;
S23、将滑动窗口置于当前起始位置;
S24、计算当前滑动窗口内数据的指纹值,基于所述指纹值判断滑动窗口是否位于分块边界,若不是则向前滑动窗口直至滑动窗口位于分块边界或待传输文件的结尾;若位于分块边界或当前窗口位于传输文件的结尾,则将当前起始位置到当前滑动窗口截止位置的数据作为当前分块;
S25、若当前分块小于等于文件块阈值,则计算当前分块的指纹,若存在与当前分块指纹相同的分块,则仅存储指纹相同分块的索引值作为当前分块的内容;否则,存储当前分块的数据和指纹作为当前分块的内容;
若当前分块大于文件块阈值,则根据文件块阈值将当前分块分割为多个子分块,依次计算每个子分块的指纹,若存在与子分块指纹相同的分块,则仅存储指纹相同分块的索引值作为子分块的内容;否则,存储子分块的数据和指纹作为子分块的内容;
S26、若当前滑动窗口处于待传输文件的结尾,则分块结束;否则,将当前滑动窗的下一个位置作为当前起始位置;返回步骤S23。
实施时,源客户端将作为文件块阈值对待传输文件进行分块。其中,/>表示缩小因子,例如可取值为0.9,/>表示带宽占用率最高的链路的剩余带宽。
确定分块阈值后,采用滑动窗口在待传输文件上进行滑动,判断分块的边界。实施时,滑动窗口通常取值为64kb或128kb。
初始时,待传输文件的起始位置作为第一个分块的开始的位置,滑动窗口置于第一个分块开始的位置,首先计算滑动窗口内待传输文件的数据的指纹,基于计算得到的指纹判断当前窗口是否位于分块的边界。
实施时,可采用计算窗口内数据的哈希值作为指纹值。
对指纹值求模 FW%D,判断计算结果是否等于预先设置的值R,若是,则当前窗口位于分块边界,否则当前窗口不在分块的边界。其中,FW表示当前窗口数据的指纹值,D和R为预先设置的整数,R<D。
如果当前窗口不是分块的边界,接续向下滑动窗口,采用前述方式计算窗口内数据的指纹值,判断窗口是否处于分块的边界,直至当前窗口位于分块的边界。实施时,滑动步长可设为固定大小,如8kb或16kb。
若判断当前滑动窗口处于分块的边界,则从分块的起始位置到当前滑动窗口的结束位置作为一个分块,即得到第一个分块。
若第一个分块小于等于文件块阈值,即第一个分块可以作为一个文件块发送,即得到索引为1的分块。计算第一个分块的指纹值,存储第一个分块的索引、指纹值和数据内容。将当前滑动窗口结束位置的下一个位置作为第二个分块的起始位置,将滑动窗口置于第二个分块开始的位置,按照前述同样的过程找到第二个分块的边界。
若第一个分块大于文件块阈值,则可能会造成网络拥塞,因此需要根据文件块阈值对第一个分块进一步分割。即将第一个分块按照每个子分块的大小分割成s个子分块,从第一个子分块到第s个子分块,即得到索引为1到s的分块,依次计算每个子分块的指纹值,当前分块的指纹值与已存储的分块的指纹值相同,则仅存储指纹相同分块的索引值作为当前分块的内容,否则,存储当前分块的数据和指纹作为当前分块的内容。指纹相同意味着数据相同,因此,若当前分块与之前的分块指纹相同,则不需要传输当前数据包的数据,仅发送相同指纹的分块索引即可,从而进一步减轻网路负担,提高传输效率。
将当前滑动窗口结束位置的下一个位置作为第s+1个分块的起始位置,将滑动窗口置于第s+1个分块开始的位置,按照前述同样的过程找到第s+1个分块的边界。
以此类推,实现对待传输文件的分块。
通过根据网络带宽信息对待传输文件进行分块,从而确保了分块文件在传输时不会导致网络拥塞,提高了传输的效率。
实施时,第一服务节点也可将目标客户端连接的服务节点的ID发送至源客户端,源客户端在生成传输文件数据包时可将该服务节点ID加入传输文件数据包中,从而便于服务节点快速进行文件传输,提高传输效率。
具体的,步骤S25中采用以下方式判断是否存在与当前分块指纹相同的分块:
计算当前分块的哈希值作为当前分块的弱指纹值,判断已存储的分块中是否存在与当前分块的弱指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,计算当前分块的Md5值作为当前分块的强指纹,判断已存储的分块中是否存在与当前分块的强指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,不存在与当前分块指纹相同的分块。
实施时,为了进一步判断是否存在相同指纹的数据块,对于当前数据块,可先计算分块的哈希值作为弱指纹值,判断是否存在相同弱指纹值的分块,若存在,则认为当前分块的指纹值与已存储的分块的指纹值相同,否则,计算当前分块的Md5值作为强指纹,判断是否存在相同强指纹值的分块,若存在,则认为当前分块的指纹值与已存储的分块的指纹值相同,否则,不存在与当前分块的指纹值相同的分块。从而准确判断是否存在数据相同的分块。
源客户端对待传输文件分块后,按照分块索引通过服务节点依次向目标客户端发送分块文件数据包。
服务节点解析接收的分块文件数据包的目的地址,若当前服务节点不是目标客户端对应的服务节点,则根据规划好的当前服务节点到达目标客户端对应的服务节点的路径进行规划,将分块文件数据包转发至下一个服务节点,直至当前服务节点为目标客户端对应的服务节点;若当前服务节点是目标客户端对应的服务节点,则将分块文件数据包发送至目标客户端。
具体的,第一服务节点首先接收到分块文件数据包,先对数据包进行校验,校验通过后,解析分块文件数据包得到目的地址,包括目标客户端连接的服务节点(即第二服务节点)和目标客户端。第一个服务节点判断自身是否是第二服务节点,若是,则在连接信息表中查询目标客户端,若存在目标客户端,将分块文件数据包发送至目标客户端。若不存在目标客户端,向源客户端返回发送失败信息。目标客户端接收到分块文件数据包后,解析分块文件数据包得到文件名、文件索引、文件块,并将文件索引和接收确认通过服务节点反馈至源客户端。源客户端接收到目标客户端的反馈信息后继续进行下一个分块文件数据包的发送。
若第一服务节点不是目标服务节点,则根据规划好的最短路径将分块文件数据包转发至下一个服务节点,下一个服务节点按照同样的方法判断自身是不是第二服务节点,如果不是继续根据规划的路径,将分块文件数据包转发至下一个服务节点,直至将分块文件数据包传输到第二服务节点。第二服务节点在连接信息表中查询目标客户端,若存在目标客户端,将分块文件数据包发送至目标客户端。
例如,第一服务节点根据其到达第二服务节点(目标客户端对应的服务节点)的最短路径,得到该最短路径上的下一跳服务节点A,将数据包转发至下一跳服务节点A,服务节点A判断自身是不是第二服务节点,若不是则根据其到达第二服务节点的最短路径,得到该最短路径上的下一跳服务节点B,将数据包转发至下一跳服务节点B,以此类推,直至转发至第二服务节点。
每个服务节点仅作为连接点和转发,无需读写数据,避免数据长时间在socket缓存区中而导致的内存溢出问题;文件传输过程中,文件数据以分块的形式分段进行传输,且当目标客户端确认第n段包接收成功后,源客户端才会发送第n+1段包,有效减小了服务节点的转发压力,提高文件传输的可靠性的同时也防止服务节点发送内存泄漏和服务满载的情况发送的概率。
目标客户端接收到分块文件数据包后,按照文件索引对分块进行重组得到完整文件,若确定出现文件缺失,可向源客户端发送对应的索引来传输对应的文件分块。
实施时,还可通过增加服务节点来扩展数据传输范围。
具体的过程为:
S51、新的服务节通过与对等网络中的任一服务节点连接加入所述对等网络中;
S52、与新的服务节点连接的服务节点将对等网络的其他服务节点的节点信息及服务节点间的链路信息发送至新的服务节点;
S53、与新的服务节点连接的服务节点通过向新的服务节点发送探测数据包,探测与新的服务节点间链路的链路信息,将新的服务节点的节点信息和探测得到的链路信息发送至对等网络的其他服务节点,其他服务节点更新自身的节点链路信息表。
当有新的服务节点加入网路时,通过与网络中的任一服务节点建立连接即可加入网络中。与新加入的服务节点连接的服务节点通过发送探测数据包,按照前述方法计算得到其与新加入服务节点间的链路信息,将新接入的服务节点的节点信息和探测得到的链路信息广播至网络中的其他服务节点,更新其他服务节点的节点链路信息表。
与新加入的服务节点连接的服务节点将自身存储的节点链路信息表大发送至新加入的服务节点,使新加入的服务节点获取网络中的节点和链路信息,便于后续进行路径规划。
本发明可方便快捷的增加服务节点,快速对网络进行扩展,从而增大数据传输范围,提高传输的可靠性和效率。并且每个服务节点既可以是接入节点也可以是转发节点,从而不需要设置专门的接入节点或转发节点,节省了资源和网络构建成本,并且简化了网络构建过程。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种文件传输方法,其特征在于,包括:
在多个服务节点间建立对等网络连接;
源客户端通过服务节点向目标客户端发送文件传输请求,若目标客户端确认连接请求,则与源客户端连接的服务节点查询网络带宽占用信息并发送至源客户端,源客户端根据网络带宽占用信息对待传输文件进行分块;
源客户端通过服务节点向目标客户端发送分块文件数据包;
服务节点解析接收的分块文件数据包的目的地址,若当前服务节点不是目标客户端对应的服务节点,则根据规划好的当前服务节点到达目标客户端对应的服务节点的路径,将分块文件数据包转发至下一个服务节点,直至当前服务节点为目标客户端对应的服务节点;若当前服务节点是目标客户端对应的服务节点,则将分块文件数据包发送至目标客户端。
2.根据权利要求1所述的文件传输方法,其特征在于,
新的服务节通过与对等网络中的任一服务节点连接加入所述对等网络中;
与新的服务节点连接的服务节点将对等网络的其他服务节点的节点信息及服务节点间的链路信息发送至新的服务节点;
与新的服务节点连接的服务节点通过向新的服务节点发送探测数据包,探测与新的服务节点间链路的链路信息,将新的服务节点的节点信息和探测得到的链路信息发送至对等网络的其他服务节点。
3.根据权利要求1所述的文件传输方法,其特征在于,以与源客户端连接的服务节点为第一节点,与目标客户端连接的服务节点为第二节点;
与源客户端连接的服务节点查询网络带宽占用信息,包括:
第一服务节点查询获取规划好的从第一服务节点到第二服务节点的最短路径;
最短路径上网络带宽占用率最高的链路的剩余带宽作为查询得到的网络带宽占用信息。
4.根据权利要求1所述的文件传输方法,其特征在于,源客户端根据网络带宽占用信息对待传输文件进行分块,包括:
根据网络带宽占用信息设置文件块阈值;
将待传输文件的起始位置作为当前起始位置;
滑动窗口置于当前起始位置;
计算当前滑动窗口内数据的指纹值,基于所述指纹值判断滑动窗口是否位于分块边界,若不是则向前滑动窗口直至滑动窗口位于分块边界或待传输文件的结尾;若位于分块边界或当前窗口位于传输文件的结尾,则将当前起始位置到当前滑动窗口截止位置的数据作为当前分块;
若当前分块小于等于文件块阈值,则计算当前分块的指纹,若存在与当前分块指纹相同的分块,则仅存储指纹相同分块的索引值作为当前分块的内容;否则,存储当前分块的数据和指纹作为当前分块的内容;
若当前分块大于文件块阈值,则根据文件块阈值将当前分块分割为多个子分块,依次计算每个子分块的指纹,若存在与子分块指纹相同的分块,则仅存储指纹相同分块的索引值作为子分块的内容;否则,存储子分块的数据和指纹作为子分块的内容;
若当前滑动窗口处于待传输文件的结尾,则分块结束;否则,将当前滑动窗的下一个位置作为当前起始位置;返回将滑动窗口置于当前起始位置步骤。
5.根据权利要求4所述的文件传输方法,其特征在于,采用以下方式判断是否存在与当前分块指纹相同的分块:
计算当前分块的哈希值作为当前分块的弱指纹值,判断已存储的分块中是否存在与当前分块的弱指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,计算当前分块的Md5值作为当前分块的强指纹,判断已存储的分块中是否存在与当前分块的强指纹值相同的分块,若存在,则存在与当前分块指纹相同的分块;否则,不存在与当前分块指纹相同的分块。
6.根据权利要求1所述的文件传输方法,其特征在于,采用以下步骤得到规划好的当前服务节点到达目标客户端对应的服务节点的路径:
每个服务节点定期向其邻接服务节点发送探测数据包,探测服务节点与每个邻接服务节点间链路的链路信息;
基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径;根据每个服务节点到其他服务节点的最短路径得到当前服务节点到达目标客户端对应的服务节点的最短路径。
7.根据权利要求6所述的文件传输方法,其特征在于,所述链路信息包括链路的网络延迟、丢包率和带宽利用率;
基于所述链路信息采用路径规划算法计算每个服务节点到其他服务节点的最短路径,包括:
基于探测数据包的发送时间、发送数量和探测数据包的大小计算链路的网络延迟、丢包率和带宽利用率;
基于链路的网络延迟、丢包率和带宽利用率计算链路的权重;
根据每条链路的权重计算每个服务节点到其他服务节点的最短路径。
8.根据权利要求7所述的文件传输方法,其特征在于,根据公式计算从服务节点/>到服务节点/>的链路的权重/>,其中,/>、/>和/>表示权重系数,/>表示服务节点/>到服务节点的链路的网络延迟,/>表示服务节点/>到服务节点/>的链路的丢包率,/>表示服务节点/>到服务节点/>的链路的带宽利用率。
9.根据权利要求7所述的文件传输方法,其特征在于:
根据计算服务节点/>到服务节点/>的网络延迟
根据计算服务节点/>到服务节点/>间的丢包率/>
根据计算服务节点/>到服务节点/>间的带宽利用率/>
其中,表示服务节点/>到服务节点/>的第/>个探测数据包的发送时间,/>表示服务节点/>收到服务节点/>的对第/>个探测数据包的响应数据包的时间,/>表示服务节点/>到服务节点/>发送的探测数据包的数量,/>表示服务节点/>收到服务节点的响应数据包的数量,/>表示服务节点/>到服务节点/>的第/>次探测的实时流量速率,/>表示服务节点/>到服务节点/>的链路的总带宽,/>表示服务节点/>到服务节点/>发送的探测数据包的数量。
10.根据权利要求7所述的文件传输方法,其特征在于,根据每条链路的权重采用Dijkstra 算法计算每个服务节点到其他服务节点的最短路径。
CN202310727834.1A 2023-06-20 2023-06-20 一种文件传输方法 Active CN116471283B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310727834.1A CN116471283B (zh) 2023-06-20 2023-06-20 一种文件传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310727834.1A CN116471283B (zh) 2023-06-20 2023-06-20 一种文件传输方法

Publications (2)

Publication Number Publication Date
CN116471283A true CN116471283A (zh) 2023-07-21
CN116471283B CN116471283B (zh) 2023-08-25

Family

ID=87177443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310727834.1A Active CN116471283B (zh) 2023-06-20 2023-06-20 一种文件传输方法

Country Status (1)

Country Link
CN (1) CN116471283B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117560368A (zh) * 2024-01-09 2024-02-13 北京华云安信息技术有限公司 基于多级节点网络的文件传输方法和系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394337A (zh) * 2007-09-21 2009-03-25 华为技术有限公司 基于p2p的网络节点间消息路由的方法、系统及装置
CN101599887A (zh) * 2008-06-05 2009-12-09 华为技术有限公司 对等网络中数据的传输方法和设备
CN101754319A (zh) * 2008-12-10 2010-06-23 华为技术有限公司 路由方法、装置及系统
EP2352261A1 (en) * 2008-10-27 2011-08-03 Huawei Technologies Co., Ltd. Path computation method, node device and path computation element
CN102868617A (zh) * 2011-07-05 2013-01-09 中兴通讯股份有限公司 一种p2p网络路由方法及系统
CN104142969A (zh) * 2013-11-27 2014-11-12 北京星网锐捷网络技术有限公司 数据分块的处理方法和装置
CN111277630A (zh) * 2020-01-13 2020-06-12 腾讯科技(深圳)有限公司 一种路由控制方法、装置、电子设备和存储介质
CN113595894A (zh) * 2021-07-28 2021-11-02 海尔数字科技(青岛)有限公司 服务节点间、客户端节点间通信方法、装置、设备及介质
CN114338650A (zh) * 2021-12-23 2022-04-12 中电金信软件有限公司 文件传输方法、装置、电子设备及可读存储介质
CN114866533A (zh) * 2022-04-28 2022-08-05 麦加芯彩新材料科技(上海)股份有限公司 一种文件上传方法、装置及电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394337A (zh) * 2007-09-21 2009-03-25 华为技术有限公司 基于p2p的网络节点间消息路由的方法、系统及装置
CN101599887A (zh) * 2008-06-05 2009-12-09 华为技术有限公司 对等网络中数据的传输方法和设备
EP2352261A1 (en) * 2008-10-27 2011-08-03 Huawei Technologies Co., Ltd. Path computation method, node device and path computation element
CN101754319A (zh) * 2008-12-10 2010-06-23 华为技术有限公司 路由方法、装置及系统
CN102868617A (zh) * 2011-07-05 2013-01-09 中兴通讯股份有限公司 一种p2p网络路由方法及系统
CN104142969A (zh) * 2013-11-27 2014-11-12 北京星网锐捷网络技术有限公司 数据分块的处理方法和装置
CN111277630A (zh) * 2020-01-13 2020-06-12 腾讯科技(深圳)有限公司 一种路由控制方法、装置、电子设备和存储介质
CN113595894A (zh) * 2021-07-28 2021-11-02 海尔数字科技(青岛)有限公司 服务节点间、客户端节点间通信方法、装置、设备及介质
CN114338650A (zh) * 2021-12-23 2022-04-12 中电金信软件有限公司 文件传输方法、装置、电子设备及可读存储介质
CN114866533A (zh) * 2022-04-28 2022-08-05 麦加芯彩新材料科技(上海)股份有限公司 一种文件上传方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117560368A (zh) * 2024-01-09 2024-02-13 北京华云安信息技术有限公司 基于多级节点网络的文件传输方法和系统
CN117560368B (zh) * 2024-01-09 2024-04-12 北京华云安信息技术有限公司 基于多级节点网络的文件传输方法和系统

Also Published As

Publication number Publication date
CN116471283B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
JP5740449B2 (ja) データ伝送方法および装置
US8694675B2 (en) Generalized dual-mode data forwarding plane for information-centric network
US11558302B2 (en) Data transmission method and apparatus
Pitkänen et al. Opportunistic web access via wlan hotspots
CN116471283B (zh) 一种文件传输方法
Marandi et al. BFR: a bloom filter-based routing approach for information-centric networks
Lei et al. An entropy-based probabilistic forwarding strategy in named data networking
US20120300781A1 (en) Packet Routing in a Network
Amadeo et al. Design and analysis of a transport-level solution for content-centric VANETs
CN101656653B (zh) 一种应用于多路径传输的接收缓存配置方法及装置
US11502956B2 (en) Method for content caching in information-centric network virtualization
US9548921B2 (en) Compression of routing information exchanges
CN102130756A (zh) 数据传输方法和装置
Ahdan et al. Adaptive Forwarding Strategy in Named Data Networking: A Survey
Song et al. Analytical modeling of optimal chunk size for efficient transmission in information-centric networking
Li et al. Opportunistic routing with data fusion for multi-source wireless sensor networks
CN116566973B (zh) 一种基于对等网络的文件传输系统
Kushwah et al. Multipath delay analysis using queuing theory for gateway selection in hybrid MANET
Pu Adaptive forwarding strategy based on MCDM model in named data networking
Jung et al. Novel fastest retransmission and rate control schemes for improving TCP performance in wireless ad hoc networks
AT&T
Kärkkäinen et al. Applications in Delay‐Tolerant and Opportunistic Networks
Xia et al. A deliver probability routing for delay tolerant networks (DTN)
Li et al. NER-DRP: dissemination-based routing protocol with network-layer error control for intermittently connected mobile networks
Shen et al. Prediction-based redundant data elimination with content overhearing in wireless networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant