【计算机网络】2.6 P2P应用
第二章第六节 P2P应用
在本节内容开始前,我们要先来对P2P架构有一个宏观的认知:
P2P:(Peer to Peer 对等结构) 以对等方式进行通信,并不区分客户端和服务端,而是平等关系进行通信。在对等方式下,可以把每个相连的主机当成既是主机又是客户,可以互相下载对方的共享文件。比如迅雷下载就是典型的P2P通信方式。
本章描绘的前三个应用都采用了CS(客户-服务器)体系结构,极大的依赖于总是打开的基础设施服务器。而在本节中,我们将介绍两种适用于P2P的应用:一个是文件分发,在其中我们将介绍流行的BitTorrent协议;另一个是分布在大型对等方社区中的数据库,在其中我们将探讨分布式散列表(Distrubuted Hash Table,DHT)的概念。
Outline
- 文件分发
- P2P系统结构的扩展性
- BitTorrent
- P2P应用:索引技术
- P2P中搜索信息
- 集中式索引
- 查询洪泛
- 层次覆盖
- 分布式散列表
Note
- 纯P2P架构具有如下特点:
- 没有服务器,任意端系统之间直接通信
- 节点阶段性接入Internet
- 节点可能更换IP地址
- 资源共享
- 资源分布
## 文件分发
【P2P体系结构的扩展性】
- 为了方便讨论,我们假设如上图的简单定量模型,其中us为服务器上传带宽;ui为节点i上传带宽,di为节点i下载带宽。
- 对于客户机/服务器架构:
- 服务器串行地发送 N 个副本,时间为: NF/us
- 客户机i 需要 F/di 的时间下载
- 我们所需要的最短时间为:
- 对于P2P架构:
- 服务器必须发送一个副本,时间: F/us
- 客户机i 需要 F/di 的时间下载
- 总共需要下载NF比特
- 最快的可能上传速率: us + ∑ui
- 所需要的最短时间为:
- 结论:对足够大的N(对等方的数量):
- 客户机/服务器体系结构的分发时间随着对等方的数量N线性增加并且没有界。
- P2P体系结构,其最小分发时间曲线与log2N曲线类似,因此最小分发时间远小于客户机/服务器体系结构的分发时间。其自扩展性很强。
【BitTorrent】
- BitTorrent是一种用于文件分发的流行P2P协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。
- BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。通过一定的策略保证上传速度越快,下载速度也越快。
- 基本概念:
- Torrent:参与一个特定文件分发的所有对等方的集合被称为一个洪流。
- chunk:在一个洪流中的对等方彼此下载等长度的文件块(一个文件被分成若干个块),典型的块长度为256KB。
- Tracker:每个洪流都有一个基础设施结点,成为追踪器
- 当一个新节点(Alice)加入torrent:
- 没有chunk,但会随着时间不断积累
- 结点向tracker注册获得节点信息表,并与某些结点建立联系(成为“邻居”),一个结点的临近对等点会随着时间而波动。
- 结点下载的同时,也为其他对等方上传了多个块。结点可能随时加入或离开。
- chunk的获取
- 给定任一时刻,不同的节点持有文件的不同chunk集合
- 节点(Alice)定期查询每个邻居所持有的chunk列表
- 节点发送请求,请求获取缺失的chunk
- 稀缺优先:针对她没有的块在他的邻居中决定最稀缺(副本数量最少)的块,并优先请求稀缺块
- 稀缺优先的目的:大致的均衡每个块在洪流中的副本数量
- chunk的发送:决定Alice响应哪个请求(对换算法)
- Alice根据当前能够以最高速率向他提供数据的邻居,给出其优先权
- 每10秒,重新评定一下Top4,这四个对等方被称为疏通(unchocked)
- 每30秒,Alice随机选择一个其他结点,向其发送chunk。
- 除了随机选择的伴侣作为试探对等方和之前的Top4,其他的对等方都称为阻塞()
## P2P应用:索引技术
【P2P中搜索信息】
- P2P系统的索引:信息到节点位置(IP地址+端口号)的映射。
- 文件共享(电驴)
- 利用索引动态跟踪节点所共享的文件的位置
- 节点需要告诉索引它拥有哪些文件
- 节点搜索索引,从而获知能够得到哪些文件
- 即时消息(QQ)
- 索引负责将用户名映射到位置
- 当用户开启IM应用时,需要通知索引它的位置
- 节点检索索引,确定用户的IP地址
【集中式索引】
- 如上图所示,集中式索引更像是P2P和CS的混合体
- 当Alice需要下载信息时,经过以下步骤:
- 初始时,所有的对等方要将自身的IP和可共享的文件名称通知集中式索引服务器,该索引服务器从每个活动的对等方那里收集这些信息,从而建立起一个动态索引,将每个文件拷贝映射到一个IP地址集合。
- 当Alice需要下载一些文件时会将查询内容发送给索引服务器,服务器将查询结果返回给Alice(Bob的IP地址)。
- Alice根据收到的信息,从Bob处下载资源。
- 集中式索引的问题:内容和文件传输是分布式的,但是内容定位是高度集中式的。会出现如下问题:单点失效问题、性能瓶颈、版权问题。
【查询洪泛】(建立在“Gnutella”协议基础上)
- 查询洪泛采用完全分布式方法。在查询洪泛中,索引全面地分布在对等方的区域中。每个对等方索引可供共享的文件而不索引其他文件。
- 其扩展性差,尤其是为了防止某个对等方发起查询,该查询就会传播到整个覆盖网络的每个其他对等方,从而产生大量流量。为解决这个问题,设计者使用了受限查询洪泛,即限制其传播的最大跳数。
【层次覆盖】(由FastTrack首创,Kazza和Morpheus也实现了这种文件共享协议)
该方法结合了上述两种方法的优秀特征,与洪泛查询类似,层次覆盖设计不使用专用的服务器(或服务器场)来跟踪和索引文件。然而,与洪泛查询不同的是,在层次覆盖的设计中并非所有对等方都是平等的。
如下图所示,如果某对等方不是超级对等方,则它就是一个普通对等方,并被指派为一个超级对等方的子对等方。
超级对等方维持着一个索引,该索引包括子对等方正在共享的所有文件的标识符、有关文件的元数据和相应子对等方的IP地址,但与前面的集中式索引不同,这里的超级对等方并不是一台专用服务器,而是普通对等方。超级对等方之间可以相互建立TCP连接,从而形成一个覆盖网络。
## 分布式散列表
在课程中未涉猎,具体请移步https://blog.csdn.net/zy_zhengyang/article/details/76838523
【计算机网络】2.6 P2P应用的更多相关文章
- 【计算机网络】 网络体系结构分类: 客户机/服务器体系和P2P
网络体系结构的分类 现代网络应用程序有两种主流的体系结构: 客户机/服务器体系结构和P2P体系结构(peer to peer “对等”) 一 . 客户机/服务器体系结构 客户机/服务器体系 ...
- 计算机网络-应用层(5)P2P应用
P2P系统的索引:信息到节点位置(IP地址+端口号)的映射 在文件共享(如电驴中):利用索引动态跟踪节点所共享的文件的位置.节点需要告诉索引它拥有哪些文件.节点搜索索引从而获知能够得到哪些文件 在即时 ...
- 计算机网络之应用层概述(C/S模型与p2p模型)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105582318 学习课程:<2019王道考研计算机网络> 学习目的 ...
- [计算机网络-应用层] P2P应用
首先我们要先来区分一下下面的几种体系结构: CS:Client/Server 客户-服务器结构BS:Browser/Server 浏览器-服务器结构 P2P:Peer to Peer 对等结构 BS ...
- [A Top-Down Approach][第一章 计算机网络和因特网]
[A Top-Down Approach][第一章 计算机网络和因特网] 标签(空格分隔): 计算机网络 介绍基本术语和概念 查看构成网络的基本硬件和软件组件. 从网络的边缘开始,考察在网络中运行的端 ...
- 计算机网络之应用层_part -1
应用层协议原理 一.网络应用程序体系结构 网络应用程序体系结构是由程序研发者设计的,规定了如何在各种端系统中组织该应用程序,主要流行的有两种: 1.客户--服务器体系结构: 有一个总是打开的主机(称为 ...
- P2P技术详解(一):NAT详解——详细原理、P2P简介
1. IPv4协议和NAT的由来 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联网发 ...
- P2P技术概要
P2P(Peer to Peer)也就是 对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构[1] ,是对等计算模型在应用层形成的一种组网或网络 ...
- NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等
这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. 学习交流 移动端即时通讯学习交流: 21589 ...
随机推荐
- bzoj1296 [SCOI2009]粉刷匠——背包
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1296 对于不同木板之间,最终统计答案时做一个分组背包即可: 而要进行分组背包,就需要知道每个 ...
- css模型
外边距: margin:1px 2px 3px 4px; 上 右 下 左 内边距: padding:1px 2px 3px 4px; 上 右 下 左 边 ...
- Codeforces Round #209 (Div. 2) C - Prime Number
传送门 题意 给出n个数及x,求 \[\frac{\sum _{i=1}^n x^{a_1+a_2+...+a_{i-1}+a_{i+1}+...a_n}}{\prod_{i=1}^n x^{a_i} ...
- Excel学习 -- 函数基础
Excel函数基础 1. 单元格是函数的作用对象: 2. 函数由等号.函数表达式.操作符.参数.返回值五部分组成: 3. 商业智能报表中使用的常用函数分类:数学函数.文本函数.逻辑函数.查 ...
- P5089 [eJOI2018]元素周期表(并查集)
传送门 以后看到棋盘要么黑白染色要么二分图! 我们考虑对行列建二分图,如果\(i\)行\(j\)列有,就把\(i\)和\(j+n\)连起来 我们要让它变成一张完全二分图.考虑条件\((i_1,j_1+ ...
- Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
题目传送门 刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何. 题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数. 因为必修5和必修2的阴影很快就想到了数学中 ...
- Python爬虫库-Beautiful Soup的使用
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性. 如在上一篇文章通过爬虫 ...
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【LCT】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 第一道LCT,调了3天,发现是智障bug,我的青春... 主要参考了黄学长的代码,也没 ...
- Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明
Class.getResourceAsStream(): com.xusweeter.iot.ws.vodafone.config.VodafoneServiceConfig.class.getRes ...
- iOS开发系列--通知与消息机制--转
来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户 ...