美文网首页
2019-07-10

2019-07-10

作者: 一角钱的奇喵 | 来源:发表于2019-07-10 21:54 被阅读0次

    BitTorrent协议

    不是point to point 而是 peer to peer (用户群对用户群)

    普通的HTTP/FTP下载采用TCP/IP协议,BitTorrent协议是架构于TCP/IP之上的P2P文件传输协议,处于TCP/IP结构的应用层

    根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件(一个文本文件),包含Tracker信息和文件信息

    Tracker信息:Tracker服务器地址和针对Tracker服务器的设置
    文件信息:计算目标文件,把结果根据BitTorrent内的Bencode规则编码

    Bencode(发音为Bee-Encode)是BitTorrent用在传输数据结构的编码方式。这种编码方式支持四种数据类型:字符串,整数,序列,字典

    它的主要原理是把下载的文件虚拟分成大小相等的块,块的大小必须是2k的整数次方(由于是虚拟分块, 磁盘上不常上各个块文件),并把每个块的索引信息和Hash验证码写入种子文件内;所以种子文件就是被下载文件的索引。

    下载时:BT客户端首先解析种子文件得到Tracker地址,然后连接服务器。Tracker服务器回应下载者的请求,根据种子文件,两者分别告诉对方自己已经有的块,然后交换对方没有的数据。此时不需其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

    下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

    DHT网络

    DHT全称为分布式哈希表(Distributed Hash Table)
    是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。软件会在DHT网络中需要不知该下载同一文件的其他用户并与之通讯,开始下载任务。

    这里的DHT算法叫Kademlia(在eMule中也有使用,称为Kad网络,具体实现协议有所不同)

    Kademlia

    相关文章

      网友评论

          本文标题:2019-07-10

          本文链接:https://www.haomeiwen.com/subject/rvzqkctx.html