从零开始编写一个BitTorrent下载器 BT协议 简介
BT协议Bit Torrent(BT)是一种通信协议,又是一种应用程序,广泛用于对等网络通信(P2P)。曾经风靡一时,由于它引起了巨大的流量,对因特网的运营、维护和管理都产生了重要的影响。
BT协议的典型特征就是没有中心服务器。BT协议中,作为参与者的机器被称为peers。peer之间的通信协议又被称为peer wire protocal,即peer连线协议,是一个基于TCP协议的应用层协议。
BT协议在20年里不断发展(从2001年开始),加入加密、私有种子等设计,也扩展了搜寻peer主机的方法。
连接由于没有中心服务器,参与者需要使用另外的方法取得他人的地址,以建立对等连接,确定自己的机器应当从何处下载需要的文件。传统的BT协议使用中介服务器trackers来告知每个参与者如何进行下载。trackers服务器是基于HTTP的,这类服务器本身不托管文件资源,仅为每个参与者分配peers。
在BT协议网络中传播违法资源的现象十分常见,这导致其中介服务器常常会受到法律制裁,查封事件屡见不鲜。要解决这一问题,就需要将主机搜寻的工作下放到每个参与者的机器,即分布式处理(distributed process)。BT协议未来的核心就是DHT、PEX、磁力链。
.torrent文件解析以debian发布的镜像文件种子为例。
一个.torrent文件描述了可下载文件的内容以及需要连接到的tracker中介服务器的信息,其编码格式为Bencode。