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

计算机网络应用层(5)-- P2P文件分发视频流和内容分发网

 💓个人主页:mooridy
💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客

💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第五、六节知识梳理
关注我🌹,和我一起学习更多计算机的知识~
🔝🔝🔝

目录

P2P 文件分发

P2P 体系与客户 - 服务器体系对比

BitTorrent

BitTorrent 最重要的机制:

两个问题?

请求哪些块?

响应哪个请求?

视频流和内容分发网

Internet Video

HTTP 流 和 DASH

HTTP 流

动态适应性流 (Dynamic Adaptive Streaming over HTTP, DASH)

内容分发网 (Content Distribution Network, CDN)


P2P 文件分发

P2P 体系与客户 - 服务器体系对比

P2P 体系结构最小分发时间总是小于客户 - 服务器体系结构。

BitTorrent

到 2016 年止,最为流行的 P2P 文件分发协议是 BitTorrent。

  • 洪流 (torrent):参与一个特定文件分发的所有对等方的集合。
  • 在一个洪流中的对等方彼此下载等长度的文件块 (chunk),典型的长度为 256KB。
  • 当一个对等方首次加入一个洪流时,他没有块。随着时间流逝,它累积了越来越多的块。当它下载块时,也为其它对等方上载了多个块。一旦某个对等方获得了整个文件,他也许会自私地离开,也许会无私地留在洪流中向其它对等方上载块。

BitTorrent 最重要的机制:

  • 每个洪流具有一个基础设施节点,称为追踪器 (tracker)。当一个对等方加入某个洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍在该洪流中。
  • 当一个新的对等方 A 加入洪流时,追踪器会随机地从参与对等方的集合中选择对等方的一个子集,并将这些对等方的 IP 地址发送给 A。
  • A 试图与该 IP 地址列表上所有的对等方创建并行的 TCP 连接。我们称所有与 A 创建 TCP 连接的对等方为邻近对等方,邻近对等方会随着时间而变化。
  • 任意时刻,每个对等方将具有该文件的块的子集,并且不同对等方具有不同的子集。A 周期性地询问每个邻近对等方它们所具有的块列表。有了这些信息,A 将对当前还没有的块发出请求。

两个问题?

请求哪些块?

最稀缺优先 (rarest first):针对她没有的块,最稀缺块是指那些在她邻居中副本数量最少的块,她会优先请求那些最稀缺块。目的是均衡每个块在洪流中的副本数量。

响应哪个请求?

对换算法:A 根据当前能够以最高速率向她提供数据的邻居,给出其优先权。以最高速率流入的 4 个邻居,被称为疏通 (unchoked)。每过 30 秒,她要随机选择另一个邻居 B,并向其发送块。因为 A 正在向 B 发送数据,她可能成为 B 前 4 位上载者之一。这样,B 将开始向 A 发送数据,如果 B 发送速率够高,B 也将成为 A 的前 4 位上载者。换而言之,每过 30 秒 A 将随机地选择一名新的对换伴侣,并与其对换。如果这两个对等方都满足彼此,它们将对方放入前 4 位列表中,并继续与对方对换,直到它们发现更好的伴侣为止。

视频流和内容分发网

Internet Video

  • 视频的一个重要特征是它能够被压缩,因此可以用比特率来衡量视频质量。
  • 比特率越高,图像质量越好。

HTTP 流 和 DASH

HTTP 流

  • 在 HTTP 流中,视频只是存储在 HTTP 服务器中的一个普通文件,有特定的 URL。用户通过 HTTP 请求获取视频文件,视频的字节被收集在客户应用缓存中。一旦该缓存中的字节数量超过预先设定的门限,用户应用程序就开始播放。同时,应用程序周期性地从缓存中抓取帧,解压并展现。
  • HTTP 流有一个严重缺陷:所有客户收到相同编码的视频。(单一画质)

动态适应性流 (Dynamic Adaptive Streaming over HTTP, DASH)

  • DASH 功能:在 DASH 中,视频编码为几个不同版本,其中每个版本具有不同的比特率。客户动态地请求来自不同版本且长度为几秒地视频段数据块。
  • DASH 实现:HTTP 服务器上会有一个告示文件 (manifest file),为每个版本提供一个 URL 及其比特率。客户先请求告示文件,然后再通过 HTTP GET 请求报文中指定 URL 和字节范围,一次选择一个块。在下载的同时,用户也测量接收带宽并运行一个速率决定算法来选择下次请求的块。

内容分发网 (Content Distribution Network, CDN)

是一个构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。(说简单点,CDN 就是缓存。)

  • CDN 可以是专用 CDN,即由内容提供商自己所拥有;也可以是第三方 CDN。
  • CDN 通常采用两种不同的服务器安置原则:
    • 深入 (Enter Deep):该原则通过在全球的接入 ISP 中部署服务器集群来深入到 ISP 的接入网中。但因为这种高分布式设计,维护和管理集群成为一大问题。其目标是靠近端用户,通过减少端用户和 CDN 集群之间(内容从这里收到)链路和路由器的数量,从而改善了用户感受的时延和吞吐量。
    • 邀请做客 (Bring Home):通过在少量关键位置建造大集群,以此邀请 ISP 来做客。被许多 CDN 公司所采用。邀请做客设计通常产生较低的维护和管理开销,可能以对端用户的较高时延和较低吞吐量为代价。

http://www.xdnf.cn/news/2484.html

相关文章:

  • RuntimeError: CUDA error: out of memory CUDA kernel errors might be 问题解决
  • TypeScript中的type
  • 220V转18V300mA非隔离电源芯片WT5105
  • 互联网大厂Java面试实录:从Spring Boot到微服务架构的技术问答
  • c++流对象
  • 什么是逐过程执行、逐语句执行和逐指令执行?GDB如何进行上述调试?
  • Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)
  • 三、UI自动化测试03--操作方法API
  • RPCRT4!NdrConformantStructUnmarshall函数分析的一个例子处理第二部分DomainSid
  • 【Nginx】负载均衡配置详解
  • 互联网大厂Java求职面试:从Java核心到微服务的深度探索
  • 【Android】硬件合成器 HWC
  • 4月27日日记
  • 基于spssau分析工具spss的简介
  • LeetCode 2444、1906、2682 题解(枚举右,维护左,前缀和)
  • 4.27算法题
  • AI-Browser适用于 ChatGPT、Gemini、Claude、DeepSeek、Grok的客户端开源应用程序,集成了 Monaco 编辑器。
  • adb push 报错:CreateProcess failure, error 123
  • 成功案例|探秘奶牛氧化应激,组学测序如何洞察微生物的 “一举一动”?
  • OpenFeign服务接口调用
  • 使用Three.js搭建自己的3Dweb模型(从0到1无废话版本)
  • [特殊字符] SQL注入攻击的常见写法及危害
  • Zookeeper断开连接时分布式锁释放问题的解决方案
  • 基于深度学习的智能交通流量监控与预测系统设计与实现
  • vue3 vite打包后动态修改打包后的请求路径,无需打多个包给后端
  • 从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 数字特征
  • 常用第三方库:shared_preferences数据持久化
  • 基于大模型的急性化脓性阑尾炎全程诊疗预测与方案研究
  • 【音视频】视频解码实战
  • RAG(Retrieval-Augmented Generation,检索增强生成)