P2P应用
使用客户-服务器体系结构,极大的依赖总是打开的基础设施服务器,而使用P2P应用对总是打开的基础设施服务器有最小的(或者没有)依赖。与之相反,成对间歇连接的主机(对等方)彼此通信,这些对等方不为服务提供商所拥有,而是收用户控制的计算机。
BitTorrent
BitTorrent是一种用于文件分发的流行P2P协议。用BitTorrent的术语来讲,参与一个特定文件分发的所有对等方的集合被称为一个洪流。在一个洪流中对等方彼此下载等长度的文件块,典型的长度为256KB.
当一个对等方首次加入一个洪流时,他没有块。随着时间的流逝,他积累了越来越多的快,当他下载块时,也为其他的对等方上传了多个块。对等方获取到完整的文件后可以继续留在洪流中或者选择离开。同时,任何对等方也能够在任何具有块子集的时就离开洪流,并在以后重新加入。
BitTorrent是一个相当复杂的协议,下面是他的一些重要的机制和内部细节:
每个洪流具有一个基础设施结点,称为追踪器(tracker).当一个追踪器加入到洪流中时他向追踪器注册自己,并周期性的通知追踪器告知自己仍在洪流中。
当一个新的对等体加入时,追踪器随机地从参与对等体的集合中选择对等体的一个自己,并将这些对等体的IP发送给新加入的对等体。新加入的对等体持有这张IP表并试图与表上所有的对等体建立TCP连接。我们将成功创建TCP连接的对等方为邻近对等方。
在任何时刻,对等体具有文件块的子集并知道它的邻居具有哪些块,利用这些信息将作出两个重要的决定:向邻居请求哪些块?向哪些向他请求的邻居发送块?
- 在请求发送的过程中,Alice使用的是最稀缺块优先的技术,使用这种技术能够使最稀缺块更为迅速的重新分发,其目标是均衡每个块在洪流中的副本数量;
- 为了决定对等体响应哪个请求,BitTorrent使用了一种对换算法。基本思想是:根据当前能够以最高速率向其提供数据的邻居给出优先权,一般确定四个最高速率流入的邻居,没10秒钟重新计算速率并修改这4个对等方集合。重要的是,每过30秒,也要随机的选择另外一个邻居并向其发送块。
P2P架构
P2P架构主要有三种方式:中央目录、全分布和层次式。
- 中央目录:在这种方式中使用一个中央服务器作为中央目录,利用中央目录记录注册对等体的IP和相关的内容。显然,这种方式存在的问题有单点失败、服务器的性能影响和作为中央服务器的司法责任等。
- 全分布:这种方式在2000年左右提出,该方式中没有中央服务器,而是将请求泛洪给所有的对等体,系统具备对讯问请求的回答,网络设计为覆盖网。同时,为了防止网络上的请求泛滥,限制了查询距离为7跳。这种方式的优点是网络负载均衡,缺点是搜索范围引起的成本问题和搜索时间问题。
- 层次式:这种方式结合了全分布和中央目录。架构中设计有超级对等体和其他对等体,其中,其他对等体需要向超级对等体进行注册。