【09】第四章 | 有潜力的下载方式:Metalink,UDP 与 PT

Fairyex
01月25日

第四章 | 有潜力的下载方式:Metalink,UDP 与 PT

| 本文为付费栏目文章,您已订阅,可阅读全文 |
先提个问题,标题这三个英文名词,你曾经见过几个呢?如果曾经见过或者使用过一种以上,你已经可以自称下载研究专家;如果三种都用过?妥妥的下载老手,可以跳过科普直接看后面的操作教程了。
这三种下载方式,相信绝大部分人是一个都没有见过,更别说使用了。的确,它们要不太年轻资源太少,要不有资源却门槛太高,不过它们各自都有独一无二的优点,我非常相信这三种下载方式(至少一种)会成为未来下载的新主力军之一。
这节我会给大家一一介绍这三种下载方式是什么,和它们的优缺点。和前几篇科普不同,这节只是为了让大家对这几种下载方式有一个粗略的了解,知道原来还有这种操作。对其中的某一种特别有兴趣的派友可以亲自动手去尝试使用,相信会给你带来惊喜。

Metalink

我们先从最简单的 Metalink 开始,与 BT 和 eD2K 等下载协议不同,Metalink 是一个非常简单易懂的下载标准。简单描述就是 Metalink 文件储存了可以下载一个或多个文件的多种下载方式的多个地址,相当于让你可以同时用不同的下载方式下载同一个或多个文件。
以少数派大电影的 Metalink4.0 文件 Fairyex01HEVC_Ma10P.metalink 为例,用文本编辑打开它看到的是这样的内容:

<?xml version="1.0" encoding="UTF-8"?>
<metalink xmlns="urn:ietf:params:xml:ns:metalink">
     <!--发布时间-->
<published>2027-10-5T18:20:56</published>
<!--文件名-->
<file name="[Fairyex][The Big Story Of SSpai][01][2160P][HEVC\_Ma10P][MKV].mkv">
<!--文件大小-->
<size>168846654235</size>
     <!--文件标识(作者)-->
<identity>SSpai</identity>
<!--文件版本-->
<version>1.0</version>
<!--文件语言-->
<language>zh</language>
<!--文件描述-->
<description>这是少数派的大电影</description>
<!--文件指纹-->
<hash type="sha-256">36d622df738c86fece800fd8611eab7dc12dd57d661f2bfec602a590de331483</hash>
<!--url:普通下载地址,metaurl:P2P 下载地址,priority:优先级-->
<url location="zh" priority="1">ftp://ftp.sspai.com/moive.mkv</url>
<url location="zh" priority="1">https://sspai.com/moive.mkv</url>
<metaurl mediatype="torrent" priority="2">https://sspai.com/moive.torrent</metaurl>
<metaurl mediatype="magnet" priority="3">magnet:?xt=urn:sha1:YNCNHJKIWBTRNJIV4YUAE52SJUQFGY4A</metaurl>
</file>
</metalink>
是不是非常直白?
直白到你新建一个文本文件,按照上面格式照猫画虎地填入自己文件的数据, 就能创建这个文件的 Metalink(甚至都不用改文件格式名,txt 都行)。它并没有新酒,而是将不同的旧酒都装在一个新瓶子里,那这样子做的优点有啥呢?

Metalink 的优点

  1. 在用支持 Metalink 的下载客户端下载的时候,如果一个链接失效了,下载器会自动继续使用另一个链接继续下载。一个包含几十条 http、ftp、eD2K、种子地址和磁力链接的 Metalink 几乎不存在下载失败的可能(要是这几十条全部失效,你需要的不是这个文件,而是一个好运气......)
  2. 可以同时用不同的下载方式「混搭」下载文件的不同文件块(类似 BT 的文件分块),通过 Metalink 里面提供的多种文件校验方式实时校验文件,一旦发现下载错误的文件块会立即重新下载这部分文件块。
  3. 可以定义各种下载方式的优先级,比如我不想给少数派服务器太大压力,那么可以在 Metalink 文件里面设置优先用磁力链接下载大电影,如果磁力链接挂了再用 BT 种子下载,最后关头才用 http 从少数派服务器下载。
  4. 支持把下载信息包含在 HTTP 请求中,让用户不知道自己用的是 Metalink 方式下载。

Metalink (目前的)缺点

  1. 没人用资源少,目前主要还是开源软件和系统的官网下载用的比较多,像是 Linux 和 Fedora 等。而且很多时候人们察觉不到用了 Metalink 的方式下载。
  2. 国人常用的客户端不支持,虽然我们常用的迅雷和 Metalink 的原理差不多,不过正儿八经支持 Metalink 的大多是国外的下载客户端(EMule、Aria2 等)。不过你可以直接用文本编辑器打开 Metalink 文件提取里面的链接直接下载,这也算是一个另类的「优点」吧。

Metalink 官网
Metalink 的 官网
看看 Metalink 的优缺点就知道,只要使用的人多起来,它绝对是一个方便使用的下载方式。希望它能早日普及,让大家早日享受到它的好处。

UDP 协议

UDP 原理

UDP 全称 User Datagram Protocol,中文名「用户数据报协议」。
前面第一章关于多线程下载的部分我们也有讲过,TCP(Transmission Control Protocol 传输控制协议,HTTP 客户端与服务器传输数据的方法)设计之初非常为他人着想,能用少带宽办到的事情绝对不会申请更多的带宽,尽量留给其他人更多的带宽。而且 TCP 为了保证连接数据的可靠性,设计了许多复杂的机制,不仅需要多个请求来在客户端和浏览器之间建立连接,还有各种确认、窗口、重传、拥塞控制机制,最后还要不停断开连接以节省系统资源。
这些在以前网络质量还没有现在那么好的时候是非常有用的,不过随着网速和网络稳定性的提高,TCP 在某些场景就显得不那么合适了,这个时候 UDP 协议应运而生,它和 TCP 一样都是用来处理数据包的协议,不过 UDP 对数据包的操作很简单,基本上是「给啥发啥,传啥收啥」(不用像 TCP 那样各种请求和建立连接),客户端给他的数据和服务器发回来的数据都是直传,不对传送数据包进行可靠性保证,将这部分交给客户端负责。
UDP 最重要的地方就在于它是一个无状态的传输协议,这意味着它没有数据校验和拥塞控制的机制,也没有请求和连接,所以数据传输速度非常快,延时非常小,占用的资源也很少。UDP 缺少的机制虽然可以让数据变快,但同时对网络的要求也非常高(数据不能拥塞不能错误),在早期的网络中 UDP 的丢包率(数据包丢失的概率)高到几乎无法正常使用,所以一直没有广泛使用。现在的网络飞速发展,UDP 的丢包率早已降到 5% 以下,所以它开始在一些对于数据完整性要求不那么高的场景中完全替代 TCP,只是我们没有发觉而已。

TCP 和 UDP 对比

那些你猜不到的 UDP 应用场景

我们来看看 UDP 在那些场景已经被广泛使用。

下载

首先当然是下载方面啦,就以迅雷为例子,我们可以在迅雷的设置中看到 UDP 端口设置(迅雷默认会启用 UDP,没有关闭选项)。在非 P2P 下载(例如离线下载或者边下边看)的时候迅雷会用 UDP 传输数据,以保证我们能用最快的速度下载或者看到视频,还能节约服务器资源。有时候我们看到边下边看电影的时候可能会鬼畜一下,如果最后下回来的本地电影没有问题,那可能就是你的网络波动让 UDP 丢包了。

迅雷设置

流媒体

我们平时视频聊天或者看直播的时候都会遇到过卡顿或者色块等等现象,这就是因为它们都是即时性比较高但是对数据完整性不那么苛刻的场景,所以全部是用 UDP 的方式传输数据的,这些卡顿和色块就是因为 UDP 丢包了。其中基于 UDP 的协议 Google 家的 WebRTC 已经成了流媒体传输的通用标准,是视频直播网站们的标配。

实时游戏

TCP 协议一旦发生丢包,它会将后续包缓存起来,等前面的包重传并接收到后再继续发送,丢的包越多延迟会越来越大。这对于一些必须实时性的场景比如对战游戏来讲简直就是灾难。
所以无论是电脑上的 CS:GO,Dota,LOL;索尼,微软,任天堂主机上面所有游戏的网络服务;再到手机上的王者荣耀,阴阳师,荒野行动等都采用 UDP 作为数据传输的方式。加上自定义的重传策略,能够把丢包产生的延迟降到最低,尽量减少网络波动对游戏性造成的影响,这才让实时对战游戏成为可能。现在知道为什么游戏的延时会让人物各种闪现鬼畜了吧(比如王者荣耀的 460ms),因为 UDP 会跳过丢失的数据包直接处理后面接收到的数据。

王者荣耀游戏画面

物联网

另外一个最近大热的概念「物联网」也在设备之间的网络交流中用到了 UDP 协议,用以将网络控制的延时降低到与有线和红外遥控相差无几,而且还能降低设备的性能要求从而降低功耗。随着类似的场景越来越多,UDP 将会继续发光发热,直到有更好的协议将它代替。

PT 下载

之所以把 PT(Private Tracker,私有服务器)下载放到最后来讲,是因为它是下大文件最稳定也是门槛最高的下载方法。从英文名即可看出 PT 是将 BT 下载中开放的 Tracker 变为封闭私有的 Tracker,同时关闭 DHT 减少用户人数来达到建立资源爱好者们的「小圈子」的目的。
PT 的优势在于「保种」,普通的种子一旦过了热度最高的时候,下载人数会骤然降低,导致种子无法下载或者下载速度过慢。而 PT 论坛通过互利互惠的方式让论坛用户主动保持种子的热度,从而达到下载稀有资源和满速下载的目的。一般来讲国内 PT 论坛分享的主要是蓝光原盘和超高清(和谐)视频,主要的类目和大站可以看下面的图,想要知道最新最全的 PT 站只需要访问 https://opentrackers.org/tracker-list/

PT 下载
PT 下载即是私密的 BT 下载,主体一般为PT 论坛。为了保证论坛资源的质量和下载速度,PT 论坛一般都不会开放注册,需要邀请人担保或者看管理员心情。一旦有幸进入一个 PT 站,那么对用户来讲最重要的应该就是 passkey 了。
Passkey 是一串字符,代表着用户在论坛里面的「代号」,那么有了它是不是就能随心所欲地下载资源了呢?并不是,为了让大家都能满速下载,PT 站会规定用户上传一定大小的数据才能下载一定大小的数据。也就是说新人必须先在论坛下载一些完整的资源,并且给其他用户提供一定量的数据之后 PT 站才会给他开放下载流量。现在许多 PT 论坛还有新人考核,必须在一定时间内完成要求(例如:30天内上传 20G,下载10G)才能成为论坛成员。
用户在 PT 站下载的所有种子都会带有专属的 passkey,PT 站会通过 passkey 确定用户的上传量,并按照一个特定的比率分配下载量。当然也只有通过论坛下载的带 passkey 的种子下载资源才能享受到满速下载的福利。
除了下载别人的资源,用户也可以上传自己资源来提高上传量,只需要将本地的私有种子上传到论坛生成一个带有 passkey 的种子,然后把种子下载回来本地做种就行了。一般 PT 论坛对上传资源的质量和内容有着严格的要求,这也是 PT 下载的优势之一。
对于违反论坛规定和没有贡献的用户 PT 论坛惩罚起来是毫不手软的,卖邀请卖号的立即删号,一段时间上传下载比率太低的立即删号,passkey 被泄露的立即删号(无法从技术手段根绝 passkey 泄露,所以 PT 论坛不允许使用迅雷等「吸血」客户端下载带 passkey的种子,只能用 μtorrent 等客户端),严格的 PT 论坛连一个人用多个账号或者多个人用一个账号都会被删号。

PT 吧
想要入门的话百度贴吧 PT 吧的 新人手册 是个不错的选择、
PT 下载是个复杂的社会领域,这里仅仅是给大家简单介绍一下。在优质资源和早期资源下载越来越难的今天,PT 下载不会进入大众,但会在小圈子中越来越流行。如果你能在林林种种的 PT 站中找到感兴趣的那个圈子,那我想这些复杂的规矩和成本是值得遵守和付出的。
提示:如果有更多关于 PT 下载的疑问(比如名词解释等)可以给我留言。中间的 UDP 介绍为原本推荐的下载方式被删除后补上的内容。


上一期
答疑汇总 03
下一期
答疑汇总 04
 
精选评论(6) 我的评论
  • V1nc3k1
    终于能够理解到游戏莫名其妙的闪现原理,感谢作者。
    02月06日
  • huaiyin98
    使用utorrent等软件下载时,详细信息里面的标识都是什么意思?D IXEP\U IXe等
    01月30日
    • Fairyex 作者
      刚刚好周二,就在答疑里面回复吧
      01月30日 1
  • 暗樱花
    BT由于海外服务器太远,(特色)海底光缆会出现几何式的信号衰减,导致404 not found(大雾),所以PT是一个非常良好的解决方案,不过由于(特色)的上传下载的不对等,导致PT门槛太高了。
    这两年稍微好点了,最低都有4Mbps的上传了,虽然是(特色)10.0.0.X的。我家上个月都自动升级到10Mbps了,想起ADSL时代的50K的上传简直是。
    老妈QQ空间上传几张照片我这边卡得网页都打不开
    (这里其实想请问下同样是满速上传,光纤即使是上传是时候也不会像ADSL那样完全无法接收数据了,虽然延迟会升高,但是游览网页之类的还是没问题,这是信号传输的介质原理不同吗?)
    Metalink很棒的一个选择,可惜没推广开来。很看好以后的潜力。
    UDP第一次看到也是在迅雷里,虽然没去研究过他到底是干什么的,感谢科普,原来还在好奇这种CS,LOL这种对网络延迟要求很高的游戏是怎么做到如此跟手的。
    最后瞎扯下,最近IPV6的消息也有眉目了,感觉到了那时候每个人都是点对点的静态IP地址。P2P,BT等大有可为啊。游戏联机也不像现在这么难了。代价就是&*¥%就不是精确到街道了,而是直接精确到人了(滑稽)
    01月28日
  • CYM
    酸酸乳里面有udp转发选项,一直不清楚是干嘛的,没用过,看完你这里的解释,难道是提高速度的?
    01月27日
    • Fairyex 作者
      不是呀,最常见的原因是因为游戏,上面也说游戏是走 udp 的,有些外服游戏(比如吃鸡)是需要梯子的。而一般梯子提供的只是 tcp 转发,无视 udp,只有打开 udp 转发才可以。这也是为什么很多人有自己的梯子还去买加速器的原因(各种游戏加速器都相当于一个只走 udp 通道的梯子),所以酸酸乳完全可以作为游戏加速器(事实上我就是这样子用的)。
      01月27日
  • Bates
    补充一句作者的回复,QQ因为历史原因,至今仍是UDP协议为主(基于UDP协议优化的),TCP协议为辅。https://www.zhihu.com/question/20292749
    01月27日
    • Fairyex 作者
      这个问题的回答都比较久了,现在的新版本,特别是移动端除了好友聊天点对点会用到 udp,其他的功能基本上都是 tcp 了。
      01月27日
  • gl09025
    1.PT贡献上传流量,可能大部分人没办法保证自己机器一直开着,上传带宽也不够,是挺困难的,感觉适合高端用户。
    2.Aria2是那个命令行工具吗?现在用aria2下载快是不是因为多线程下载,没有客户端(某盘)的限制?
    3.现在聊天软件都是用的UDP吧,如果真的遇到网络波动,对方没接受到,是不是就算了?
    4.挺好奇那些能搜索资源的网站是怎么抓取资源的(这条不能说就算了)
    01月26日
    • Fairyex 作者
      1. 完全正确
      2. 原本是命令行工具,不过支持图形化界面控制,后面是对的。
      3. 除了远古版本,后面聊天软件基本都是 TCP 了。
      4. BT 的那种就是伪装成用户从 DHT 网络中不断地通过随机 HASH 爬资源
      01月26日