【USTC 盘算机网络】第二章:应用层 - P2P、CDN

[复制链接]
发表于 2025-10-10 19:24:24 | 显示全部楼层 |阅读模式
本文起首先容了网络架构中的另一大模式:P2P,重要先容告终构化 P2P 与非结构化 P2P,以及怎样通过会合式目次或查询洪泛方法查找资源,接着先容了流媒体传输技能 DASH 与内容分发网络 CDN,通过 CDN 可以大概实现快速、稳固、安全内容传输的网络架构。
1. P2P

1.1 先容

之前所先容的应用步调都是基于 C/S 架构的,全部的数据交换和服务哀求都依赖于一个或多个中心折务器。P2P(Peer-to-Peer,对等网络或点对点技能)是一种分布式网络架构,其焦颔首脑是让网络中的每个节点既扮演客户端的脚色,也扮演服务器的脚色,直接与其他节点举行通讯和资源交换,而不依赖于一个会合式的服务器
P2P 中的每个节点称为对等体,这种模式使得每个节点既可以哀求数据,也可以提供数据,从而实现真正的去中心化。
P2P 架构的优缺点如下:

  • 优点

    • 高扩展性:随着更多节点到场,网络团体资源(带宽、存储、算力)也随之增长,体系性能不会因节点增多而显着降落。
    • 结实性与容错性:去中心化结构克制了单点故障,纵然部分节点失效,团体网络仍能正常运作。
    • 低资本:无需昂贵的会合式服务器,资源由网络中各个平常节点共享。
    • 隐私掩护:某些 P2P 体系支持匿名通讯,低沉用户信息走漏风险。

  • 缺点

    • 架构复杂性:节点发现、毗连创建、数据传输等必要复杂的协议支持,如 NAT 穿透等技能。
    • 安全风险:易受恶意节点、中毒攻击、拒绝服务攻击等威胁,必要加强安全和验证机制。
    • 搜刮服从:非结构化 P2P 网络在大规模情况下的搜刮服从较低,容易产生广播风暴。
    • 法律风险:文件共享中涉及版权题目,部分 P2P 应用曾因侵权遭遇法律制裁。

1.2 资源查找

按网络拓扑结构可以将 P2P 分为结构化与非结构化的 P2P:

  • 结构化 P2P:结构化 P2P 网络通过预先计划的规则构造整个网络的拓扑结构,通常接纳分布式哈希表(DHT)来为节点和资源分配“位置”或“键”。每个节点负责管理一部分键值空间,从而使得文件或资源的存储和查找都有确定的规则。当一个节点必要查找某个资源时,可以通过 DHT 算法快速定位到负责该键的节点,查找过程通常只需颠末对数级的跳数。
  • 非结构化 P2P:非结构化 P2P 网络中,节点之间的毗连是随机的或根据用户自主选择形成的,并没有预先界说的全局结构或规则。这类网络常常依赖洪泛(flooding)或随机游走等方法来查找资源。当节点必要查找资源时,它会向邻人节点发出哀求,并由这些邻人再转发哀求。这种“广播式”或“洪泛式”搜刮方法在查找热门资源时比力有效,但对于冷门或稀缺资源,乐成率较低且会产生大量网络流量。
结构化 P2P 查询速率快且具有确定性,网络规模扩大时,每个节点的负载相对平衡,但是维护 DHT 和路由表必要较复杂的协议;非结构化 P2P 无需维护全局索引或复杂的数据结构,容易实现,但是洪泛搜刮会斲丧大量带宽,且搜刮效果大概不完全可靠,随着网络规模的增大,广播带来的网络负载会显着增长,影响团体性能
在 P2P 网络中,资源发现是一个关键题目,重要有两种范例方法:会合式目次和查询洪泛。
(1)会合式目次
会合式目次的工作原理为节点在到场网络后,会将本身共享的资源信息注册到一个或多个中心折务器上,这些服务器充当全局目次或索引,记录全部节点所共享的文件或资源。其他节点在必要查找某个资源时,只需向该目次服务器查询,就能快速定位到拥有该资源的节点。
其优点是查询速率快,因目次信息会合管理,搜刮开销较小,且实现简朴,实用于早期或规模较小的 P2P 体系(如 Napster)。但是这种方法存在单点故障风险,目次服务器若出现故障,整个体系的资源发现本事将受到影响,而且容易受到攻击和法律羁系,也就是中心目次服务器成为被攻击或羁系的目的。

(2)查询洪泛
在无中心目次的非结构化 P2P 网络中,每个节点通过与邻人节点随机毗连构成网络。当一个节点必要查找某个资源时,它会向全部直接相连的邻人节点发送查询哀求,这些邻人节点再将哀求转发给它们的邻人,云云“洪泛”整个网络,直到查询到达预设的跳数(TTL)限定为止,假如某个节点拥有该资源,就会向发起查询的节点返反相应,这个过程着实就是广度优先搜刮(BFS)。
其优点是完全去中心化,没有单点故障,网络更为结实,节点可以自由到场和退出,顺应性强。缺点是查询服从低,尤其是在大规模网络中,洪泛式搜刮会产生大量重复消息,占用大量带宽和盘算资源,对于冷门资源,查询乐成率较低,由于哀求消息在网络中大概因 TTL 限定而无法覆盖到拥有该资源的节点。
Gnutella 是最早的纯去中心化的 P2P 文件共享协议之一:

在 Gnutella 网络中,一个新的节点(对等方)到场的过程大抵如下:

  • 引导与启动:由于 Gnutella 本身没有中心折务器,客户端通常会预先设置一份引导节点的列表(这些节点是网络中已知且在线的对等方)。新节点启动时会先实验与这些已知节点创建毗连。
  • 节点发现

    • Ping 消息:新节点创建开端毗连后,会向它毗连的邻人节点发送 Ping 消息。
    • Pong 复兴:收到 Ping 消息的节点会向本身的邻人转发这个 Ping 消息并向发送来 Ping 消息的节点返回 Pong 消息,此中包罗自身的 IP 所在、端口和一些根本的状态信息。
    • 邻人列表构建:新节点通过汲取到的 Pong 消息,构建本身的邻人列表,从而徐徐融入整个网络中。

  • 网络整合:通过不绝发送 Ping 以及其他查询消息,新到场的节点徐徐相识网络中的其他节点,并可以到场资源搜刮、共享文件等操纵。整个过程基于消息洪泛机制,因此网络中每个节点在搜刮或传播信息时,都会将消息转发给它的全部邻人(通常会有 TTL 限定,防止无穷传播)。
这种无中心、基于洪泛的节点到场方式固然简朴、完全去中心化,但在大规模网络中也大概带来消息冗余和网络负载较高的题目。
KaZaA 是一款曾风靡一时的 P2P 文件共享软件,与 Gnutella 差别,KaZaA 接纳了肴杂式或半中心化的架构。每个对等方要么是一个组长,要么附属于一个组长,对等方与其组长之间有 TCP 毗连,组长对之间也有 TCP 毗连,组长会跟踪其全部的孩子的内容,组长可以大概转发查询到其他组长,大概得到其他组长的数据拷贝。

KaZaA 查询文件时每个文件有一个散列标识码和一个形貌符,客户端向其组长发送关键字查询,组长匹配数据:元数据、散列标识码和 IP 所在后举行相应,假如组长将查询转发给其他组长,其他组长也以匹配举行相应,末了客户端选择要下载的文件(向拥有文件的对等方发送一个带散列标识码的 HTTP 哀求)。
1.3 BitTorrent

BitTorrent 是一种用于大文件高效分发的点对点(P2P)文件共享协议,接纳的是去中心化的“多对多”传输模式,使得每个用户在下载文件的同时,也在上传本身已经下载的数据块,从而充实使用整个网络的带宽资源。
BitTorrent 协议将文件分为很多小的“块”或“片断”(piece),每个片断都有独立的 SHA1 校验码以包管数据完备性。文件的元数据(即 .torrent 文件)接纳 Bencoding 格式编码,内里包罗文件(或文件聚集)的根本信息(名称、巨细、分片长度、各片断的哈希列表等)与 Tracker 的 URL(用于开端发现其他对等节点)。

  • .torrent 文件称为种子文件,是一种很小的文件,它充当了“索引”的脚色,指明白目的文件怎样被切分,以及应该接洽哪个 Tracker 来探求其他共享该文件的用户。
  • Tracker 是一个专门的服务器,它不传输文件内容,只负责记录和向哀求者返回当前在下载(或上传)该文件的其他用户(即 Peer)的 IP 所在和端口。通过 Tracker,新的节点可以大概快速到场到文件的 “Swarm”(群组)中。
为了低沉对 Tracker 的依赖,BitTorrent 后期引入了 DHT(分布式哈希表)技能。通过 DHT,每个支持的客户端都在网络中维护一部蹊径由表,答应在 Tracker 不可用的情况下,节点之间仍能相互发现并交换数据。
BitTorrent 工作原理如下:

  • 文件发布与种子天生:发布者使用 BitTorrent 客户端将要共享的文件(或文件夹)制作成一个 .torrent 文件。这个文件中记录了文件的全部根本信息、分块方式、每个块的 SHA1 哈希值以及 Tracker 的所在。
  • 文件分块与校验:文件在下载前会被假造地切分为固定巨细的块(比方 256KB、512KB 或 1MB),每个块下载完成后,客户端会根据种子中提供的哈希值举行校验,确保数据没有破坏。
  • 节点到场与 Tracker 通讯:下载者先从网络上获取 .torrent 文件,然后通过该文件中的 Tracker 所在与 Tracker 创建毗连。Tracker 返回当前正在共享该文件的其他节点列表,新节点便由此到场到共享 “Swarm” 中。
  • 数据交换与“最稀缺优先”战略:客户端在毗连上其他节点后,会相互交换 “have” 消息,告知相互已经拥有的片断。BitTorrent 协议接纳“最稀缺优先”战略,即优先下载在整个网络中数量较少的片断,确保全部片断都能敏捷复制,防止某些片断因资源不敷而导致下载瓶颈。
  • Choke/Unchoke 战略:为了鼓励上传(分享)活动,BitTorrent 使用了一种“壅闭算法”。每个客户端只会同时向有限数量的(通常是 4 个)其他节点发送数据,并会定期评估各个毗连的传输速率。体现好的节点会被优先“解壅闭”(unchoke),而其他节点则暂时“壅闭”(choke),从而实现“你给我多,我就给你多”的公平交换机制。
  • End Game 模式:当下载靠近完成时,客户端会进入 End Game 模式,对尚未收到的末了几个数据块同时向全部大概的节点哀求,以克制由于某些节点相应迟钝导致团体下载停滞。
2. CDN

2.1 多媒体流化服务 DASH

多媒体流化可以明白为将音视频、动画、图像等多媒体内容处置惩罚成一种一连、实时传输的“流”情势,使用户无需等待整个文件下载完成,就能即时播放和互动。
DASH(Dynamic Adaptive Streaming over HTTP,基于 HTTP 的动态自顺应流),也称 MPEG-DASH,是一种国际标准的流媒体传输技能。它的焦颔首脑在于将一个长的视频或音频文件预先编码成多种差别质量(码率、分辨率、帧率等)的版本,然后将每个版本切割成多少个短小的、固定时长的片断(Segment),并通过标准的 HTTP 服务器举行分发。
当用户开始播放时,客户端播放器起首下载一个形貌文件(MPD,Media Presentation Description),该文件包罗了全部流版本的信息和各个片断的所在,播放器随后根据当前的网络带宽和终端装备本事,动态选择最恰当的版本举行播放,同时客户端还会周期性地丈量服务器到客户端的带宽,可在播放过程中根据网络条件无缝切换到更高或更低质量的版本,假如带宽富足,选择最大码率的视频块,如许可以大概最大限度地镌汰缓冲和卡顿征象。
2.2 CDN 先容

仅仅依赖 DASH 技能举行流媒体传输,并不能办理全部传输题目,它本身重要办理的是内容切片、编码和自顺应播放的题目,而不涉及怎样高效、低延长地将内容分发到举世各地用户手中。大概存在以下题目:

  • 单点服务器压力大:假如只有一个或少量源站服务器负责提供 DASH 切片,当用户数量增长时,这些服务器谋面对巨大的并发哀求,导致带宽和处置惩罚本事不敷,从而引起延长、缓冲乃至服务制止。
  • 举世覆盖不敷:DASH 协议本身并不包罗内容分发机制。对于举世范围内的用户来说,假如全部哀求都指向位于单一地区的服务器,远隔断用户谋面对更高的延长和较差的观看体验(服务器到客户端路径上跳数较多)。
  • 网络拥堵与延时:仅使用 DASH 技能时,全部流量会合于源服务器所在的网络路径上,在碰到高峰流量或网络故障时,容易出现拥堵,导致播放卡顿或重缓冲。
  • 抗攻击本事不敷:单一或少量服务器容易成为 DDoS 攻击的目的。没有分布式架构支持,攻击者大概通过大流量哀求使服务器瘫痪,从而影响全部用户的正常观看。
CDN(Content Delivery Network,内容分发网络),是一种使用分布在举世各地的服务器群体,将网站或应用的静态和部分动态内容缓存到离终端用户更近的节点上,从而实现快速、稳固、安全内容传输的网络架构。
CDN 通过在举世多个战略性位置摆设边沿节点(也称为缓存服务器),将源站(原始服务器)上的内容复制并缓存。当用户访问网站时,其哀求将被路由到近来的边沿节点,从而镌汰跨境或长隔断传输所带来的延长和网络拥堵。如许不但能提拔用户访问速率,还能减轻源站的负载,低沉带宽资本,同时加强网站的抗攻击本事和可靠性。
CDN 一样平常由三个重要部分构成:

  • DNS 调理层:使用 DNS 分析技能,将用户哀求智能分发到最优的 CDN 节点。
  • 缓存层(边沿节点):存储颠末预先缓存的静态资源(如图片、CSS、JavaScript、视频等),若缓存掷中则直接返回给用户;若未掷中,则向源站哀求数据,并将效果缓存以备后续使用。
  • 中心管理平台:负责监控监控各节点状态、调理流量、更新缓存及举行全局负载平衡管理。
2.3 缓存节点摆设战略

CDN 中缓存节点摆设战略分为两种:“enter deep” 与 “bring home”:

  • enter deep:指的是将 CDN 服务器深入摆设在各个接入网内部,也就是摆设在各个 ISP(互联网服务提供商)或局域网络内部。如许做的优点是节点更靠近终极用户,可以进一步低沉网络延时,提拔用户体验;由于摆设的节点数量较多,可以大概覆盖更多地区并提供更细粒度的加快服务。但缺点也很显着,管理这些大量节点资本较高、维护较为复杂。
  • bring home:指的是将 CDN 服务器摆设在少数关键位置,比如摆设在重要互联网交换点(IXP)或 POP(Point of Presence)附近。这种战略的优点是节点数量少,便于会合管理和维护,运营资本较低;可以通过租用高速线路将这些关键节点毗连起来,包管较高的传输本事。缺点是节点相对较少,大概导致部分用户与 CDN 服务器之间的网络路径较长,从而略微增长延时。
2.4 CDN 工作原理

CDN 工作流程分为以下几个步调:

  • DNS 分析与流量调理:当用户在欣赏器中输入网站域名后,起首颠末 DNS 举行域名分析重定向过程。网站通常会将本身的域名通过 CNAME 记录指向 CDN 提供的加快域名。颠末分析后,用户的哀求会被引导到离用户近来或最优的 CDN 节点。这种就近访问大大低沉了传输延长。
  • 缓存与回源机制:用户向 CDN 节点发起资源哀求后根据缓存是否掷中分为以下两种情况,这种机制既镌汰了对源站的压力,又能有效分散流量,提拔团体服务的稳固性和可扩展性:

    • 缓存掷中:假如该节点已缓存所需资源,则直接返回给用户,相应速率极快。
    • 缓存未掷中:节点会向源站(或其他节点)发起回源哀求,获取资源后既返回给用户,又将该内容缓存起来,便于后续哀求直接相应。

  • 负载平衡与智能调理:CDN 通过实时监控监控各节点的康健状态、负载情况和网络延长等指标,使用多种算法(比方基于地理位置、延长、带宽等因素)来智能分配用户哀求,使用户总能从最优的节点获取数据,确保访问速率和服务质量。

2.5 Name Server Lookup

Name Server Lookup 是一种下令行工具,用于查询域名体系(DNS)信息。通过 nslookup 下令,你可以得到某个域名对应的 IP 所在、邮件服务器(MX 记录)、名称服务器(NS 记录)等 DNS 记录信息。这对于排查网络题目、验证 DNS 设置以及相识域名分析过程非常有资助。
比方我们实行以下下令:
  1. nslookup www.bilibili.com
复制代码
返回的效果如下:
  1. 服务器:  public1.alidns.com
  2. Address:  223.5.5.5
  3. 非权威应答:
  4. 名称:    a.w.bilicdn1.com
  5. Addresses:  2408:872f:20:b::14
  6.           2408:8726:1100:100::2:12
  7.           2408:8726:1100:100::2:17
  8.           2408:8726:1100:100::2:18
  9.           2408:8726:1100:100::2:19
  10.           2408:8726:1100:100::2:20
  11.           2408:8726:1100:100::2:21
  12.           2408:872f:20:b::13
  13.           221.204.56.92
  14.           221.204.56.93
  15.           221.204.56.94
  16.           221.204.56.95
  17.           218.60.18.13
  18.           218.60.18.14
  19.           218.60.18.15
  20.           218.60.18.16
  21.           218.60.18.17
  22.           218.60.18.18
  23.           221.204.56.86
  24. Aliases:  www.bilibili.com
复制代码
这个 nslookup 效果展示了以下几个关键信息:
(1)查询使用的 DNS 服务器
  1. 服务器: public1.alidns.com
  2. Address: 223.5.5.5
复制代码
这表现你的查询是由阿里云公共 DNS 服务器(public1.alidns.com,IP 为 223.5.5.5)处置惩罚的。这是你体系设置的默认 DNS 服务器,它负责分析域名到相应的 IP 所在。
(2)非权势巨子应答
非权势巨子应答表现返回的 DNS 信息不是直接来自 bilibili.com 的权势巨子 DNS 服务器,而是来自你所查询 DNS 服务器的缓存数据。固然数据不是权势巨子数据,但通常是正确的。
(3)域名别名息争析效果
  1. 名称: a.w.bilicdn1.com
  2. ...
  3. Aliases: www.bilibili.com
复制代码
这阐明现实分析出来的域名是 a.w.bilicdn1.com,而不是直接的 www.bilibili.com。这通常表明 www.bilibili.com 通过 CNAME 记录指向了 a.w.bilicdn1.com,这个域名通常由 Bilibili 用于其 CDN 服务。Aliases 字段阐明 www.bilibili.com 是 a.w.bilicdn1.com 的别名。
(4)多个 IP 所在
返回效果列出了多个 IPv6 和 IPv4 所在,这些所在通常是由 CDN 提供的负载平衡战略所决定的。CDN 会在举世或地区内摆设很多节点,用户哀求时会根据网络状态和地理位置分配到最符合的节点。返回多个所在正是为了分散流量、低沉延时并提拔可靠性。
因此整个流程为:当我访问 www.bilibili.com 时,盘算机遇起首向默认设置的 DNS 服务器发送域名分析哀求。DNS 服务器收到哀求后,根据 Bilibili 的 DNS 记录返回一个 CNAME 记录,指向 Bilibili 的 CDN 域名 a.w.bilicdn1.com,并提供一组对应的 IP 所在(包罗 IPv6 和 IPv4 所在),这些 IP 所在就是 CDN 的多个节点。欣赏器(或客户端)汲取到这些分析效果后,会根据当前的网络路由、延时、负载等因素,从返回的多个 IP 所在中选择一个创建毗连,然后向该 CDN 节点哀求资源。
那么我能找出我末了是与哪个 CDN 节点创建毗连了吗?我们可以先找出我们电脑创建的全部 TCP 毗连:
  1. netstat -an | findstr ESTABLISHED
复制代码
返回效果如下:
  1.   TCP    127.0.0.1:1042         127.0.0.1:54695        ESTABLISHED
  2.   ...
  3.   TCP    192.168.xx.xx:57670    49.7.253.214:8080      ESTABLISHED
  4.   ...
  5.   TCP    192.168.xx.xx:57703    221.204.56.86:443      ESTABLISHED
  6.   ...
复制代码
此中左侧的 IP 为我们主机的 IP 所在,右侧的为目的 IP 所在,我们使用欣赏器毗连 Bilibili,根据 HTTPS 协议可知端标语为 443,因此我们锁定端标语为 443 的目的所在查找,发现了 221.204.56.86:443 的 IP 所在出现在之前 nslookup 的效果中,因此可以确定我们末了创建毗连的 CDN 服务器 IP 为 221.204.56.86。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表