计算机网络 -P2P、视频流和内容分发网 -应用层

计算机网络 -P2P、视频流和内容分发网 -应用层

  • P2P
    • 一、什么是P2P文件分发?
    • 二、为啥要用P2P?
    • 三、P2P是怎么工作的?(以BitTorrent为例)
      • 3.1 怎么加入到对等方的集合中?
      • 3.2 怎么请求洪流中的对等方提供下载给己方?
      • 3.3 我们光白嫖怎么行?要怎么提供块给其他对等方?
  • 视频流和内容分发网
    • 一、HTTP和DASH
    • 二、内容分发网
      • 2.1 什么是内容分发网?
      • 2.2 内容分发网(CDN)是怎样工作的?
      • 2.3 用户是如何选到最快速的CDN集群服务器?

P2P

一、什么是P2P文件分发?

我们在中国看见最多的文件分发层面的P2P而且也是我们用得最多的是迅雷。P2P的意思是让成对的间歇连接的主机用户参与到分发文件的队列中来。不使用CS模式来传输文件。

二、为啥要用P2P?

我们知道如果一个视频流文件或者其他大型文件的传输使用CS模式的话,会让服务器承担极大的负担而且与请求方之间的带宽费用也十分昂贵。而P2P将每一个请求方(下称对等方)加入到分发文件的队伍中,这大大减轻了服务器的负担,而且由于分发文件的主机的加入,接收文件的速度也会加快(由于服务器没有对单个对等方实行限速,所以会比使用CS模式的更快,但不会超过自己的带宽)。而且P2P的体系结构扩展性非常的强
在使用CS模式进行分发时,最小分发时间随对等方的增加呈线性增长,而P2P模式的最小分发时间均小于同等条件的CS模式的最小分发时间,并且随着对等方的增加,最小分发时间的增长越缓慢,将会无限趋近于一个值。

三、P2P是怎么工作的?(以BitTorrent为例)

3.1 怎么加入到对等方的集合中?

参与某个特定文分发的所有对等方的集合被称为torrent(洪流)。在洪流中的对等方彼此下载等长度的文件块(chunk),一般长为256KB.当一个对等方首次加入一个洪流时,它没有块。所以需要调用BitTorrent中的最稀缺优先算法,将当前洪流中最稀缺的块给下载下来。(这样子可以保证在整个洪流中每个块的保有量,防止有些块下载通道过于拥挤)。现在我们有下一个问题就是

3.2 怎么请求洪流中的对等方提供下载给己方?

BitTorrent中有一个机灵的对等算法。该算法将会选出4个当前能够以最高速率向你提供数据的对等方邻居,向他们请求块的下载。这个拥有4个对等方的队列每隔10s中就会刷新一次,以保证我们的正常快速的下载,这个操作叫做疏通。那

3.3 我们光白嫖怎么行?要怎么提供块给其他对等方?

每隔30s,我们将会随机的抽取一个邻居向其发送块,当你发的多的话,他也会给你发一些你没有的块。这样子每个30s你就能与一个邻居快速的进行交换块的操作。
**需要注意的是,除了上面这5个对等方,其他的对等方均被阻塞了!!**这样子就构成了一圈“我为人人,人人为我”的良好P2P生态。

顺带一提,我们平时会发现在BitTorrent上下载东西一开始会比较慢,后来慢慢的速度才会上来就是因为上面的这些流程造成的。

视频流和内容分发网

在开启这个话题前先简单了解一下互联网上的视频,互联网上的视频是一种以恒定的帧率来展现一系列的图片的过程。所以一般的视频网站在客户端的上会给客户缓存一定时间的视频。
视频在网络上最为重要的性能就是平均端到端吞吐量。所以如果可以让不同的人群在对同一个视频观看的时候可以灵活调整清晰度的话可以节省很多的资源和带宽。

一、HTTP和DASH

他们2个协议最大的区别就是HTTP它没办法将同一个视频分成不同的编码格式,而DASH它可以将视频编码为几个不同的版本,用户无需手动改变清晰度DASH在后端就会根据你的带宽来决定你的清晰度。(HTTP需要手动决定)

二、内容分发网

我们在使用视频网站进行观看视频的时候是否有一个疑问。视频网站是怎么把数以亿计的视频快速的加载在我们的用户客户端上在线播放的?
假设这家公司只有一个服务器(首先铁定会有单点故障),如果一个用户在地球的另一端请求播放视频那岂不是得请求超时?

2.1 什么是内容分发网?

内容分发网(CDN)是指为了应对分布与全世界的用户分发巨量视频数据的一种分布式服务器集群。
通常会有2个部署方法:

  1. 将CDN部署到全球接入的ISP中,深入的部署到ISP接入网。这样子需要很多的经费去世界各地建设CDN而且带宽费用也很贵。所以在世界级网站是不使用这种部署方法的。
  2. 在少数关键位置建造打击群来邀请ISP访问。而不是部署到每一个ISP上,通常这些CDN会放到 IXP(互联网交换中心,不同运营商之间相互连通的地方)。这样子比第一种部署少了很多维护和管理开销。

在每一个CDN上不可能都拥有视频网站上的所有视频,所以一般是在CDN上存放经常访问该服务器的用户上最受欢迎的视频。根据不同公司的策略,有一些公司在处理CDN缓存上是采取Web缓存类似的方法,这属于拉高速缓存;而有一些是使用推高速缓存的方法,事先将热门的视频在非高峰时期放入CDN中。

2.2 内容分发网(CDN)是怎样工作的?

大多数的CDN是利用DNS来截获和重定向请求的。
在用户对视频进行访问时,首先是通过DNS得到主机IP地址对视频网站进行访问,而视频网站发现他是请求网站内的其中一个视频,所以网站将会发送一个CDN权威服务器的主机名给本地DNS服务器(LDNS)。

这里插一下上一篇中我们不知道为什么当主机不是当前网址的权威服务器时需要存储一条NS和一条A记录吗,在这里我们可能可以得到答案,因为在上一段描述中,我们可以得知让LDNS重定向到CDN服务器是因为视频网站的DNS发送了一条CDN的主机名而不是CDN的IP地址,所以这是不是表示当DNS收到主机名的时候代表仍然未达到目的服务器,还需要继续迭代。

通过主机名,本地DNS又再一次的请求CDN,得到CDN的内容的IP地址后转发给用户,一旦用户得到IP地址他就能建立一条TCP连接,这个时候就能对视频进行GET请求了(此处可以使用HTTP或者DASH)。

2.3 用户是如何选到最快速的CDN集群服务器?

在CDN中会有一个集群选择策略,,就是为了解决这个问题,其中有2种策略,如下:

  1. 地理上最近。将地理上最近的CDN服务器返回给用户。但是会有一个问题,假如最近的CDN在隔壁国家,而隔壁国家与我们有墙,所以地理上最近不一定是网络上最近。
  2. CDN对所有LDNS进行周期性的时延监控以及丢包统计。将最低延迟的CDN返回给用户。这种也有一个问题就是,许多LDNS会不响应这些测试用的请求信息。

你可能感兴趣的:(计算机网络,网络)