了解了下BitTorrent协议,记录一下:
- Tim Berners Lee在1990年设计和发明了HTTP
- 在HTTP被发明之前,统治互联网的是SMTP和FTP
- 2003年,Bram Cohen发霉了BitTorrent协议
- piece大小一般为256KB
- 种子文件中包含每个piece的hash值
- 种子文件和Tracker返回的信息都是通过B编码的
- B编码格式:
- 字符串:<字符串长度>:<字符串>
- 整型:i<十进制的整型数>e
- 列表:l<任何合法的类型>e
- 字典:d<关键字><值>e
- 种子文件中的关键字:info、announce、announce-list、creation-date、comment、created by
- BitTorrent协议建议只向那些提供最快下载速度的4个peer上传数据,在任一时刻,保持一个优化非阻塞peer(防止死锁)
- 与Tracker交互(HTTP):To Tracker使用GET方法;From Tracker返回一个B编码的字典
- peer之间通信:
握手消息:<pstrlen><pstr><reserved><info_hash><peer_id>
其他消息:<length prefix><message ID><pay load> - 关键算法和策略:
流水线作业
片段选择算法:严格优先级、最少优先、随机选择第一个要下载的piece、最后阶段模式
阻塞算法