知识背景
如何将自己的文件分享给其他人?
直链
实现
把该文件放在自己的服务器当中,其他人去对应网址下载软件。
举例
音乐软件缓存歌曲,小说网站下载小说,应用官网下载软件
缺点
- 所有人都去一个服务器下载,抢占网络带宽,导致每个人下载速度很慢
- 十分受分享方、服务器的影响,如果分享方或服务器受到影响就无法正常分享文件
BT
优化
不是全都从服务器下载,而是从已下载的人手中获取相对应的文件。
再优化方案,可以每个人都只下载某一部分文件,然后互相交换获取各自所需要的部分。(即p2p)
实现
制作一个种子文件,记录文件信息、分块大小,以及tracker服务器信息(用于获取谁有下载过该文件)。
缺点
- 还是无法摆脱服务器
- BT的资源分享上传全凭自愿,有些下载了某个文件的人不愿意将他的下载部分贡献出来
磁力
优化与实现
摆脱了服务器的限制。
让每个人都成为tracker服务器。在寻找“谁有下载过该文件”的信息时,会先进入到一个DHT网络,然后在这个网络里寻找tracker。(类似树上DFS)
举例
迅雷
PT
实现
将使用者限制在一个小圈子中,强制每个人只有上传了资源才能进行下载。上传数据量和下载数据量实现对等。