计算机网络学习笔记11(P2P)
网课是b站中科大郑烇老师,杨坚老师课程,郑烇老师账号发布的
图片均来自郑老师分享的PPT
第二章 应用层
目录
- 第二章 应用层
- 2.5纯P2P架构
- 1、P2P的优点
- 2、文件分发: C/S vs P2P
- 1)C/S模式的文件分发时间
- 2)P2P模式的文件分发时间
- 3)总结
- 3、P2P的管理
- 1)非结构化P2P
- 2)DHTC(结构化)P2P
- 4、集中式目录:
- P2P文件共享:
- 集中式目录:
- 5、完全分布式Gnutella(查询洪泛)
- 1)特点
- 2)覆盖网络:图
- 3)Gnutella协议
- 6、混合体KaZaA(利用不匀称性)
- 过程
- 细节
- Kazaa小技巧
- 7、P2P文件分发:BitToorent
- Peer加入torrent的过程
- BitTorrent: 请求,发送文件块
- 请求块:
- 发送块:一报还一报tit-for-tat
2.5纯P2P架构
1、P2P的优点
- 没有(或极少)一直运行的服务器
- 任意端系统都可以直接通信
- 利用peer的服务能力
- Peer节点间歇上网,每次IP地址都有可能变化
例子:文件分发 (BitTorrent)、流媒体(KanKan)、VoIP (Skype)
2、文件分发: C/S vs P2P
问题: 从一台服务器分发文件(大小F)到N个peer需要多少时间?
Peer节点上下载能力是有限的资源
1)C/S模式的文件分发时间
- 服务器传输: 都是由服务器发送给peer,服务器必须顺序传输(上载)N个文件拷贝:
发送一个copy: F/us
发送N个copy: NF/us
(us是服务器的带宽) - 客户端: 每个客户端必须下载一个文件拷贝
dmin = 客户端最小的下载速率
下载带宽最小的客户端下载的时间:F/dmin
2)P2P模式的文件分发时间
服务器传输:最少需要上载一份拷贝
发送一个拷贝的时间:F/us客户端: 每个客户端必须下载一个拷贝
最小下载带宽客户单耗时:: F/dmin客户端: 所有客户端总体下载量NF
最大上载带宽是:us+ Sui
除了服务器可以上载,其他所有的peer节点都可以上载
3)总结
3、P2P的管理
非结构化P2P
DHTC(结构化)P2P
1)非结构化P2P
两个peer 之间有逻辑上的邻居关系,这两个peer是随机的,无序的
- 集中式目录
- 完全分布式Gnutella
- 混合体KaZaA
2)DHTC(结构化)P2P
两个peer 之间有逻辑上的邻居关系,这两个peer是有序的
peer之间可以构成环、树等结构
DHT:Distributed Hash Table
哈希表
DHT方案
环形DHT 以及覆盖网络
Peer波动
4、集中式目录:
P2P文件共享:
所有的对等方都是服务器= 可扩展性好
两大问题:
- 如何定位所需资源
- 如何处理对等方的加入与离开
可能的方案:集中、分散、半分散
集中式目录:
(最初的“Napster”设计)
当对等方连接时,它告知中心服务器: IP地址 、内容
集中式目录中存在的问题
单点故障(目录服务器只有一个)
性能瓶颈
侵犯版权
文件传输是分散的,而定位内容则是高度集中的
5、完全分布式Gnutella(查询洪泛)
1)特点
- 全分布式(没有中心服务器)
- 开放文件共享协议
- 许多Gnutella客户端实现了Gnutella协议(类似HTTP有许多的浏览器)
2)覆盖网络:图
如果X和Y之间有一个TCP连接,则二者之间存在一条边
所有活动的对等方和边就是覆盖网络
边并不是物理链路
给定一个对等方,通常所连接的节点少于10个
3)Gnutella协议
- 在已有的TCP连接上发送查询报文
- 对等方转发查询报文
- 以反方向返回查询命中报文
可扩展性:限制范围的洪泛查询
TTL限制查询中转次数
6、混合体KaZaA(利用不匀称性)
过程
- 每个对等方要么是一个组长,要么隶属于一个组长
对等方与其组长之间有TCP连接
组长对之间有TCP连接 - 组长跟踪其所有的孩子的内容
- 组长与其他组长联系(组长和组长层面是分布式)
转发查询到其他组长
获得其他组长的数据拷贝
细节
- 每个文件有一个散列标识码(哈希值)和一个描述符
- 客户端向其组长发送关键字查询
- 组长用匹配进行响应:
对每个匹配:元数据、散列标识码和IP地址 - 如果组长将查询转发给其他组长,其他组长也以匹配进行响应
- 客户端选择要下载的文件
向拥有文件的对等方发送一个带散列标识码的HTTP请求(发送的是哈希值)
Kazaa小技巧
- 请求排队
限制并行上载的数量
确保每个被传输的文件从上载节点接收一定量的带宽 - 激励优先权
鼓励用户上载文件
加强系统的扩展性 - 并行下载
从多个对等方下载同一个文件的不同部分
HTTP的字节范围首部
更快地检索一个文件
7、P2P文件分发:BitToorent
文件被分为一个个块256KB
网络中的这些peers发送接收文件块,相互服务
- Torrent(洪流): 节点的组,之间交换文件块
- tracker:跟踪torrent中参与节点
Peer加入torrent的过程
(1)一开始没有块,但是将会通过其他节点处累积文件块
(2)向跟踪服务器(BT服务器)注册,获得peer节点列表,和部分peer节点构成邻居关系 (“连接”)
即——>BT客户端向跟踪服务器发出请求
跟踪服务器给BT客户端分配几个peer节点
- 当peer下载时,该peer可以同时向其他节点提供上载服务 ,Peer可能会变换用于交换块的peer节点
- 扰动churn: peer节点可能会上线或者下线
- 一旦一个peer拥有整个文件,它会(自私的)离开或者保留(利他主义)在torrent中
BitTorrent: 请求,发送文件块
请求块:
- 在任何给定时间,不同peer节点拥有一个文件块的子集
- 周期性的,Alice节点向邻居询问他们拥有哪些块的信息
- Alice向peer节点请求它希望的块,稀缺的块
发送块:一报还一报tit-for-tat
- Alice向4个peer发送块,这些块向它自己提供最大带宽的服务
其他peer被Alice阻塞 (将不会从Alice处获得服务)
每10秒重新评估一次:前4位 - 每个30秒:随机选择其他peer 节点,向这个节点发送块
“优化疏通” 这个节点
新选择的节点可以加入这个top 4
计算机网络学习笔记11(P2P)相关推荐
- 【计算机网络学习笔记】(汇总目录)
计算机网络学习笔记(汇总目录) 文章目录 点击以下标题,跳转到对应章节的详细讲解 [计算机网络学习笔记01]计算机网络概述(上) [计算机网络学习笔记02]计算机网络概述(中) [计算机网络学习笔记0 ...
- 计算机网络学习笔记:第二章
文章目录 计算机网络学习笔记:第二章 前言 2.1.应用层协议原理 2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 可供应用程序使用的运输服务 2.1.4 因特网提供的传输层服务 ...
- 【计算机网络学习笔记】计算机网络
计算机网络学习笔记 第一章 计算机网络概述 1. 计算机网络概述 1.1 计算机网络的概念 1.2 计算机网络的组成 1.3 计算机网络的功能 1.4 计算机网络的分类 1.5 计算机网络的标准化工作 ...
- 计算机网络学习笔记(详尽版)
计算机网络学习笔记 计算机网络 第一章 定义和特点 网络 定义 功能 特点 组成 类别 性能 结构 本章重要概念 第二章 物理层 基本概念和标准 数据通信基础知识 物理层下的传输媒体 引导型传输媒体 ...
- 计算机网络学习笔记(2. 什么是网络协议)
计算机网络学习笔记(2. 什么是网络协议) 1. 协议是计算机网络有序运行的重要保证 硬件(主机,路由器,通信链路等)是计算机网络的基础 计算机网络中的数据交换必须遵守事先约定好的规则 如同交通系统 ...
- 计算机网络-学习笔记
计算机网络-学习笔记 1.1.1 概念.组成.功能和分类 概念:计算机网络:是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统.计算机网 ...
- 片偏移怎么计算_计算机网络学习笔记(四)之网络层
点击蓝字关注我吧 越努力越幸运!!! 1 网络层的功能 1.1异构网络互联 网络的互联:指将两个以上的计算机网络,通过一定的方法, 用一种或多种通信处理设备(即中间设备)相互联接起来,以构成更大的网络 ...
- 计算机网络学习笔记之数据链路层的介质访问控制
计算机网络学习笔记之数据链路层的介质访问控制 介质访问控制 信道划分介质访问控制 随机访问介质访问控制 ALOHA协议(不听就说) 纯ALOHA协议 时隙ALOHA协议 比较 CSMA协议(先听再说) ...
- 【计算机网络学习笔记17】网络安全、加密技术、“Virtual Private Network”技术
[计算机网络学习笔记17]网络安全.加密技术."Virtual Private Network"技术 一.网络安全概述 1.1 网络系统的安全目标: 1.可用性(Availabil ...
- 计算机网络学习笔记---第一章
计算机网络学习笔记 第一章 文章目录 计算机网络学习笔记 第一章 前言 一.计算机网络的概念 (一)计算机网络的功能 1.数据通信(连通性) 2.资源共享(硬件 软件 数据) 3.分布式处理 (Had ...
最新文章
- 华为实习日记——第四天
- iOS linker command failed with exit code 1 (use v to see invocation)
- CentOS 初体验十八:grep命令使用
- linux停止jar程序,Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
- 深入浅出自定义标签(二)生成javascript
- oracle高水位线
- 修改数据库的兼容级别
- Android 和 iOS 各有千秋
- qq数据泄露_用这个开源项目来解决你团队里猪队友泄露公司敏感信息的问题
- 【pygame】微信飞机大战
- VS2017+Qt5.12新建.qrc文件报错
- [Unity]腾讯SDK踩坑之路(3)--米大师坑 + MSDK坑 (2)
- 架构师日记——VCL介绍和使用
- gazebo教程(八)场景建模
- 从各大APP年度报告看用户画像——标签,比你更懂你自己
- vant框架van-field
- 如何调动员工的积极性
- GPU的发展史,GPU与CPU的关系是什么?为何现在GPU越来越重要?
- 从国外的网站上下载包很慢的解决办法
- 小觅相机深度版运行Vins-mono
热门文章
- Visual Studio 2019 企业版 16.9.x 创建离线包并安装教程(带百度网盘下载地址和序列号)
- c语言赋值语句逗号,C++中赋值运算符与逗号运算符的用法详解
- java重构工具_Piranha(陈旧代码自动重构工具)
- flutter 实现文字竖排以及动画效果(文字逐一显示)
- 我叫MT online 公会BOSS百分比、难度、BOSS技能及站位
- 链接形式的客服代码 QQ客服代码
- Abstraction Functions and Rep Invariants
- js获取 本周,本月的日期
- 南航率先启用“手机登机”
- JAVA接口签名(Signature)实现方案