BitTorrent协议

BitTorrent

BitTorrent的历史可以追溯到2001年,由美国程序员Bram Cohen(同时也是Steam的设计者)设计并实现。

BitTorrent是一个应用层的内容分发协议,是一种P2P网络的实现,基于TCP/IP实现分布式文件传输。与中心化的文件传输系统相比,分布式的系统可以在某些节点故障的情况下依旧运行(因为没有中心节点),同时向多个节点请求数据也提高了网络带宽的使用。 当一个节点下载完成一个数据分片后,会继续在线为其他节点提供下载服务,这使得对于一个文件,下载的节点越多,下载的速度越快。

BitTorrent的文件传输逻辑

BitTorrent协议中主要存在以下几个实体:
· Web服务器
· 种子文件(.torrent)
· tracker服务器
· 上传/下载节点

当一个拥有原始文件的节点想要上传文件,其需要制作一个.torrent的种子文件,并向tracker服务器上传种子文件,随后将种子文件散播在网络中。

当一个节点需要下载一个文件,首先应获取并解析种子文件。随后根据解析后的信息向tracker服务器发送请求,tracker服务器将返回拥有此文件的节点的地址及端口。下载节点与这些节点建立起连接并开始下载,下载完成后向其他节点提供下载。

BenCode

BenCode是一种编码格式,规则如下:

字符串

<字符串长度>:<字符串>
如 “bye” : 3:bye

Integer

ie
如 123 : i123e

List

l<数据项><数据项><数据项>e
如 [123,”bye”,[“123”,”bye”]] : li123e3:byeli123e3:byeee

Dictionary

d……e,其中key必须为String,并且按照字母排序


BitTorrent协议
https://1303-yzym.github.io/2024/05/13/BitTorrent协议/
作者
YZYM
发布于
2024年5月13日
许可协议