@Dale-Lin
2023-03-19T21:58:32.000000Z
字数 3798
阅读 324
HTTP
域名系统(Domain Name System,DNS)的主要任务是:从主机名转换到 IP 地址。
DNS 是:
DNS 服务器通常是运行 BIND(Berkeley Internet Name Domain)软件的 UNIX 机器,DNS 协议运行在 UDP 上,使用 53 号端口。
DNS 通常是被其他应用层协议所使用的,包括 HTTP、SMTP 和 FTP,将用户提供的 hostname 解析为 IP 地址。例如,用户浏览器请求 https://www.google.com/index.html,该用户主机必须获得 www.google.com 的 IP 地址。其做法如下:
除了进行主机名到 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 回答(例如,包含某个主机名到 IP 地址的映射)时,它能将映射缓存在本地存储器中。如果在 DNS 服务器中缓存了一台主机名/IP 地址对,另一个对相同主机名的查询到达该 DNS 服务器时,该 DNS 服务器就能提供所要求的 IP 地址,即使它不是主机名的权威服务器。由于主机和主机名与 IP 地址间的映射并不是永久的,DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。
因为缓存,除了少数 DNS 查询以外,根服务器被绕过了。
当 DNS 解析一个域名发现其映射多个 ip 时,会使用 IP 轮询的方式,将 IP 平均分配给多个 DNS 请求(DNS 重定向),以达到负载均衡的效果。但 DNS 不能根据不同服务器的负载情况优化分配,如果有一台服务器宕机了,DNS 却分配了其 IP,会造成无法访问。
内容分发网(Content Distribution Network,CDN)在具备分配服务器的能力之外,能够同步服务器运行情况,根据情况及时调整调度策略,从而使负载均衡能力大大提高。
CDN 可以跨集群复制内容,但不会把每个资源都复制到每个集群中。如果客户向一个未存储该视频的集群请求某视频,则该集群向某中心仓库或另一个集群检索该视频,向客户传输的同时,也在本地存储一个副本。当集群存储器变满时,它删除不经常请求的视频。
当用户主机的一个浏览器请求一个 URL 时,CDN 必须截获该请求,以便能够:
大多数 CDN 使用接入方的权威 DNS 服务器来截获和重定向请求(被请求资源的 DNS 权威服务器通过把 URL 请求重定向到 CDN 的 DNS 上)
https://video.netcinema.com/6Y7B23V
,用户主机发送了一个对于 video.netcinema.com 的 DNS 请求。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 配置为不会响应这些探测。