计算机网络p2p应用,【计算机网络】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连接,从而形成一个覆盖网络。
## 分布式散列表
计算机网络p2p应用,【计算机网络】2.6 P2P应用(示例代码)相关推荐
- 计算机网络p2p应用,[计算机网络-应用层] P2P应用
首先我们要先来区分一下下面的几种体系结构: CS:Client/Server 客户-服务器结构 BS:Browser/Server 浏览器-服务器结构 P2P:Peer to Peer 对等结构 B ...
- 计算机网络知识点1——计算机网络概述
什么是计算机网络? 计算机网络=通信技术+计算机技术 计算机网络是通信技术与计算机技术紧密结合的产物 计算机网络就是一种通信网络 计算机网络的定义:计算机网络就是互连的.自治的计算机集合. 自治-无主 ...
- 计算机网络西北大学,西北大学计算机网络复习资料 (拟).doc
**** 计算机网络复习 TOC \o "1-3" \h \z \u 一.计算机网络概论 3 (一)计算机的形成与发展 3 (二)计算机网络定义与分类 3 (三)计算机网络结构 4 ...
- 哈工大计算机网络第一章——计算机网络概述复习
目录 1. 计算机网络 2. 网络协议 3. 计算机网络的结构 4. Internet结构 5. 数据交换 6. 计算机网络性能 7. 计算机网络体系结构 1. 计算机网络 计算机网络是通信技术和计算 ...
- 第1章 计算机网络和因特网-计算机网络
目录 目录 教材 第1章 计算机网络和因特网 计算机网络和Internet发展史:了解即可 什么是Internet? 计算机网络:两台计算机相互链接 Internet: "由网络构成的网络 ...
- [计算机网络]第一章——计算机网络和因特网
文章目录 [计算机网络]第一章--计算机网络和因特网 概述 一.什么是因特网 因特网组成 Hardware Software 服务角度 二.协议protocol 三.因特网边缘edge 接入网 家庭入 ...
- 408计算机网络学习笔记——计算机网络体系结构
目录 1.计算机网络概述 1.1.计算机网络的组成 1.2.计算机网络的分类 1.3.计算机网络性能指标 2.计算机网络体系结构与参考模型 2.1.计算机网络的分层结构 2.1.1.分层的基本原则 2 ...
- 计算机网络(一):计算机网络概念、功能、组成
计算机网络的概念 计算机网络:是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统 计算机网络是互连的.自治的计算机集合. 互连:互联互通 ...
- 计算机网络笔记--1 计算机网络与网络应用(上)
计算机网络笔记–1 计算机网络与网络应用(上) 文章目录 计算机网络笔记--1 计算机网络与网络应用(上) 前言 1.1初识计算机网络 1.2计算机网络结构 1.3网络核心 1.4计算机网络性能 1. ...
最新文章
- YOLOv3 《YOLOv3: An Incremental Improvement》论文笔记
- ceph架构/IO原理分析(齐全)
- i/o传输数据打印换行符的方法
- opencomm在c语言中的作用,你能用C语言编写面向对象的代码吗?
- HashMap源码分析(转载)
- 格式要求_课题论文的格式要求
- 计算机视觉基础:图像处理Task01-图像插值算法
- 使用Pls_Integer的好处
- 象棋正确的学习步骤是什么?入门和提高方法全都教给你!
- 一款强大的反编译工具luyten
- casue usb kb 找不到驱动程序_手把手教你安装喷墨打印机驱动程序
- 你为什么要去博物馆? 我的理由比较另类
- 最近,京东AR又爆出哪般神奇?
- 内核编译(支持查看cpu温度)
- 操作系统第七、八章习题
- 自然语言处理-应用场景-文本分类:基于LSTM模型的情感分析【IMDB电影评论数据集】--(重点技术:自定义分词、文本序列化、输入数据批次化、词向量迁移使用)
- python可视化46|最常用6个偏差(Deviation)关系图
- 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现
- 基本图形:直线(Line)
- 手机上网:警惕流量“黑洞”
热门文章
- Python绘制玫瑰花
- SAP那些事-职业篇-23-我有个梦想:做一个不加班的项目
- python educoder苹果梨子_pythoneducoder苹果梨子煮水的功效_苹果梨子汤的功效
- 如何看待用户反馈意见
- matlab 找最小值位置,matlab 向量最小值位置
- java中判断字符是否为英文字母、中文汉字或者数字
- JAVA基础_IO流_字节流_抽象类OutStreamInputStream
- adb shell读取设置手机ocd值以及ocd介绍
- C#-调试记Log文件
- 【Unity】Jay 开发日志(四)——道具效果的实现(下)