BT服务器源码分析1:BT体系架构
2007/10/12 16:54因为要对一个以BT(bnbt)为核心的系统进行优化改进,上网搜了一下BT服务器和客户端的源码分析资料,所获很少(有价值只有信仰和小马哥)。只好自己总结,希望能留下点有用的。
要分析和改进BT,先要了解BT的架构和先说说BT的架构。
BT角色
- torrent发布服务器:用来发布.torrent文件
- tracker服务器:每个bt客户端都要连上tracker获得其他peer,所以tracker是BT架构的中心、peer的信息交互中心
- peer:BT客户端,下载兼上传者。针对某个bt文件(即1个.torrent文件所指向的文件或目录),还可以分为seed和lecher。注意,1个peer可能是某个bt文件的seed,同时是另1个bt文件的lecher。
- seed:种子,即拥有该bt文件的全部内容的peer。
- lecher:种子以外的peer.
BT的运行原理
按照时间顺序,依次发生的是
- 制作torrent文件
指定要发布的文件或目录和tracker的URL,制作出.torrent文件。
tracker的URL格式是http://<ip>:<port>/announce。.torrent文件中记载了tracker信息、发布者信息、上载的文件的长度和hash等,但不包含发布者服务器的信息。制作torrent文件后,就不要删除或移动发布的文件了,以免别人无法下载。
使用bitcomet可以很方便地制作bt文件。 - 发布torrent文件
将torrent文件发布给别人。现在有很多torrent发布服务器,比如btchina。其实,用什么方式发布torrent文件无关紧要,只是因为torrent发布服务器上聚集了大量bt信息,别人比较容易找,发布到论坛、网站、博客上或者发布到多个服务器上都没问题。 - 用户下载torrent文件。
- bt客户端根据torrent文件信息,访问tracker。注册自己,得到该bt文件的一组peer的ip和port列表。
- 根据列表,与各peer建立双向连接,开始下载/上传。
- 定期访问tracker,汇报本客户端的下载/上传情况,得到更多peer列表。知道下载完毕,成为seed。
转载请注明来自:jijian91与小z - 编程
永久链接:https://jijian91.com/blog20071012/bittorrent-architecture.html