当前课程知识点:计算机网络 > 第六章 应用层 > 6.5 P2P > P2P
这一节我们一起来学习
P2P应用的若干工作原理
我们这节分为4个部分
概述以及3个P2P的相关应用
具有集中目录结构
服务器的P2P工作方式
具有全分布式结构的
P2P文件共享程序
以及在P2P对等方中搜索对象
传统的客户机/服务器结构中
服务器就是数据源
客户机从服务器端请求数据
主要的应用有WWW
FTP、Web服务等
随着全球接入互联网人数的增长
对互联网应用的服务端
要求越来越高
吞吐量和并发量逐步加大
像国外的Google、Amazon
国内的阿里、百度
等大型互联网企业
十分关注如何使用集群
负载均衡等技术
来提高网站的并发和吞吐量
但对于保存大文件
给用户下载的中小型网站
在互联网爆发式增长下
用户数量越来越多
传输的文件越来越大
使用一台或几台服务器
和传统的FTP、HTTP协议
难以满足用户对下载速度的需求
受限于庞大的用户请求量
磁盘读取速度、带宽等因素
传统的客户机/服务器结构
有如下限制
可伸缩性很难实现
单点故障
需要管理
网络边缘未使用的资源
CPU周期、存储等等
所以P2P试图解决这类问题
对等式网络peer-to-peer
简称P2P
又称点对点技术
是无中心的服务器
依靠用户群peer之间
交换信息的互联网体系
它的作用在于
网络的参与者
共享他们所拥有的一部分硬件资源
处理能力、存储能力
网络连接能力、打印机等
这些共享资源通过网络
提供服务和内容
能被其它对等节点
直接访问而无需经过中间实体
减低了以往网络传输中的节点
以降低资料遗失的风险
与有中心服务器的中央网络系统不同
对等网络中的每个用户端
既是资源服务或者内容提供者Server
又是资源获取者Client
任何一个节点无法直接找到其他节点
必须依靠其用户群进行信息交流
如图 我们可以总结出
P2P网络的一些特征
1.非中心化
P2P是全分布式系统
网络中的资源和服务分散在
所有的节点上
信息的传输和服务的实现都
直接在节点之间进行
可以无需中间环节和服务器的介入
2.可扩展性
用户可以随时加入该网络
系统的资源和服务能力(随之)
同步扩充
理论上其可扩展性
几乎可以认为是无限的
3.健壮性
因为服务是分散在各个节点之间
部分节点或网络遭到破坏
对其他部分的影响很小
故P2P具有耐攻击、高容错的特点
P2P网络一般在部分结点失效时
能够自动调整整体拓扑
保持其它结点的连通性
P2P网络通常都是
以自组织的方式建立起来
并允许结点自由地加入和离开
4.高性价比
P2P架构可以有效地利用互联网中
散布的大量普通结点
将计算任务或存储资料
分布到所有的节点上
利用其中闲置的计算能力或存储空间
达到高性能计算和海量存储的目的
5.隐私保护
在P2P网络中
由于信息的传输
分散在各节点之间进行
而无需经由某个集中环节
用户的隐私信息
被窃听和泄漏的可能性大大缩小
6.负载均衡
由于每个节点
既是服务器又是客户端
减少了传统客户机/服务器模式中
对服务器计算能力、存储的要求
同时因为资源分布在多个节点
更好的实现了整个网络的负载均衡
下面我们来学习
具有集中目录服务器的
P2P工作方式
Napster是一款可以在网络中
下载自己想要的MP3文件的软件
它同时能够让自己的机器
也成为一台服务器
为其它用户提供下载功能
图中给出了某个用户
想下载音乐文件的主要交互过程
用户X向Napster目录服务器查询
这是客户-服务器结构
谁有音乐文件MP3#
Napster目录服务器回答X
有三个地方有文件MP3#
即A,B和C
给出了这三个地点的IP地址
于是用户得到所需的
文件MP3#的三个下载地点
用户X可以随机地
从三个地点中任选一个
也可以使用PING报文
寻找最方便下载的一个机器
在图中
我们假设X向A发送
下载文件MP3#的请求报文
现在X和A都使用P2P方式通信
互相成为对等方
X是临时的客户
而对等方A是临时的服务器
对等方A现在作为服务器
把文件MP3#发送给X
具有全分布式结构的
P2P文件共享程序
在P2P的文件分发应用中
2001年由Brahm Colen开发的
Bit Torrent比特洪流
是很具有时代代表性的一个
在互联网爆发式增长下
用户数量越来越多
传输的文件越来越大
使用一台或几台服务器
和传统的FTP、HTTP协议
难以满足用户对下载速度的需求
受限于庞大的用户请求量
硬盘读取速度、带宽等
BitTorrent协议解决了这些问题
BitTorrent协议
简称BT
是一个网络文件传输技术
能够实现点对点文件分享的技术
组成有.torrent文件
种子提供站点
索引服务器
内容发布者/下载者
BitTorrent协议
处于TCP/IP结构的应用层
根据发布的文件
生成提供一个.torrent文件
即种子文件
也简称为“种子”
包含Tracker信息和文件信息两部分
Tracker信息主要是
下载中需要用到的
Tracker服务器的地址
和针对Tracker服务器的设置
文件信息是根据
对目标文件的计算生成的
把文件虚拟分成大小相等的块
块大小必须是2k的整数次方
种子包含每个块的
索引信息和Hash验证码
即索引
下载时
首先解析种子文件得到Tracker地址
然后连接Tracker服务器
Tracker服务器回应下载者的请求
提供其他下载者的地址
下载者再连接到其他下载者
根据种子文件
两者分别对对方
告知自己已经有的块
然后交换对方没有的数据
下载者每得到一个块
需要算出下载块的Hash验证码
与种子文件的对比
如果一样则说明块正确
不一样则需要重新下载这个块
保证每个块都是正确的
下载步骤
1 从种子发布站点
下载.torrent文件
2 peer解析.torrent文件
得到tracker服务器地址
3 连接tracker服务器
得到seed及所有下载者信息
4 从(seed)及其他下载者
下载、上传资源
我们先来学习一下
P2P中文件存储的结构
1、P2P文件系统中
对等用户的数量非常多
并且处于一种无序状态
2、P2P系统的索引
信息到节点位置
IP地址+端口号的映射
3、Gnutella是采用全分布方式
定位内容的P2P文件共享应用程序
他解决了集中式目录服务器
所造成的瓶颈问题
然而Gnutella
在非结构化的覆盖网络中
采用查询洪泛的方法
来进行查找的
因此查找效率较低
4、分布式散列表DHT
利用好散列函数
把资源名K
以及其存放的结点IP地址N部分
都分别映射为资源名标识符KID
和结点标识符NID
通过散列函数SHA-1
映射得到的标识符额
能够比较均匀而稀疏地
分布在Chord环上
Chord环把结点标识符数值
从小到大沿顺时针排列成
一个环形覆盖网络
1.结点标识符NID
按照其标识符值
映射到Chord环上对应的点
2.资源名标识符KID
则按照其标识符值
映射到与其值最接近的下一个NID
3.每个资源由Chord环上
与其标识符值最接近的
下一个结点提供服务
然后我们来思考一下
如何在Chord环上查找文件
1、在Chord环上查找资源
从理论上讲
任何一个结点
只要从其后继结点
一个一个地遍历下去
一定可以找到
所查询的资源
可见一定要定位一个资源
平均需要沿环发送查找报文N/2个
或遍历O(N)个结点
N为环上的总结点数
显然这种顺序查找的方法效率很低
2、为了加速查找
在Chord环上
可以增加一些指针表
它又称为路由表或查找器表
-1.1 计算机网络的发展历程及其在信息时代中的作用
-1.2 互联网的组成
--互联网的组成
-1.3 电路交换和分组交换
-1.4 计算机网络的性能
--计算机网络的性能
-1.5 计算机网络体系结构和层次划分
-第一章
-2.1 数据通信系统模型
--数据通信系统模型
-2.2 导向型传输媒体
--导向型传输媒体
-2.3 光导纤维
--光导纤维
-2.4 非导向型传输媒体
--非导向型传输媒体
-2.5 信道的极限容量
--信道的极限容量
-2.6 信道复用技术
--信道复用技术
-2.7 ADSL
--ADSL
-第二章
-3.1 数据链路层的三个基本问题
-3.2 CSMA/CD协议
-3.3 虚拟局域网
--虚拟局域网
-3.4 扩展的以太网
--扩展的以太网
-3.5 高速以太网
--高速以太网
-第三章
-4.1 分类的IP地址-划分子网
-4.2 无分类编址-构造超网
-4.3 ICMP协议
--ICMP协议
-4.4 路由器结构
--路由器结构
-4.5 RIP协议
--RIP协议
-4.6 IP多播
--IP多播
-第四章
-5.1 用户数据报协议UDP
-5.2 TCP报文段首部格式
-5.3 可靠传输工作原理
--可靠传输工作原理
-5.4 字节为单位的滑动窗口实现
-第五章
-6.1 网络应用层
--网络应用层
-6.2 DNS
--DNS
-6.3 FTP
--FTP
-6.4 HTTP
--HTTP
-6.5 P2P
--P2P
-6.6 计算机网络面临的安全性威胁
-6.7 防火墙
--防火墙
--第六章
-7.1 交换机基本配置
--交换机基本配置
-7.2 路由器基本配置
--路由器基本配置
-7.3 交换机端口隔离
--交换机端口隔离
-7.4 跨交换机实现相同VLAN通信
-7.5 动态路由
--动态路由
-7.6 静态路由
--静态路由