第六章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技术及应用的更多相关文章

  1. 2017.11.2 JavaWeb----第六章 Servlet技术

    JavaWeb ------第六章 Servlet技术 (1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式.在MVC开发模式中将Web程序的 ...

  2. P2P技术如何将实时视频直播带宽降低75%?

    本文内容来自学霸君资深架构师袁荣喜的技术分享. 1.前言 实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播.挖网红以外,其背后高额的带宽 ...

  3. 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数据解答"为什么"的谜团 当我走进一家超市,我不希望员工会认出我或重新为我布置商店. 然而, ...

  4. KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器

    无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...

  5. [Effective Java]第六章 枚举和注解

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. Laxcus大数据管理系统2.0(8)- 第六章 网络通信

    第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的 ...

  7. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...

  8. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(1)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选,其余章节将陆续放出.上一篇:Wow ...

  9. [CSAPP笔记][第六章存储器层次结构]

    第六章 存储器层次结构 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置. 虽然是一个行之有效的模型,但没有反应现代系统实际工作方式. 实际上,存储器系统(memo ...

随机推荐

  1. python执行linux和window的命令

    linux: python执行shell脚本常用的方法 import os val=os.system("shell语句")  >>> val=os.system ...

  2. Java利用 ganymed-ssh2-build.jar来上传文件到linux以及下载linux文件以及执行linux shell命令

    package api; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOExcepti ...

  3. async await循环请求

    var sleep = function (item,time) { return new Promise(function (resolve, reject) { setTimeout(functi ...

  4. 浏览器内多个标签页之间的通信之storage

    在一个标签页里面使用 localStorage.setItem(key,value)添加(修改.删除)内容: 在另一个标签页里面监听 storage 事件. 即可得到 localstorge 存储的值 ...

  5. Laravel源码解析--看看Lumen到底比Laravel轻在哪里

    在前面一篇<Laravel源码解析--Laravel生命周期详解>中我们利用xdebug详细了解了下Laravel一次请求中到底做了哪些处理.今天我们跟 Lumen 对比下,看看 Lume ...

  6. redis-数据类型及命令

    redis五大数据类型:string(字符串),hash(哈希,类似java的Map),list(列表),set(集合),zset(有序集合) 1.redis的键(key) keys 查询数据库中的k ...

  7. 定时任务命令crontab

    crontab: * * * * * [user] command分 时 日  月 周 [用户] 命令 第1列表示分钟0-59 每分钟用*或者 */1表示第2列表示小时0-23(0表示0点)第3列表示 ...

  8. Java编码算法和摘要算法

    编码算法 编码算法是将一种形式转换成等价的另外一种形式.主要是为了方便某种特定场景的处理. 字母如何在计算机中表示呢? 用ASCII编码 那中文字符如何在计算机中表示呢? 用Unicode编码 如何同 ...

  9. MySQL数据库删除数据(有外键约束)

    在MySQL中删除一张表或一条数据的时候,出现有外键约束的问题,于是就去查了下方法: SELECT @@FOREIGN_KEY_CHECKS; 查询当前外键约束是否打开 ; 设置为1的时候外键约束是打 ...

  10. 车道线识别/Opencv/传统方法

    车道检测(Advanced Lane Finding Project) 实现步骤: 使用提供的一组棋盘格图片计算相机校正矩阵(camera calibration matrix)和失真系数(disto ...