当前位置: 首页 > news >正文

计算机网络第2章-CDN(4)

视频流和内容分发网

HTTP流和DASH

在HTTP流中,视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有有一个特定的URL。当用户要看视频时,客户与服务器之间创建一个TCP连接并发送HTTP GET请求。

HTTP流具有严重缺陷,即所有客户接收到相同编码的视频。

为此开发出了基于HTTP流的新式流,”经HTTP动态适应性流“(DASH)。

在DASH中,视频编码为几个不同的版本,每个版本具有不同的比特率,用户可以自行选择不同速率的版本,从而优化用户体验。

使用DASH之后,每个视频版本存储在HTTP服务器中,并且各有一个URL。

HTTP服务器也有一个”告示文件“,为每个版本提供一个URL及其比特率。

内容分发网

几乎所有的视频流公司都用到“内容分发网”(CDN)。

CDN可以是“专用CDN”也可以是“第三方CDN”。

CDN通常采用两种不同的服务器安置原则。

1.深入

在编辑全球的接入ISP种部署服务器群来深入到ISP的接入网种,改善了用户感受的时延和吞吐量,但是成本昂贵。

2.邀请做客

在少量的关键位置建造大集群来邀请ISP做客,而不是将CDN放到ISP中,该方法节约了大量成本,但是会带来较高的用户时延和较低的吞吐量。

CDN操作

当用户主机的一个浏览器指令检索一个特定的视频(由URL标识)时,CDN必须截获该请求,因为:

1.确定此时适合用于该客户端的CDN服务器集群。

2.将客户的请求重定向到该集群的某台服务器。

一个简单的例子:

假定一个内容提供商NetCinema,雇佣了第三方CDN公司KingCDN来向用户发放视频。

在NetCinema的Web网页上,它的每个视频都被指派了一个URL,该URL包括了字符串”video“以及

该视频本身的独特标识符。

假设我们现在要访问”http://video.netcinema.com/6Y7B23V“这个网页的视频,则系统会执行下面大致六个步骤。

1.用户访问位于NetCinema的Web网页。

2.当用户点击链接”http://video.netcinema.com/6Y7B23V“时,用户主机发送了一个vedio.netcinema.comDNS请求

3.用户的本地DNS服务器(LDNS)接收到该请求,并且将该请求发送到NetCinema权威DNS服务器,该服务器观察到主机名video.netcinema.com中的字符串"video"NetCinema权威服务器并不返回一个IP地址,而是返回一个KingCDN域的主机名,如a1105.kingcdn.com。

4.从这时起,DNS请求进入了KingCDN专用的DNS设施中。LDNS发送向a1105.kingcdn.com的DNS请求,KingCDN的DNS系统向LDNS返回KingCDN内容服务器的IP地址。

5.LDNS向用户返回KingCDN内容服务器IP地址。

6.用户直接跟该KingCDN内容服务器建立TCP连接,并且发送HTTP请求,获得视频流。

集群选择策略

任何CDN部署,其核心是”集群选择部署“,即动态的将客户重定向到CDN中的某个服务器集群中的某个服务器。

第一种简单的策略是:

将用户重定向到地理位置最近的CDN上,但是该方法存在弊端。

例如客户端LDNS距离客户很远的时候,那么就会造成很大的时延。

再比如忽略了时延和可用宽带随因特网路径时间而变化,并且总是为该用户重定向到这个集群,就会造成某个时间点上,用户的体验极差!

第二个策略是:

CDN能够对其集群和客户之间的时延和丢包性能执行周期性的实时测量。

例如CDN向每个集群周期性的发送探测分组(Ping请求或者DNS请求)。

但是该方法也存在缺点,那就是有些LDNS可能会拒绝回应这些探测分组。

http://www.lryc.cn/news/195490.html

相关文章:

  • Linux常见的指令合集
  • 字符串_哈希
  • python 之enumerate()函数
  • 【LeetCode刷题(数据结构与算法)】:用队列实现栈
  • “客户端到服务器的数据传递”和“服务器上的数据传递”这两种数据传递的方式的区别
  • LCR 181 字符串中的单词反转
  • 百度OCR识别图片文本字符串——物联网上位机软件
  • JAVA学习(6)-全网最详细~
  • 睿趣科技:未来抖音开网店还有前景吗
  • 第六章 应用层 | 计算机网络(谢希仁 第八版)
  • c++ lambda 表达式
  • Go语言入门心法(七): 并发与通道
  • 前端组件封装:构建模块化、可维护和可重用的前端应用
  • GPT绘制流程图咒语
  • 【扩散模型从原理到实战】Chapter1 扩散模型简介
  • 使用轮廓分数提升时间序列聚类的表现
  • 蔬菜水果生鲜配送团购商城小程序的作用是什么
  • 金融用户实践|分布式存储支持数据仓库业务系统性能验证
  • 代码随想录二刷 Day41
  • C++项目实战——基于多设计模式下的同步异步日志系统-⑪-日志器管理类与全局建造者类设计(单例模式)
  • Hadoop3教程(十四):MapReduce中的排序
  • 测试需要写测试用例吗?
  • Qt 视口和窗口的区别
  • 使用Git将GitHub仓库下载到本地
  • 前端需要了解的浏览器缓存知识
  • 自动驾驶:控制算法概述
  • 【Mysql】Mysql的字符集和比较规则(三)
  • 【SpringCloud-11】SCA-sentinel
  • 设计模式:简单工厂模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):
  • 浅谈智能照明控制系统在智慧建筑中的应用