第六章P2P技术及应用
第六章P2P技术及应用
P2P技术在我们日常生活中非常实用,例如我们常用的QQ、PPLive、BitTorrent就是基于P2P技术研发。下面将本章中的重点内容进行归纳。
文章中的Why表示产生的背景,也就是说为什么会产生该技术,What表示该技术是什么,How表示该技术是如何使用的。以下将用字母表示各问题。
1)P2P技术:
Why:早期非对等结构网络操作系统主要共享的资源是硬件、软件与数据,而随着计算机的发展,PC的硬件配置日益提高,硬件资源已经足够强大,矛盾发生转变。用户希望共享数据、音乐、图像、视频等文件。
What:P2P网络中每一个节点都是一个自治的计算机系统,两台计算机之间采用平等的“端到端”
方式和双向通信方式,共享双方的资源。P2P是基于内容来决定路由,而不是基于位置的路由。
研究P2P主要涉及3方面内容分别是:P2P通信模式、P2P网络、P2P实现技术。
2)P2P模式与C/S模式的比较
从工作原理的角度来比较C/S与P2P两种工作模式

此外两者最大的差别是在应用层,如下图所示:

传统C/S模式的应用层协议主要包括:域名服务(DNS协议)、电子邮件(SMTP协议)、文件传输(FTP协议)、以及Web服务(HTTP协议)。
P2P网络应用层协议主要包括:文件共享类(Napster协议),BitTorrent服务的协议、多媒体传输类Skype服务的协议。
3)P2P网络的分类
Why:用户如何能够很快地找到自己想要的文件。即需要解决三个问题:1.如何存储共享的信息资源2.如何让其他对等节点找到信息资源3.如何保证对等网络系统的可扩展性与性能
How:如下图所示,为解决该问题,研究人员提出了多种P2P网络结构。

3.1)集中式P2P网络
What:集中式P2P网络中存在一个中心的目录服务器,它为所有P2P结点提供搜索和共享文件的服务。
How:当某个用户需要查询资源时,只需要向中心目录服务器发送“资源索引关键字”,根据内容查询路由;中心目录服务器通过遍历资源索引表,就可以给用户放回查询结果。用户根据拥有该资源的节点IP地址与端口号访问该节点,直接获取所需资源。
集中式P2P网络典型的例子是:Napster
3.2)分布式非结构化P2P网络
与集中式P2P网络不同的是,分布式P2P网络中不存在集中的服务器。
How:当一个用户需要查询某一个共享文件时,将进行内容路由,将请求消息通过随机形成的网络拓扑洪泛法发送出去,使得全网节点都能够收到与查询内容相关的路由请求消息。接收到查询消息的节点进行检索,判断是否有需要的文件,如果有则发出查询应答消息。
Gnutella是一种分布式非结构化P2P即Query Flooding协议,Gnutella网络消息报文交互过程如下图所示:

3.3)分布式结构化P2P网络
Why:由于分布式非结构化P2P网络可扩展性差的缺点,提出了该种新型方法。
What:网络中结点拓扑相对稳定和规则,每个节点可以被指定一个逻辑地址,并且将地址与节点位置对应起来。也称为分布式散列表(DHT)网络。
3.4)混合P2P网络
Why:集中式P2P网络结构有利于提高网络资源快速查找能力,但是目录服务器容易受到攻击,因此系统的安全性与性能受到中心服务器节点的影响。
What:将集合式与分布式P2P网络两者结合起来。
混合式P2P网络节点类型分为三类:用户节点、搜索节点、索引节点
四类系统的总体比较:如下图所示:

基于P2P的网络应用:
文件共享类软件:Napster、BitTorrent、
通信类软件:Skype、QQ、MSN Message、Google Talk
多媒体传输类软件:PPLive、AnySee
共享类软件:OceanStore、Tapestry、Pastry
分布式计算类软件:GPU、SETI@home
协同类软件:Groove
搜索引擎类软件:Pandango
第六章P2P技术及应用的更多相关文章
- 2017.11.2 JavaWeb----第六章 Servlet技术
JavaWeb ------第六章 Servlet技术 (1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式.在MVC开发模式中将Web程序的 ...
- P2P技术如何将实时视频直播带宽降低75%?
本文内容来自学霸君资深架构师袁荣喜的技术分享. 1.前言 实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播.挖网红以外,其背后高额的带宽 ...
- 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数据解答"为什么"的谜团 当我走进一家超市,我不希望员工会认出我或重新为我布置商店. 然而, ...
- KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器
无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...
- [Effective Java]第六章 枚举和注解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Laxcus大数据管理系统2.0(8)- 第六章 网络通信
第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的 ...
- (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...
- (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(1)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选,其余章节将陆续放出.上一篇:Wow ...
- [CSAPP笔记][第六章存储器层次结构]
第六章 存储器层次结构 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置. 虽然是一个行之有效的模型,但没有反应现代系统实际工作方式. 实际上,存储器系统(memo ...
随机推荐
- wfst讲解
一.比较好的博客 1.0 官方网站 1.1 语音识别解码器(1)—自动机与半环 1.2 走进语音识别中的WFST 1.3Kaldi WFST 构图 学习 二.比较好的paper 三.开源项目 3.1 ...
- windows下更新npm的命令实现
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-wi ...
- 使用Apache HttpClient 4.x进行异常重试
在进行http请求时,难免会遇到请求失败的情况,失败后需要重新请求,尝试再次获取数据. Apache的HttpClient提供了异常重试机制,在该机制中,我们可以很灵活的定义在哪些异常情况下进行重试. ...
- javaEE中错误提示 Exception starting filter BackServletFilter java.lang.ClassNotFoundException: tmall.filter.BackServletFilter提示这个错误啊
最近在学习javaEE的部署,不借助eclipse中的部署方式,而是通过修改server.xml文件的方式部署 添加Context路径 <Context path="/tm" ...
- 客户端对象模型之列表数据导出到Excel
1,废话不多话,直接上代码,留着以后做类似功能时Copy一下!有需要的朋友也可以参考一下. <!DOCTYPE html> <html xmlns="http://www. ...
- 【Javascript-基础-ecma6】ecma6学习笔记(持续更新)
makdown语法手册API String 新特性的方法 基本不支持IE浏览器 String.fromCodePoint(6特性) String.prototype.codePointAt(6特性) ...
- 关于换行这个动作,win 和 mac 的实现
‘\r'是回车,前者使光标到行首,(carriage return)'\n'是换行,后者使光标下移一格,(line feed) \r 是回车,return\n 是换行,newline 对于换行这个动作 ...
- 【Dubbo源码阅读系列】之远程服务调用(上)
今天打算来讲一讲 Dubbo 服务远程调用.笔者在开始看 Dubbo 远程服务相关源码的时候,看的有点迷糊.后来慢慢明白 Dubbo 远程服务的调用的本质就是动态代理模式的一种实现.本地消费者无须知道 ...
- JAVA 8 新特性 __ Optional 类
Optional 类是一个可以作为null容器的对象,若值存在调用isPresent()就返回 true,调用get()会返回该对象. Optional是一个容器,可以保存类型T的值,或者仅仅保存nu ...
- Objective-C基础知识之“类”
Objective-C语言是iOS开发的专用语言,虽然现在在逐步被swift语言取代,但是仍可以作为基础学习,学会Objective-C之后入手swift也是相当快速.今天我来简谈一下关于OC中的类. ...