[关闭]
@Dale-Lin 2023-03-19T21:58:32.000000Z 字数 3798 阅读 324

DNS/CDN

HTTP


DNS

域名系统(Domain Name System,DNS)的主要任务是:从主机名转换到 IP 地址。

DNS 是:

  1. 一个由分层的 DNS server 实现的分布式数据库。
  2. 一个使主机能够查询分布式数据库的 Application 层协议。

DNS 服务器通常是运行 BIND(Berkeley Internet Name Domain)软件的 UNIX 机器,DNS 协议运行在 UDP 上,使用 53 号端口

DNS 提供的服务

DNS 通常是被其他应用层协议所使用的,包括 HTTP、SMTP 和 FTP,将用户提供的 hostname 解析为 IP 地址。例如,用户浏览器请求 https://www.google.com/index.html,该用户主机必须获得 www.google.com 的 IP 地址。其做法如下:

  1. 该用户主机上运行着 DNS 应用的客户端。
  2. 浏览器从上述 URL 中抽取出主机名 www.google.com,并将这台主机名传给 DNS 客户端。
  3. DNS 客户端向 DNS 服务器发送一个包含主机名的请求。
  4. DNS 客户端最终会受到来自 DNS 的该 IP 地址,它能够向位于该 IP 地址 443 端口的 HTTPS 服务器进程(HTTP 是 80 端口)发起一个 TCP 连接。

除了进行主机名到 IP 的转换外,DNS 还提供了一些重要的服务:

分布式、分层数据库

DNS 使用了大量的 DNS 服务器,它们以层次方式布置,并分布在全世界范围内。

没有一台 DNS 服务器拥有因特网上所有主机的映射。

DNS 服务器大致分为三种:根 DNS 服务器顶级域(Top-Level Domain,TLD)DNS 服务器权威 DNS 服务器。例如一个 DNS 客户要决定主机名为 www.amazon.com 的 IP 地址,将发生以下事件。客户首先和根 DNS 服务器之一联系,它将返回 TLD "com" 的 DNS 服务器的 IP 地址。客户则与这些 TLD DNS 服务器之一联系,它将为 amazon.com 返回权威 DNS 服务器的 IP 地址。最后该客户与 amazon.com 权威服务器之一联系,它为主机名 www.amazon.com 返回其 IP 地址。

- - 根 DNS 服务器 - -
com TLD DNS 服务器 - org TLD DNS 服务器 - edu TLD DNS 服务器
facebook.com DNS 服务器 amazon.com DNS 服务器 pbs.org DNS 服务器 nyu.edu DNS 服务器 umass.edu DNS 服务器

另一类重要的 DNS 服务器称为本地 DNS 服务器(local DNS server)。
每个 ISP 都有一台 local DNS server,当主机和某个 ISP 连接时,该 ISP 提供一台主机的 IP 地址,该主机具有一台或多台 local DNS server 的 IP 地址。local DNS server 和主机可能在同一个局域网,当主机发出 DNS 请求时,该请求被发往 local DNS server 起到代理的作用。

windows 命令行输入 ipconfig /all 查看主机连接的 DNS 服务器 IP。

google DNS server:8.8.8.8

DNS 缓存

为了改善时延并减少在因特网上到处传输的 DNS 报文数量,DNS 广泛使用了缓存技术。

DNS 的缓存原理:在一个请求链中,当某 DNS 服务器接收一个 DNS 回答(例如,包含某个主机名到 IP 地址的映射)时,它能将映射缓存在本地存储器中。如果在 DNS 服务器中缓存了一台主机名/IP 地址对,另一个对相同主机名的查询到达该 DNS 服务器时,该 DNS 服务器就能提供所要求的 IP 地址,即使它不是主机名的权威服务器。由于主机和主机名与 IP 地址间的映射并不是永久的,DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

因为缓存,除了少数 DNS 查询以外,根服务器被绕过了。


CDN

当 DNS 解析一个域名发现其映射多个 ip 时,会使用 IP 轮询的方式,将 IP 平均分配给多个 DNS 请求(DNS 重定向),以达到负载均衡的效果。但 DNS 不能根据不同服务器的负载情况优化分配,如果有一台服务器宕机了,DNS 却分配了其 IP,会造成无法访问。

内容分发网(Content Distribution Network,CDN)在具备分配服务器的能力之外,能够同步服务器运行情况,根据情况及时调整调度策略,从而使负载均衡能力大大提高。

CDN 可以跨集群复制内容,但不会把每个资源都复制到每个集群中。如果客户向一个未存储该视频的集群请求某视频,则该集群向某中心仓库或另一个集群检索该视频,向客户传输的同时,也在本地存储一个副本。当集群存储器变满时,它删除不经常请求的视频。

CDN 原理

当用户主机的一个浏览器请求一个 URL 时,CDN 必须截获该请求,以便能够:

  1. 将客户的请求重定向到该集群的某台服务器。
  2. 确定此时适合该用户的 CDN 服务器集群;

重定向请求

大多数 CDN 使用接入方的权威 DNS 服务器来截获和重定向请求(被请求资源的 DNS 权威服务器通过把 URL 请求重定向到 CDN 的 DNS 上)

  1. 用户在 NetCinema Web 页面上请求 https://video.netcinema.com/6Y7B23V,用户主机发送了一个对于 video.netcinema.com 的 DNS 请求。
  2. 用户的 LDNS 将该 DNS 请求中继到一台 NetCinema 的权威 DNS 服务器,该服务器观察到主机名 video.netcinema.com 中的 video 字符串,认为是一个 CDN 提供的资源请求。为了将该 DNS 请求移交给 CDN 服务商,NetCinema 的权威 DNS 服务器并不会返回 IP 地址,而是返回一个 CDN 域的主机名,例如 a1105.kingcdn.com。
  3. 从此时起,DNS 请求进入了 KingCDN 专用的 DNS 基础设施。用户的 LDNS 继续发送请求 a1105.kingcdn.com,KingCDN 的 DNS 系统最终向 LDNS 返回 KingCDN 的内容服务器的 IP 地址。至此,在 KingCDN 的 DNS 系统中,通过 IP 指定了 CDN 服务器,客户能从这台服务器接收到它的内容。
  4. LDNS 将内容服务器 CDN 节点的 IP 地址返回给用户主机。
  5. 客户浏览器收到 KingCDN 内容服务器的 IP 地址,它和具有该 IP 地址的服务器创建 TCP 链接,并发起 URL 的 HTTP 请求。

集群选择策略

CDN 部署的核心是集群选择策略(cluster selection strategy),即动态地将用户定向到 CDN 中的某个服务器集群或数据中心的机制。经过客户的 DNS 查找,CDN 得知了客户的 LDNS 服务器的 IP 地址,在得知该 IP 地址之后, CDN 需要基于该 IP 地址选择一个适当的集群。

一种简单的策略是指派客户到地理上最为邻近(geographically closest)的集群。使用商用地理位置数据库(例如 Quova 和 Max-Mind),每个 LDNS IP 地址都映射到一个地理位置。当从某个 LDNS 接收到 DNS 请求时,CDN 选择 geographically closest 的集群。大多数情况下这个策略很合适,但对于某些客户,地理位置最近,不一定是网络路径的最短跳数。另一个问题是,某些端用户配置使用位于远地的 LDNS。

另一种策略是基于当前流量条件决定客户的集群,CDN 能够对其集群和客户之间的时延和丢包性能执行周期性的实时测量(real-time measurement)。例如 CDN 让它的每个集群周期性地向位于全世界的所有 LDNS 发送探测分组(例如,ping 报文或 DNS 请求)。这种方法的缺陷是许多 LDNS 配置为不会响应这些探测。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注