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
    可以看出域名的结构是分层次的:…三级域名.二级域名.顶级域名,具体可见下图。

    顶级域名(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)区管理,区最大时等于域,见下图。

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

  • 域名如何解析?

  通常主机向本地域名服务器采用递归查询(recursive query),意思是主机询问本地域名服务器,本地域名服务器不知道时,就以DNS客户的身份向根域名服务器继续发送查询请求报文,而不是让主机进行下一步查询。通常本地域名服务器向根域名服务器采用迭代查询(iterative query),意思是根域名服务器返回给本地域名服务器一个要查询的IP地址,或者告诉本地域名服务器下一步向哪个顶级域名服务器查询,或者报错无法查询到所需的IP地址,具体见下图,以查询www.cuc.edu.cn域名为例。

总共有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查询方式:主机和本地域名服务器都采取递归查询,见下图。

二、CDN加速

1.什么是CDN

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

  传统的DNS解析访问


  使用CDN后的访问

(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的本地域名服务器上。简单架构见下图所示。


参考:

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

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

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

DNS解析与CDN加速相关推荐

  1. 网络 DNS 解析与CDN加速

    DNS 解析就是当你从域名商那里买了域名后,由 DNS 解析商家提供以下功能:把域名指向服务器 IP 地址,同时提供免费的防护功能.防火墙等等功能.比如万网也就是现在的阿里云,本身既卖域名也提供 DN ...

  2. 移动和云环境下的报文传输流程--理解DNS解析、CDN资源下发、公网传输流程、数据中心网络

    DNS解析 手机打开app时,首先需要解析网站的域名. 在手机运营商所在的互联网区域中,有一个本地DNS,手机向本地DNS请求解析DNS.如果本地DNS有缓存,则直接返回:如果本地DNS没有缓存,则递 ...

  3. cdn与服务器的关系_域名解析、CDN 加速、服务器绑定域名之间的关系及如何操作?...

    域名解析.CDN 加速和服务器绑定域名之间的关系是什么?又是如何操作的呢?对于很多新同学来说,经常会把域名解析.CDN 加速和服务器端 IP 弄混淆.在和新同学沟通的过程中,老魏发现部分同学是越听脑子 ...

  4. CDN加速原理(转载)

    首先,让我们来看一下传统的Internet网络的基本结构和数据传输情况,如下图所示. Internet 网络基本结构及数据传输方式 根据传统的网络结构,用户的访问流程基本如下: 用户在自己的浏览器中输 ...

  5. Nginx自建CDN加速节点 实现DNS智能解析网站项目

    如今,网站项目越来越多的会使用CDN加速,如果需要便捷一点的可以直接用第三方提供的CDN加速服务,比如百度CDN.七牛.又拍云.腾讯云.阿里云等等服务商都有提供这类服务.但是前提条件是需要一定的成本, ...

  6. Nodecache免费香港CDN加速DNS解析服务1T流量!

    自己的一个网站,因为服务器是海外的,虽然速度还不错,但延迟和丢包问题经常困扰着我.尤其是到了晚上,丢包情况就更加严重,所以需要一款免备案.有香港节点的CDN来提升一下访问体验.查了下资料,很多人推荐使 ...

  7. 全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)

    全球免费公共 DNS 解析服务器 IP 地址列表推荐 基本上接触过网络相关知识的人应该多少都会听过 DNS 这个名词.因为 DNS 它非常重要,在我们上网的过程中扮演着重要的角色--"将网址 ...

  8. 加速更新DNS解析记录的方法

    0x01 问题 之前域名使用国外免费CDN(Cloudflare)进行内容分发,后由于速度不佳,遂删除. 然后把腾讯云的域名DNS改回国内之后,还是不能生效. 但是! 删除之后CDN仍然存在,无论是从 ...

  9. DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

    "智能DNS"跟"双线加速"."CDN加速"的区别 相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类 ...

最新文章

  1. 浅析ajax原理与用法
  2. DeepStream开发日志
  3. Linux 模拟 鼠标 键盘 事件
  4. Head First JSP---随笔十(过滤器的威力)
  5. .NET应用程序7种最常见的性能问题及其解决方案
  6. mysql generaton_Mysql 集成随机唯一id mysql unique number generation
  7. k8s基础学习-存储卷
  8. 美国会不会禁用python_美国要是禁用Windows系统,该怎么办?国人会不会选择换系统呢?...
  9. git am 部分发生冲突的处理
  10. Linux安装redis数据库
  11. Linux基础——Linux 基本指令 ls 和 cd
  12. 现成轮子OSAL操作系统抽象层的移植
  13. 数字逻辑练习题(七) 用74LS138译码器和门电路实现逻辑函数
  14. 编程珠玑 啊哈 算法
  15. 肖文吉mysql_疯狂软件教育中心肖文吉老师_MYSQL视频教程
  16. CSP 2014-03-1 相反数(C++)
  17. 人们为什么会相信伪科学?人类喜欢依赖心理捷径
  18. 【八种基本分析方法】
  19. python服务器传输wav文件,Python处理wav文件(二进制文件读写)
  20. excel中多列内容显示不全

热门文章

  1. 如何分析和判断中国经济大势
  2. 微信公众平台开发--入门了解
  3. 【软件工程】软工视频总结
  4. C++(11):多线程同步packaged_task
  5. 三维坐标要建一个4*4的矩阵?平移 旋转 缩放
  6. 7 centos 配置sudo权限_CentOS7 配置sudo并使用
  7. 用python3制作视频字幕,生成双英文双语字幕txt和srt文件使用百度和有道翻译自封装翻译接口,可以秒杀付费工具,字幕脚本为qiweb3远程 2022年5月29日
  8. ES 根据查询条件求和sum
  9. 练习:编写程序判断当前系统状态
  10. Flutter 开发——识别iOS设备