论文部分内容阅读
网络文件下载(Network file download),其发展过程经历了HTTP、FTP多线程文件下载、P2P多源文件下载以及支持多种协议的多源多线程文件下载三个阶段。尽管Linux系统的下载工具简洁、高速、移植性强,但也存在着命令行操作相对不便,支持协议种类不多等缺陷,能同时支持HTTP、FTP、BitTorrent三种常见协议的下载工具更是稀少。因此,本文针对当前Linux下载工具存在的不足,主要完成如下几个方面的工作:1)对比当前Linux主要下载工具的优缺点,详细分析了HTTP、FTP、BitTorrent协议的工作原理、实现方法以及Linux多线程编程技术。2)针对随机邻居节点选择策略的缺陷,提出BitTorrent协议实现的邻居节点选择策略的改进算法。该算法既充分利用了邻居节点带宽,又最大限度地保证了从邻居节点处获得新文件片段的概率,提高了系统文件的交换速率。3)针对BitTorrent实现的激励机制无法在大量种子节点存在的网络中抑制贪婪节点搭便车行为的缺陷,提出根据节点贡献量分配种子上载带宽的分配机制。该机制能优化种子带宽的合理分配,有效地抑制贪婪节点搭便车行为的产生,缩短贡献节点的平均下载时间,提高系统运行的公正性。4)针对大量节点频繁的更新操作对Tracker服务器造成的负载过重以及随机选择连接节点造成的带宽损耗等缺陷,本文基于Cluster拓扑模型,提出基于邻居节点聚簇的文件分发系统模型,并给出节点加入策略、超级节点选择策略、节点离线策略的具体实现方法。5)结合本文对于协议实现方法的改进,构建了一种能同时支持HTTP、FTP、BitTorrent三种协议的基于命令行操作的多线程下载工具。其中,对于HTTP/FTP下载,详细描述了文件分块、断点续传与多线程同步的实现;对于BitTorrent下载,重点描述了种子解析模块、策略选择模块以及peer管理模块的实现。在系统测试中,通过对比wget、d4x、lftp、bittorrent等Linux主要下载工具的下载用时、平均速度以及内存使用情况,验证本文下载系统的稳定性与高速性。在仿真试验中,通过对比节点平均下载用时,验证算法和模型的可行性。