P2P、BT、ED2k、FTP、磁力链接下载到底是什么鬼?

news2024/11/17 10:26:50

1、HTTP/HTTPS 下载

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

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

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

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

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

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

 

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 中找到种子文件

 

 5 ED2k 下载

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

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

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

财富航向:企业为何急需财务管理软件?

随着市场的竞争日益激烈,企业对于财务数据的管理越来越重视。财务管理软件存在的好处越来越明显,它们可以帮助企业更好地管理财务信息并提高工作效率。 企业为什么需要财务管理软件? 1、方便管理财务数据 财务管理软件能够方便地管理与公司财…

教程学习:AutoQSAR

教程和练习文件从软件官网下载 内容: 1、拷贝教程提供的练习文件素材: 在软件的help中选择需要的教程,点击Copy to,可以将教程需要的文件拷贝到指定的文件夹里。点击Browse可以进行预览。 2、建立一个数值型的QSAR模型评估结合…

msvcr120.dll找不到是什么原因,怎样修复

msvcr120.dll的定义 msvcr120.dll是微软Visual C Redistributable软件包中的一个动态链接库文件。它是Microsoft Visual 所需的一个重要组件。这个文件主要用于支持和管理C语言编写的应用程序的运行。它包含了许多C的运行库函数和类,以便应用程序能够正常运行和调用…

2023-07-10:Kafka如何做到消息不丢失?

2023-07-10:Kafka如何做到消息不丢失? 答案2023-07-10: Kafka采用多种机制来确保消息的不丢失,其中包括副本机制、ISR(In-Sync Replicas)机制以及ACK机制等。 1.副本机制 Kafka通过副本机制来确保消息不…

【ElasticSearch】ES自动补全查询与Java接口实现

文章目录 1、安装拼音分词器2、自定义分词器3、completion suggester查询4、hotel索引库更新5、代码修改6、RestAPI实现自动补全7、需求:搜索框实现自动补全 自动补全就是当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项。 1、安装拼音分词…

“小程序化”,一种创新的超级App开发模式

超级App是一种集成了多个功能和服务的移动应用程序,它在一个平台上提供了广泛的服务和体验。超级App通常具有大量的用户群体和高度活跃的用户社区,通过提供便利、多样化的功能,吸引用户在一个应用中完成多个任务和满足多个需求。 与传统的单…

postgresql 数据库 重建索引 所需时间测试

postgresql 数据库 重建索引 所需时间测试 文章目录 postgresql 数据库 重建索引 所需时间测试前言测试前准备重建索引前数据库状态测试计划重建索引命令测试开始1.先对表2进行测试2. 表3测试3. 表1测试 🌈后记 前言 众所周知,postgresql数据库使用久了…

【业务功能篇42】ThreadPoolTaskExecutor多线程处理耗时较高的数据接口

业务场景:当前业务模块中,有个查询产品直通率接口,随着数据量的递增,百万级数据,并且需要并表的情况下,那么返回数据就会开始变慢,而在数据层方面,已经比较难去做进一步的sql优化&am…

一致性哈希算法小结

在实际生产应用中,经常会设置多台服务器共同组成一个集成对外提供服务,为了确保合理的分配来自客户端的请求,我们会采取负载均衡的策略。例如采用「轮询」的方式让每个节点都能公平的接收到请求;采用「加权轮询」的方式让硬件配置…

MySQL-MySQL分组查询每组最新的一条数据

方法一: 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘se_jck的博客-CSDN博客 这个错误是由于 MySQL 的新版本中默认开启了ONLY_FULL_GROUP_BY模式,即在 GROUP BY 语句中的 SELECT 列表中&am…

[MMDetection]测试模型

以下是基于MMdetection3.10版本 1、简单测试模型 测试模型一般使用tools中的test.py,一般使用方式 python tools/test.py config文件路径 权重文件路径 可以通过--show 来以gui展示检测结果 python tools/test.py config文件路径 权重文件路径 --show 可以通过--s…

【Linux】部署Prometheus + Grafana简介、监控及设置告警详细操作(多种方式安装,亲测无问题)

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 一、环境准备二、部署 Prometheus&am…

优思学院|精益管理入门书籍有哪些推荐?

精益管理是一门易学难精的学问,如果对其基本原则了解不正确,可能会误入歧途,不但不能发挥精益工具的威力,甚至会令企业走向错误的方向,反带来更多的浪费和捐失。以下将介绍几本经典的书籍,可以让你有效地、…

python简单使用【mac-ide:pycharm】

小白实用快捷键记录 一、Mac下安装并配置python3开发环境二、python学习三、pycharm常用快捷键记录 一、Mac下安装并配置python3开发环境 点我查看python及pycharm下载安装、环境配置 二、python学习 不是很推荐,想系统学习的同学可以做个参考: Pytho…

排序之玩转qsort函数——【C语言】

说起排序,我们会想起许多算法,在之前的博客中我也写到过,比如:冒泡排序法、快速排序法、选择排序法等等。其实在C语言中一直有一个可以将数组中的内容进行排序的函数且功能完善内容齐全的库函数——qsort函数。今天就让我们来探索…

OpenPCDet系列 | 8.2 nuScenes数据集的eval流程

0. eval转换的目标 模型的训练和测试过程输出结果是不一样的,对于训练过程是为了构建损失函数来进行训练,而对于测试过程是为了对object进行预测生成预测内容。下面以VoxelNeX检测器的类代码可见,training和testing将会输出两个内容。 clas…

C++数据结构笔记(7)——队列的顺序结构实现

1.队列&#xff0c;和现实生活中的规则类似&#xff0c;先进先出 2.队尾只允许元素进入&#xff0c;队头只允许元素退出 3.用数组来实现队列的顺序存储&#xff0c;无论哪一段都可以作为队头或者队尾 SeqQueue.h头文件 #ifndef SEQQUEUE_H #define SEQQUEUE_H #include<…

仿大众点评项目 —— Day02【优惠券秒杀、分布式锁】

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

Java字符串类

string类的理解(以JDK8为例说明) 1.1的声明 public final class String implements java.io.Serializable&#xff0c; Comparable<String>&#xff0c; CharSequence final:String是不可被继承的 Serializable:可序列化的接口。凡是实现此接口的类的对象就可以通过…

建筑施工脚手架安全技术统一标准

为统一建筑施工脚手架设计、施工、使用及管理&#xff0c;做到技术先进、安全适用、经济合理&#xff0c;制定本标准。 本标准适用于房屋建筑工程和市政工程施工用脚手架的设计、施工、使用及管理。 建筑施工脚手架的设计、施工、使用及管理&#xff0c;除应符合本标准外&…