DNS解析与CDN加速

DNS解析与CDN加速

  • 一.DNS解析
    • 1. 域名系统DNS
    • 2. DNS解析
  • 二、CDN加速
    • 1.什么是CDN
    • 2.静态加速
    • 3.动态加速

一.DNS解析

1. 域名系统DNS

  • 域名系统的前世今生
      域名系统的产生的原因是用户通过形如198.26.92.33点分十进制的IP地址访问因特网的主机时,实在是记不住。因此早在ARPANET(美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络)时代,就在hosts文件中配置主机名字和IP地址的对应关系。
      随后网络中主机的爆炸增长,计算机科学家保罗·莫卡派乔斯才设计出了域名系统,即Domain Name System,DNS中强调域的概念,是联机分布式数据库系统,采用客户端-服务器方式。
      如今在自己电脑中仍然可以通过配置hosts对应IP地址,访问所需网页。
  • 域名长什么样?
    (1)中国传媒大学官网域名:cuc.edu.cn
    (2)华为官网域名:huawei.com
    (3)IPV6反向解析域名:ip6.apra
    可以看出域名的结构是分层次的:…三级域名.二级域名.顶级域名,具体可见下图。
    DNS解析与CDN加速_第1张图片
    顶级域名(Top Level Domain)主要分为三大类:
    (1)国家顶级域名nTLD(National Top-Level Domain):如cn为China表示中国,us为The United States表示美国。
    (2)通用顶级域名gTLD(generic Top-Level Domain):如com为Commercial代表商业机构,org为Organizations表示非盈利组织。
    (3)基础结构域名(infrastructure domain):这类域名比较少见,如ipv6.arpa,用于域名反向解析为IPV6地址。

2. DNS解析

  • 域名服务器

  从域名到IP地址的解析需要调用域名服务器程序 ,把运行域名解析程序的服务器称为域名服务器。域名服务器管辖域名,并且它很厉害,能够按片按区(zone)区管理,区最大时等于域,见下图。
DNS解析与CDN加速_第2张图片
域名服务器分为以下四类:
(1)根域名服务器。知道所有的顶级域名服务器的域名和IP地址,如果本地域名服务器无法对域名进行解析时,都要求助于根域名服务器,由根域名服务器告诉下一步应该去查找哪个顶级域名服务器。共有从 a.root-servers.net 到 m.root-servers.net 13个不同IP地址的根域名服务器(不代表只有13个域名服务器,而是有13套装置,内部有很多域名服务器)。
(2)顶级域名服务器。管理所有的二级域名服务器器的域名和IP地址。
(3)权限域名服务器。管理下一级的权限域名服务器的域名和IP地址。
(4)本地域名服务器。主机发送DNS查询请求时,查询首先要通过本地域名服务器,每一个因特网服务提供者ISP或一个大学或一个企业都可以拥有一个本地域名服务器,平时在PC中可以设置,Windows设置见下图。
DNS解析与CDN加速_第3张图片

  • 域名如何解析?

  通常主机向本地域名服务器采用递归查询(recursive query),意思是主机询问本地域名服务器,本地域名服务器不知道时,就以DNS客户的身份向根域名服务器继续发送查询请求报文,而不是让主机进行下一步查询。通常本地域名服务器向根域名服务器采用迭代查询(iterative query),意思是根域名服务器返回给本地域名服务器一个要查询的IP地址,或者告诉本地域名服务器下一步向哪个顶级域名服务器查询,或者报错无法查询到所需的IP地址,具体见下图,以查询www.cuc.edu.cn域名为例。
DNS解析与CDN加速_第4张图片
总共有10个步骤,,使用10个UDP用户数据报的报文,本地域名服务器进行4次迭代查询后,从 dns.cuc.edu.cn 中得到 www.cuc.edu.cn 的IP地址:
(1)用户主机向本地域名服务器进行递归查询。
(2)本地域名服务器采用迭代查询,首先选择根域名服务器 d.root-servers.net 查询。
(3)根域名服务器 d.root-servers.net 告诉本地域名服务器,下一次应查询的顶级域名服务器cn的地址 x.dns.cn (很多个)和对应的IP地址。
(4)本地域名服务器选择顶级域名服务器 e.dns.cn 进行查询。
(5)顶级域名服务器 e.dns.cn 告诉本地域名服务器,权限域名服务器 edu.cn 的域名地址 x.edu.cn (很多个,下面dig中的 ns.cernet.net 为中国教育和科研计算机网的域名服务器地址)和对应的IP地址。
(6)本地域名服务器选择权限域名服务器 dns.edu.cn 进行查询。
(7)权限域名服务器 dns.edu.cn 告诉本地域名服务器,权限域名服务器 cuc.edu.cn 的域名地址 bdns.cuc.edu.cn、bdns2.cuc.edu.cn.、pdns.cuc.edu.cn 和对应的IP地址。。
(8)本地域名服务器选择权限域名服务器 bdns.cuc.edu.cn 进行查询。
(9)权限域名服务器 bdns.cuc.edu.cn 告诉本地域名服务器, www.cuc.edu.cn 的IP地址。
(10)本地域名服务器告诉查询主机 www.cuc.edu.cn 的IP地址。

在Windows中安装dig.exe后,用dig www.cuc.edu.cn +trace 命令行查询解析过程如下所示:

C:\Users\user>dig www.cuc.edu.cn +trace
; <<>> DiG 9.9.7 <<>> www.cuc.edu.cn +trace
.                       343445  IN      NS      e.root-servers.net.
.                       343445  IN      NS      i.root-servers.net.
.                       343445  IN      NS      c.root-servers.net.
.                       343445  IN      NS      l.root-servers.net.
.                       343445  IN      NS      a.root-servers.net.
.                       343445  IN      NS      h.root-servers.net.
.                       343445  IN      NS      g.root-servers.net.
.                       343445  IN      NS      b.root-servers.net.
.                       343445  IN      NS      d.root-servers.net.
.                       343445  IN      NS      f.root-servers.net.
.                       343445  IN      NS      j.root-servers.net.
.                       343445  IN      NS      k.root-servers.net.
.                       343445  IN      NS      m.root-servers.net.
;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 117 ms
//以上为本地域名服务器向根域名服务器求助
cn.                     172800  IN      NS      a.dns.cn.
cn.                     172800  IN      NS      b.dns.cn.
cn.                     172800  IN      NS      c.dns.cn.
cn.                     172800  IN      NS      d.dns.cn.
cn.                     172800  IN      NS      e.dns.cn.
cn.                     172800  IN      NS      f.dns.cn.
cn.                     172800  IN      NS      g.dns.cn.
cn.                     172800  IN      NS      ns.cernet.net.
;; Received 705 bytes from 199.7.x.x#53(d.root-servers.net) in 78 ms
//以上为从根域名服务d.root-servers.net中获取的cn顶级域名服务器的域名地址和IP地址
edu.cn.                 172800  IN      NS      deneb.dfn.de.
edu.cn.                 172800  IN      NS      ns2.cuhk.hk.
edu.cn.                 172800  IN      NS      dns.edu.cn.
edu.cn.                 172800  IN      NS      dns2.edu.cn.
edu.cn.                 172800  IN      NS      ns2.cernet.net.
;; Received 682 bytes from 203.119.x.x#53(e.dns.cn) in 278 ms
//以上为从e.dns.cn顶级域名服务器获取edu.cn权限域名服务器的域名地址和IP地址
cuc.edu.cn.             172800  IN      NS      bdns2.cuc.edu.cn.
cuc.edu.cn.             172800  IN      NS      pdns.cuc.edu.cn.
cuc.edu.cn.             172800  IN      NS      bdns.cuc.edu.cn.
;; Received 397 bytes from 202.112.x.x#53(dns.edu.cn) in 1 ms
//以上为从dns.edu.cn权限域名服务器获取cuc.edu.cn权限域名服务器的域名地址和IP地址
www.cuc.edu.cn.         43200   IN      A       202.205.22.207
cuc.edu.cn.             43200   IN      NS      PDNS.cuc.edu.cn.
cuc.edu.cn.             43200   IN      NS      BDNS2.cuc.edu.cn.
cuc.edu.cn.             43200   IN      NS      BDNS.cuc.edu.cn.
;; Received 193 bytes from 202.205.x.x#53(bdns.cuc.edu.cn) in 3 ms
//以上为bdns.cuc.edu.cn权限域名服务器获取www.cuc.edu.cn的IP地址
另一种DNS查询方式:主机和本地域名服务器都采取递归查询,见下图。

DNS解析与CDN加速_第5张图片

二、CDN加速

1.什么是CDN

  CDN英文全称为 Content Delivery Network,即内容分发网络。CDN构建在现有的网络之上,将网站的内容分发到最接近用户的边缘节点。举例:假设广州用户要访问的服务器在北京,利用CDN技术后,用户不用“翻山越岭”,经过各种网络到达北京的服务器,而是直接访问在广州的CDN边缘节点。

  传统的DNS解析访问

DNS解析与CDN加速_第6张图片
  使用CDN后的访问
DNS解析与CDN加速_第7张图片
(1)用户访问域名 www.huawei.com 递归交给本地域名服务器去负责查询。
(2)本地域名服务器经过迭代查询由 huawei.com 的域名服务器返回CNAME解析到的地址 www.huawei.com.akadns.net。
(3)本地域名服务器去迭代查询 www.huawei.com.akadns.net 经过dig +trace 命令追踪发现又经过一次CNAME到 www.huawei.com.lxdns.com ,具体原因没有深究,暂且认为此 www.huawei.com.lxdns.com 为真正的CDN DNS域名服务器地址;本地域名服务器再次去迭代查询 www.huawei.com.lxdns.com 的IP地址。
(4)经过DNS全局负载均衡和区域负载均衡等一系列的智能调度,分配CDN节点,确定 www.huawei.com.lxdns.com 的IP地址。
  全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备。
  区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
(5)返回CDN server(CDN节点)的IP地址。
(6)返回CDN域名 www.huawei.com.lxdns.com 的IP地址。
(7)返回 www.huawei.com 对应 CDN域名 www.huawei.com.lxdns.com 的IP地址
(8)用户访问 www.huawei.com.lxdns.com 的IP地址对应的CDN server(CDN 节点),如果有缓存则直接到步骤11返回数据。如果没有则进行步骤9回源,再到步骤10,再到步骤11,返回数据。

2.静态加速

  静态加速是指对网页中的静态资源(包括html文件、CSS文件、js文件、图片、flash动画等)进行CDN节点缓存,使得用户在访问网页中的静态资源时,调取CDN边缘节点缓存;在访问网页中的动态资源如asp、php、jsp等时从源站中调取,从而实现“动静分离”,达到加速的目的。“动静分离”的好处在于用户访问网站时,静态资源直接从离自己最近的CDN节点缓存中获取(具体架构见使用CDN后的访问,以访问 www.huawei.com 为例),减少用户访问静态资源的时间,同时又降低源站服务器的带宽压力、静态资源访问压力。

3.动态加速

  动态加速是指CDN的DNS解析中通过动态链路探测,监控网络环境的变化,监控各地网络延迟,寻找到一条最稳定、最高效、最快速的路径,回源动态资源,从而实现动态资源(如asp、php、jsp等)加速。然后构成链路列表,绑定到DNS解析上,更新到CDN的本地域名服务器上。简单架构见下图所示。
DNS解析与CDN加速_第8张图片


参考:


1、《深入分析 Java Web 技术内幕(修订版)》 许令波著 20-25页

2、CDN的基本原理和基础架构:https://yq.aliyun.com/articles/104041

3、《计算机网络(第6版)》谢希仁著 235-244页

你可能感兴趣的:(计算机网络基础)