BT种子 & 磁力链接 是什么?

[科普向] BT 种子、磁力链接到底是什么?

BitTorrent

我们平时所说的 BT 种子,实际上指的是由 BitTorrent 协议所生成的一个包含资源信息的文件。与传统的网络传输协议不同,BitTorrent 协议是一种以 Peer-To-Peer(P2P) ,即 用户对用户 模式为主的资源分享协议,采用的是一种 去中心化 的思想,不需要一个专门的文件发布者或者发布平台。

bt

我们平常所使用的 HTTPFTP 等协议需要一个 中心发布者 在网络上发布文件,即一种 点对多 的形式。当然,如果中心发布者由于某种原因被 ban 或者删除了资源,那么我们就无法下载到心爱的 小姐姐 资源了。

传统协议

所以,从理论上来说,一个 bt 种子只要发布了,种子所包含的资源就 永远 存在于互联网上。


BitTorrent 协议的 思想 是将一个文件划分为 大小相等 的 n 块,块大小必须为 2 k 2^k 2k 的整数次方。例如一个 100M 的文件,按照每块 1024k 的大小被分为 100 个小块,每块块中包含 索引信息Hash 值,而我们的下载过程实际上就是 块的交换过程。

块

BitTorrent 协议的资源发布者会根据要求,制作一个包含资源下载信息,例如 Tracker 服务器地址文件大小文件名块文件大小 等信息的 .torrent 文件,这个过程也就是我们平时说的 做种

下图是我利用 BitComet 软件做的一个种子,大家可以看一下。

做种

如果我们要下载 BT 资源,首先要得到对应的 .torrent 文件,然后用专门的下载软件,例如 BitComet、qBittorrent、utorrent 等进行下载,下载过程大概为:

  • 读取 .torrent 文件信息,载入内存
  • 得到文件内的 Tracker 地址,连接 Tracker 服务器
  • Tracker 服务器回应下载请求,记录你的 IP 并告知其它下载者的 IP 地址
  • 你与其他在线的下载者连接,交换各自没有的块
  • 验证得到的块信息,若不同,则需要重新下载

由此可以看出,Tracker 是很重要的一个东西。一但 Tracker 服务器被封,我们也都无法进行下载了。由此,磁力链接 诞生了。

磁力链接

磁力链接(Magnet URI scheme),是对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的统一资源定位符不同,磁力链接是基于元数据(metadata)文件内容,属于统一资源名称

例如这一串链接:

magnet:?xt=urn:btih:53SWOUDWKG6ORSKTJHHE3QXTIBOGU5WU

magnet 为协议名;xt 表示资源定位点; urn:btih 表示 Hash 方法名,最主要的就是后面唯一的一串 40 位 16 进制的数字。磁力链接利用 DHT 技术(分布式哈希表,Distributed Hash Table)和 PEX (Peer Exchange)实现了资源的 “随意” 传播,根本无法禁止。

磁力链接下载的本质是将每一个人都变为 Tracker 服务器,将资源与下载者对应起来,每位下载者保存 部分 信息。这样,在下载资源时,只需寻找拥有所需资源的下载者。

打个比方,A 认识 B,B 认识 C, C 认识 D 和 E;如果 A 想认识 E,就可以通过 B 和 C 的介绍来认识 D,不需要 A 一个个去寻找 E。

具体原理比较复杂,可以去看 回形针 的 视频 详细了解


如何下载?

讲了这么多,那如何下载 BT种子 或者 磁力链接 呢?

使用专门的客户端

在互联网上的常见的支持 BT 下载的客户端有 BitCometuTorrentqBitTorrentMotrixFDM 等,当然,最重要的还是 Tracker 服务器,可以通过 GitHub 上的一个 项目 来获取到比较好的 Tracker 地址。

第三方支持

百度网盘、115 网盘、迅雷等软件也可以下载。但由于版权和一些其它问题,大家懂的都懂,效果不是太理想。

自己动手,丰衣足食

有条件的可以使用 Aria2 来自己动手搭建



以上内容仅供简单科普,部分地方措辞等可能不太准确或出现错误,请多多包涵~

错误的地方可向我说明,我会尽量修改~

参考链接

BitTorrent协议与MagNet协议原理

回形针:别再问我什么是 BT 种子

BT种子的原理是什么?

wiki-BT

wiki-磁力链接

  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Python的for循环嵌套示例: ```python for i in range(3): # 外层循环,循环3次 for j in range(5): # 内层循环,循环5次 print("*", end=" ") # 在控制台输出* print() # 换行 ``` 这段代码会在控制台中输出以下字符样式: ``` * * * * * * * * * * * * * * * ``` 这个示例演示了如何使用for循环嵌套来输出一定数量的*字符。外层循环控制行数,内层循环控制每一行的*字符数量。通过嵌套使用for循环,我们可以方便地实现重复执行的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python基础 之for循环嵌套实例](https://blog.csdn.net/qq_31129697/article/details/107938378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python for循环案例-python 学习笔记(六)for循环、for嵌套循环案例](https://blog.csdn.net/weixin_37988176/article/details/109372327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值