1 HTTP/HTTPS 下载

有小伙伴会问,这个协议不是用来浏览网页的时候用的吗?

其实不然,用来下载文件一样可以,本质上都是从服务器拉取资源到本地,不同的是网页内容被渲染到浏览器上,而文件直接放在你的下载目录。

将文件资源放到服务器上,然后由服务器传送到不同的用户机器上,称为 Client-Server Model 简称 C/S 模式,或者叫一对多模式,这是一种中心化的下载模式。

缺点很明显:因为服务器的上行带宽(上传速度)有限,如果同一时刻下载同一文件的用户太多,会影响到下载速度。

正因如此,大容量文件如电影一般不会使用 HTTP 协议进行下载。

例如一些常见软件的下载用的就是 HTTP 协议的方式:

右键复制得到的下载链接:
http://down.crsky.com/soft/201909/TencentVideo-v10.23.4705.0.zip

2 FTP/SFTP 下载

全称 File Transfer Protocol,即文件传输协议

这个其实跟 http 一样,都为中心化的下载模式。不过看名字也知道,这个是比较专业的下载协议,主要区别如下:

  • ftp 一般有身份验证,http 一般没有

  • ftp 是压缩传输,http 一般不压

  • ftp 可以上传,http 一般不能

  • ftp 是双 TCP 连接,http 单的

3 BT 下载

BT,即 Bit Torrent 协议:俗称比特洪流、BT 下载(变态下载??)。采用的 P2P 模式,专门为大容量文件的共享而设计。

弄懂 BT 下载,先来了解 P2P。它全称 Peer to Peer,意为“对等”:

  1. 它是无中心服务器的对等网络系统,而上文说的 C/S 模式是有中心服务器的中央网络系统

  2. 对等网络的每个节点既是客户端,也是服务端。所以用户既可以自己下载文件,也可以上传文件给别人下载。

  3. 所以它叫用户群对用户群( peer-to-peer )模式。用户越多,下载同一文件的人越多,下载该文件的速度就越快

注意:这里跟之前暴雷的 P2P 网贷有相似之处,本质上都是对等网络的思想,所以人们习惯把这种模式的都叫做 P2P。

这里再举个例子充分说明下:为什么下载同一文件的人越多,下载该文件的速度就越快?

假设现在有 6 台电脑,分别叫一毛,二毛……六毛, 他们互相连接着,组成了一个网络。

有一天一毛得到一部小电影,其他五个毛都想要,于是一毛就把小电影复印了五份分别给了其他五个毛。

这就是传统下载。

但是其实还能这样,一毛先把小电影给二毛,后面三毛也想要。

于是一毛跟二毛分别复印小电影的一半同时给三毛,以此类推,四毛想要小电影,那么一二三毛就分别复制小电影不同的三分之一给四毛,四毛再把它们合并起来。

等到五毛想要小电影的时候,由于另外四个毛都有小电影了,那么其下载获取的速度会更快。

不是有首歌在传唱它们的故事吗?

" 啊二毛,你比一毛多一毛 ~ 啊啊,二毛,你比三少一毛~ "

这种去中心化的方式,其好处不言而喻:

  • 速度快。众人拾柴火焰高。

  • 减轻服务器压力。众人平摊了。

与此同时的坏处就是:盗版泛滥。与有中央服务器的网络系统不同,BT 下载节点能遍布整个互联网,所以资源也是分散的,因此无法进行处理。

一个简单的 BT 种子包含了文件的名字、大小,分块后每块文件的大小、哈希值,以及 Tracker 服务器的地址。(种子:即 .torrent 文件。)

Tracker,即追踪服务器,它对于 BT 下载来说非常重要,通过 Tracker 我们才能找到此资源其他下载者的联系方式,它相当于指路人。

当你用下载软件打开种子,就会开始联系种子文件里内置的 Tracker 服务器,告诉 Tracker 我要下载这个文件,服务器会记录下你的 IP,并把其他正在下载或下载完成此资源的人的 IP 返回给你,这样你们就可以相互成就,在获取发布者该资源的同时,彼此之间也交换该资源。

4 磁力下载

传统的 BT 下载由于 Tracker 服务器中心化的问题,导致被毁灭打击。那有没有办法让这个所谓的 Tracker 服务器的功能去中心化呢?

当然有的,那就是DHT网络技术

先来看看网上的解释:

DHT 全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据, 从而实现整个 DHT 网络的寻址和存储。使用支持该技术的 BT 下载软件,用户无需连上 Tracker 就可以下载,因为软件会在 DHT 网络中寻找下载同一文件的其他用户并与之通讯, 开始下载任务。

举个例子解释:

  • 把 DHT 网络比作一个朋友圈子,当你被 A 带进这个朋友圈,此刻你就只认识 A 而已

  • 但是你的目的是想找普京总统,所以你就问 A 要普京的联系方式,但是 A 也没有普京的联系方式, 他介绍了一个俄罗斯朋友 B 给你认识

  • 于是你去问 B 要普京的联系方式,B 其实也没有普京的联系方式,但是 B 认识一个莫斯科市长 C 于是你又得到了 C 的联系方式,C 把普京的联系方式告诉你之后,你就可以写信给普京了

通过上面的例子我们可以得知,DHT 的作用实际是把所有网络的所有节点都变成一个小型 Tracker 服务器,这样就成功解决了传统 BT 下载的问题了。

注:

  1. BT 下载和磁力下载,在本质都是 P2P 下载;区别仅仅是寻找其他下载者的方式不同

  2. 磁力链接并不是取代 BT 种子文件,而是在没有 Tracker 服务器的情况下, 可以用一小段链接方便的在 DHT 中找到种子文件

磁力链接示例:
magnet:?xt=urn:btih:761185c0724de8db4362941571ea2c1e16ea950b&dn=Love%2C+Simon+%282018%29+%5BWEBRip%5D+%5B1080p%5D+English&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.zer0day.to%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969

5 ED2k 下载

eD2k 链接对应的客户端,如 eMule 电骡是共享软件,而 Magnet 磁链对应的 BT 软件则是下载软件。这让它们在使用上,有着很多根本性的区别:

  • BT 使用的时候,只要你不下载东西你就不会上传

  • eMule 电骡不同,比如,开启 eMule 电骡后,第一件事做的并不是什么下载,而是设置共享目录,该目录中的所有文件,都会实时共享到 eD2k 网络中。

  • 目录中共享了的文件都会生成 eD2k 链接,所有人通过相应的 eD2k 链接,都能够拿到你共享的文件,一旦有人下载相应文件,那么你的 eMule 客户端就会上传数据,换言之,你想下载别人的文件,需要别人开着 eMule 客户端

由于客户端对于大部分人来说配置起来十分复杂,加上更多人只想单纯的索取,如今使用 eD2k 分享资源的人已经很少了,这里我们就不再继续深入了解。

此刻窗外的风正在呼啸,气氛逐渐诡异,二毛凑上前去查看,大吃一惊,“不好!凶手不止一个!”.......

我是二毛,一个在大城市漂泊的程序猿。

我的故事未完待续......


Hi,我是二毛,一个在大城市漂泊的程序员

【故事】快进来!这次聊点奇怪的知识!

【故事】为了避免产品经理和程序猿干架,我用大白话讲清楚了浏览器缓存原理

【故事】跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激涕零,决定给我免除房租(上)

关注《程序员二毛》,后台回复 1024 领取变强秘籍;

【故事】P2P、BT、ED2k、FTP、磁力链接下载到底是什么鬼?相关推荐

  1. 一文读懂Bt种子、磁力链接、直链、p2p这些下载的区别

    什么是直链 什么是Bt种子 什么是磁力 什么是p2p 它们有什么区别,原理分别是什么 我们先说什么是直链 直链就是直接从服务器下载数据 他是我们日常生活中最最最常见的下载方式 我们从应用商店下载软件 ...

  2. linux命令行下载BT种子和磁力链接

    wget是linux下常用的命令行下载工具,是Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件.而tget是一个简单的命令行BT下载工具,可以用于BT种子和磁力链接的下载. tg ...

  3. BT 种子,磁力链接是个啥?

    [科普向] BT 种子.磁力链接到底是什么? BitTorrent 我们平时所说的 BT 种子,实际上指的是由 BitTorrent 协议所生成的一个包含资源信息的文件.与传统的网络传输协议不同,Bi ...

  4. # 解析bt文件_磁力链接和BT种子使用方法

    目前用的最多的是磁力链接和BT种子,不过好多人并不太会使用,因此写个教程给大家说明一下. 何为磁力链接:简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如http://x ...

  5. 一款好用的磁力链接下载工具,qbittorren中文版简单易用,漂亮的外观,功能强大

    qbittorren for mac一款好用的磁力链接下载工具,qbittorren中文版简单易用,漂亮的外观,功能强大.支持 Windows.Mac 和 Linux,且功能非常强大.qbittorr ...

  6. MyEclipse_2017_C9_For_Windows torrent磁力链接下载地址 date_2017/12/23

    原版下载地址-注册后下载: http://www.myeclipsecn.com/download/ Torrent/磁力链接: magnet:?xt=urn:btih:VHQCQSZ6G7LDSZH ...

  7. java 磁力链接下载_java构建磁力链接 返回数据解码

    前提上次说明了findnode的编码,就可以发送find_node的信息了 现在进行find_node的返回包进行解析 获取的字节信息不能直接转化为String然后在根据Bencode规则解码,这样获 ...

  8. 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别

    文章目录 参考资料 序言 中心化下载 http/https下载 ftp/sftp下载 http与ftp下载方式的不同 中心化下载的缺点 去中心化下载 BT种子下载 磁力下载 ed2k下载 推荐的下载器 ...

  9. Folx Pro 5 最好用的Mac磁力链接BT种子下载工具

    除了迅雷,还有哪个支持磁力链接下载?Mac电脑如何下载磁力链接?经常有小伙伴问老宅.今天,老宅给大家推荐Folx Pro For Mac,Mac系统超好用的磁力下载工具. Folx是一款功能强大且易于 ...

最新文章

  1. 机器学习PAL数据预处理
  2. MongoDB9高可用的MongoDB集群
  3. 全球30篇最热门的计算机视觉和深度学习论文
  4. 华为链路汇聚命令(静态)
  5. PHP实现带重试功能的curl连接示例
  6. vmware nat模式网络不通_笨笨狗教你如何解决VMware虚拟机桥接网络不通问题?
  7. python local_Python3中 对local和nonlocal 关键字的改善认识(新手向)
  8. Spring boot(十二):Spring boot 如何测试、打包、部署
  9. 为什么我们不应该使用过多的线程
  10. 大促背后的流量利器|手淘push升级 比你更懂你
  11. 在javaweb中实现excel的导入导出到数据库(mysql)
  12. ros::spin() 和 ros::spinOnce() 区别及详解
  13. [leetcode] 413. 等差数列划分
  14. .net oa 用到那些技术_惨绝人寰!OA高达834分却只配收拒信?
  15. SVN安装和使用详细教程
  16. 走进波分 -- 03.光纤传输系统关键参数
  17. Swift游戏实战-跑酷熊猫 14 熊猫打滚
  18. 相机意外断电导致视频保存成DAT文件,无法播放,如何修复视频文件?
  19. WiFi大师4.0.5源码最新独立版本
  20. 虚拟服务器设置虚拟内存,vmware虚拟机关于内存的一项设置,可以提高你的虚拟机运行效能-虚拟内存怎么设置最好...

热门文章

  1. zblogphp 广告联盟_天兴工作室:广告位大全插件(网站各种广告位集合效果)
  2. 3.5 函数的极值与最大值和最小值
  3. 一行代码解决IE6~IE8以及IE兼容模式下的兼容问题
  4. mysql修改初始化得到的密码
  5. 学分绩点计算器java_东南大学 学分绩点gpa 计算器 【源码】
  6. Fiddler抓包6-打断点(bpu)
  7. 基于遗传算法优化的BP神经网络
  8. 聚合函数与F/Q表达式
  9. CSS之标签选择器、ID选择器、类选择器
  10. python-socket-mysql-pyqt制作的服务器自动回复聊天功能