标签归档:变态

变态协议

了解了下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、最后阶段模式
    阻塞算法