P2P网络技术原理与C++开发案例 6.6分
读书笔记 主流P2P系统
MathxH

Napster--------最早的P2P,集中式,过时了

Gnutella-------查询不准确,不适合商用,Gnutella也是一个P2P协议

BitTorrent-------多点下载的文件分发协议,每个人下载的同时也为其他下载用户提供上传,参与的人越多,“文件源”就越多,下载速度越快。当某用户想要共享文件或目录时,就要为文件或目录生成一个“种子”文件(元信息文件,该文件包含共享文件或目录以及用户的URL等信息),然后把“种子”文件上传到BT服务器(Tracker服务器),等待别的用户来下载。需要下载某个文件的用户首先要到BT服务器上找到该文件的“种子”文件,然后根据“种子”文件所提供的信息下载。BitTorrent系统把文件分割成相同大小的块,各个块可能会从不同的节点同时下载。BT服务器及时手机每个下载者的信息(地址,目前拥有的文件块信息),然后从下载者的列表中随机选取一组告诉某个正在下载的节点。各个下载节点和BT服务器之间要及时进行信息交换,确保下载顺利完成。

BitTorrent系统中,种子文件的上传下载以及各个节点和BT服务器之间的通信都是基于http协议的,但是各个节点的P2P通信是由BitTorrent规范定的,叫BitTorrent peer协议

从结构上来看BitTorrent也是中心拓扑的P2P网络,存在性能和单点失效。但是从文件共享来说,它是非常成功的应用,而且该协议也是公开的,任何人都可以开发服务器和客户端。国内比较流行的BitTorrent的客户端是BitComet。

eMule-------类似于BT协议的P2P软件(开源软件),但是采用的是eDonkey协议,是eDonkey协议的改良版。能直接登录eDonkey服务器,加入eDonkey网络,同时也提供eDonkey不具有的功能,比如自动搜索网络中的服务器,缓存搜索结果和其他节点交换服务器地址等。eMule系统的各个服务器之间是不进行通信的,具有下载的人越多,下载的速度越快的有点。从结构上看,eMule是半中心化拓扑,因为有多个服务器,所以相比BT协议减少了单点失效的发生概率。

当然完全分布式去中心化的eMule系统已经有了,采用了Kademlia算法来实现节点间的发现和消息路由,这个算法也是开放源码的。

0
《P2P网络技术原理与C++开发案例》的全部笔记 5篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端