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
i
如 123 : i123e
List
l<数据项><数据项><数据项>e
如 [123,”bye”,[“123”,”bye”]] : li123e3:byeli123e3:byeee
Dictionary
d
如
BitTorrent协议
https://1303-yzym.github.io/2024/05/13/BitTorrent协议/