首先我们要先来区分一下下面的几种体系结构:

CS:Client/Server  客户-服务器结构
BS:Browser/Server  浏览器-服务器结构 
P2P:Peer to Peer  对等结构

BS其实是CS方式的一种特例,所以也应算在CS中。 
CS:主机A如果运行客户端程序,而主机B运行服务端程序,客户A向服务端B发送请求服务,服务器B向客户A提供服务,这种情况下,就是以CS的方式进行通信。我们所指的客户和服务器都是指通信中涉及的两个应用进程,而不是具体的主机。

P2P:以对等方式进行通信,并不区分客户端和服务端,而是平等关系进行通信。在对等方式下,可以把每个相连的主机当成既是主机又是客户,可以互相下载对方的共享文件。比如迅雷下载就是典型的P2P通信方式。

BS和CS通信的实质相同,都是客户端向服务器端发送请求,服务端接收并处理。但是BS相对于CS来说更方便,对电脑配置要求更低,并且易于维护,安全性在某种意义上要好些,CS中容易被反汇编,但是CS对于那种复杂的业务处理要更容易一些。

P2P的特点:

·资源共享

·资源分布

·各结点既是资源的提供者又是资源的使用者

下面是三种特别适合用P2P设计的应用程序:

(1)文件分发 (2)对等方社区中组织并搜索信息 (3)Skype,一种相当成功的P2P因特网电话应用(暂不详细说明)

1.P2P文件分发

在P2P文件分发中,每个对等方都能够重新分发其所有的该文件的任何部分,从而协助服务器进行分发。

·P2P体系结构的自扩展性

对足够大的N(对等方的数量):

客户机/服务器体系结构的分发时间随着对等方的数量N线性增加并且没有界。

P2P体系结构,其最小分发时间曲线与log2N曲线类似,因此最小分发时间远小于客户机/服务器体系结构的分发时间。其自扩展性很强。

·BitTorrent

BitTorrent是一种用于文件分发的流行P2P协议。

2.在P2P区域中搜索信息

·集中式索引(初始“Napster”的设计)----P2P和CS的混合体

如下图所示:

(1)初始时,所有的对等方要将自身的IP和可共享的文件名称通知集中式索引服务器,该索引服务器从每个活动的对等方那里收集这些信息,从而建立起一个动态索引,将每个文件拷贝映射到一个IP地址集合。

(2)当Alice需要下载一些文件时会将查询内容发送给索引服务器,服务器将查询结果返回给Alice(Bob的IP地址)。

(3)Alice根据收到的信息,从Bob处下载资源。

缺点:

·单点故障。·性能瓶颈和基础设施费用。·侵犯版权。

·查询洪泛(建立在“Gnutella”协议基础上)

查询洪泛采用完全分布式方法。在查询洪泛中,索引全面地分布在对等方的区域中。每个对等方索引可供共享的文件而不索引其他文件。

其扩展性差,尤其是为了防止某个对等方发起查询,该查询就会传播到整个覆盖网络的每个其他对等方,从而产生大量流量。为解决这个问题,设计者使用了受限查询洪泛,即限制其传播的最大跳数。

·层次覆盖(由FastTrack首创,Kazza和Morpheus也实现了这种文件共享协议)

该方法结合了上述两种方法的优秀特征,与洪泛查询类似,层次覆盖设计不使用专用的服务器(或服务器场)来跟踪和索引文件。然而,与洪泛查询不同的是,在层次覆盖的设计中并非所有对等方都是平等的。

如下图所示,如果某对等方不是超级对等方,则它就是一个普通对等方,并被指派为一个超级对等方的子对等方。

超级对等方维持着一个索引,该索引包括子对等方正在共享的所有文件的标识符、有关文件的元数据和相应子对等方的IP地址,但与前面的集中式索引不同,这里的超级对等方并不是一台专用服务器,而是普通对等方。超级对等方之间可以相互建立TCP连接,从而形成一个覆盖网络。

[计算机网络-应用层] P2P应用的更多相关文章

  1. 计算机网络-应用层(5)P2P应用

    P2P系统的索引:信息到节点位置(IP地址+端口号)的映射 在文件共享(如电驴中):利用索引动态跟踪节点所共享的文件的位置.节点需要告诉索引它拥有哪些文件.节点搜索索引从而获知能够得到哪些文件 在即时 ...

  2. [计算机网络-应用层] HTTP协议

    1.HTTP概况 Web的应用层协议是超文本传输协议(HTTP),它是Web的核心. HTTP由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文进行对话. ...

  3. 计算机网络-应用层之HTTP协议

    1.概念 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写:HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). ...

  4. 计算机网络-应用层(4)DNS协议

    域名系统(Domain Name System, DNS):一个分层的由DNS服务器实现的分布式数据库+一个使得主机能够查询分布式数据库的应用层协议 DNS服务器通常是运行BIND (Berkeley ...

  5. 计算机网络应用层之cookie

    一.生活中的cookie 无论你知不知道Cookie是什么,在你的生活中,肯定有使用过它.还记得你使用浏览器浏览网页时,当你要登陆时,网页上有一个记住密码或自动登陆的选项,当你选择时,你就使用了Coo ...

  6. [计算机网络-应用层] DNS:因特网的目录服务

    我们知道有两种方式可以识别主机:通过主机名或者IP地址.人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的.有着层次结构的IP地址.为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录 ...

  7. [计算机网络-应用层] FTP协议

    文件传输协议:FTP 如下图所示:用户通过一个FTP用户代理与FTP交互.该用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接.然后,该用户提供用 ...

  8. 计算机网络-应用层(3)Email应用

    因特网电子邮箱系统主要由用户代理(user agent) .邮件服务器(mail server) 和简单邮件传输协议(SMTP)组成   邮件服务器(Mail Server) 邮箱:存储发给该用户的E ...

  9. 计算机网络-应用层(2)FTP协议

    文件传输协议(FTP,File Transfer Protocol)是Internet上使用最广泛的文件传送协议.FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限.它屏蔽了 ...

随机推荐

  1. 使用Goland同步远程代码

    新版本的goland貌似已经有了Deployment功能,故本篇文章描述的方法也不推荐使用了 以前写php时候习惯使用phpstorm这个编译器,除去本身功能强大不说,比较方便的是其自身带的Deplo ...

  2. [NOIP2017]逛公园(DP)

    先spfa一遍处理出d[]数组,(从n开始bfs一遍标记可以达到n的点) 题意即,在走最短路的基础上,可以最多多走K长度的路径, 考虑DP,每次剩余可走的长度会因决策而改变,所以考虑dp[i][j]为 ...

  3. JavaWeb——库存管理系统(1)jsp部分---18.12.13

    add.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"    pa ...

  4. 使用 Vim 搭建 JavaScript 开发环境

    原文链接: https://spacevim.org/cn/use-vim-as-a-javascript-ide/ SpaceVim 是一个模块化的 Vim IDE,针对 JavaScript 这一 ...

  5. 杭州优步uber司机第一组奖励政策

    -8月9日更新- 优步杭州第一组: 定义为激活时间在2015/6/8之前的车主(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Uber司 ...

  6. P1803 凌乱的yyy

    P1803 凌乱的yyy 题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) ...

  7. 基于套接字通信的简单练习(FTP)

    本项目基于c/s架构开发(采用套接字通信,使用TCP协议) FTP-Socket"""__author:rianley cheng""" 功 ...

  8. 相机-imu外参校准总结

    1. 研究背景及相关工作 1)研究背景 单目视觉惯性slam是一种旨在跟踪移动平台的增量运动并使用来自单个车载摄像头和imu传感器的测量结果同时构建周围环境地图的技术.视觉相机和惯性测量单元(imu) ...

  9. 利尔达CC3200模块第一篇之-wlan_ap例程测试

    1. 本次采用利尔达的CC3200模块,CC3200主时钟80M,内部没有flash,必须外接SPI Flash.本次测试采用利尔达科技的CC3200的底板和模块(左边).烧写连接VCC, GND, ...

  10. 小组ITalk网站开发中使用到的一些技巧

    ----->Display属性和Visibility属性:一个清除内容和框体,另一个只清除内容而保留窗体: $('#abc').css({ 'font-size' : '12px', '-web ...