BitTorrent 协议簇概述

概述

本文将简单介绍一些 BitTorrent 协议和一些术语,来让读者有一个整体的概念。

B 编码(bencoding)

B 编码(bencoding)是用于编码协议消息的编码。Bittorrent 的许多协议中的消息都使用此种编码方式。此编码可以将字符串、整数、列表和字典编码成字符串。

假设有一个字符串 Hello World,它会被编码为 11:Hello World。即 长度:内容

假设有一个整数 256,它会被编码为 i:256e。即开头是字母 i,后跟一个冒号 :,接着是十进制表示的数字,最后是一个字母 e

假设有一个列表 [ 'spam', 'eggs' ],它会被编码成 l4:spam4:eggse。即以字母 l 开头,中间是列表的内容,并且内容也要使用对应的 B 编码进行编码,结尾一个字母 e

假设有一个字典 { 'cow': 'moo', 'spam': 'eggs' },它会被编码成 d3:cow3:moo4:spam4:eggse。即以字母 d 开头,中间是内容,并且内容也要使用对应的 B 编码进行编码,结尾是一个字母 e。另一个例子是字典 { 'spam': [ 'a', 'b' ] } 会被编码成 d4:spaml1:a1:bee

私有种子(Private Torrents)

一个种子(torrent)文件可以被标记为 ”私有的“,此时 BitTorrent 客户端应该禁用除了 Tracker 以外的所有 Peer 搜索方式,并且仅能使用私有的 Tracker。

伙伴(Peer)协议

伙伴协议(Peer Protocol)也可以翻译为 “对等体协议” 或者 “同伴协议”,是用于与 Peer 通信以完成下载任务的协议。该协议底层可以使用 TCP 或者 μTP 传输。

Tracker 协议

Tracker 协议是用于发现伙伴(Peer)协议。

有时我们并不知道哪些主机提供了我们需要的资源,这时你可以使用 Tracker 协议来获取这些信息,主机会使用 Tracker 协议来告知其它主机自己提供哪些资源,也可以使用 Tracker 协议得知某个资源被哪些主机提供。

μTorrent 传输协议

BitTorrent 主机通常会开很多个连接来为许多个 Peer 服务。但是 TCP 会将带宽均匀地分配给每个连接,这就导致 BitTorrent 软件占用了大量的带宽,容易影响其它软件,特别是交互性强的软件如浏览器、游戏和聊天软件。

μTorrent 传输协议是一个基于 UDP 的传输协议,它可以动态地调整带宽使用量,避免影响其它软件的网络通信。

分布式散列表(Distributed sloppy Hash Table)协议

BitTorrent 网络本身是一个容错性十分高的网络,但其一大弱点就是 Tracker 服务器,因为一旦 Tracker 服务器下线,网络中的主机就无法联系到持有所需资源的主机。

分布式散列表协议也称 DHT 协议,它可以让 BitTorrent 网络中的主机在不依赖 Tracker 服务器的情况下联系到持有所需资源的主机。

伙伴交换(Peer Exchange)协议

伙伴交换(Peer Exchange)协议是让两个 Peer 互相交换对方的 Peer 的协议。其实就是两个朋友之间互相向对方介绍自己的朋友,这样大家的朋友就会越来越多。

本文作者:ADD-SP
本文链接https://www.addesp.com/archives/5236
版权声明:本博客所有文章除特别声明外,均默认采用 CC-BY-NC-SA 4.0 许可协议。

评论

  1. cathay
    1年前
    2022-9-20 15:34:21

    好,很好,非常好

发送评论 编辑评论


上一篇
下一篇