DNS vs CDN

统一资源定位符(URL) - 返回文本资源

协议 host 应用 path   fragment
https:// www.example.com: 8080/ books? id=1000# Good
scheme 主机 port   query  

DNS的基础知识

  

 

 

   资源记录  - DNS的数据库条目

   超过30种类型  - 描述IP地址,别名等等

定义主机的IP地址 www.example.com www.example.com.  IN  A  139.18.28.5;
定义主机的IPV6地址 www.zhihu.com

1251625956.s2txipv6.cdntip.com.103  IN  AAAA

240e:940:401:1:1a::

定义域名的别名 www.example.com

www.example.com.  IN  CNAME  example.com.

定为邮件服务域名 www.example.com

www.example.com  IN  MX  happy.example.com.

定义为提供DNS信息的服务器 zhihu.com

zhihu.com  52908  IN  NS  ns4.dnsv5.com

SOA记录,定义多个NS服务器中哪个是主服务器 ns3.dnsv5.com

IN  SOA  ns3.dnsv5.com.enterprise3dnsadmin.dnspod.com 1659234674  3600

180  1209600  180

提供文本信息 zhihu.com

zhihu.com.  600  IN  TXT  "google-site-verification=sdcasd3434evwe5vre5"

DNS工具实战

CDN和CDN的测试工具

 1、CDN?

  全称是Content Delivery Network,即内容分发网络

  基于地理位置的分布式代理服务器/数据中心。  - 高可用 - 提升性能 - 提升体验

  CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储分发技术

  其目的是让用户能够更快速的得到请求的数据。简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。举个例子,现在服务器在北京,深圳的用户想要获取服务器上的数据就需要跨越一个很远的距离,这显然就比北京的用户访问北京的服务器速度要慢。但是现在我们在深圳建立一个cdn服务器,上面缓存住一些数据,深圳用户访问时先访问这个cdn服务器,如果服务器上有用户请求的数据就可以直接返回,这样速度就大大的提升了。

 2、DNS 

  全称是Domain Name System,即域名系统。

  DNS是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCPUDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

  当我们向dns服务器发起解析域名的请求时,dns服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回ip地址。如果缓存中没有,服务器则会以递归的方式层层访问。例如,我们要访问www.baidu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的ip地址

DNS查询工具

dig(DNS lookup utility)

- 用来查询DNS的小工具
nslookup - 交互式查询域名服务工具
host(DNS lookup utility)

  本地host修改

    ???

 3、DNS与CDN的关系 

        刚才说到cdn实际上是一个就近访问,那么现在有一个问题是,我们怎么知道用户的所在位置从而给他分配最佳的cdn节点呢。这就需要dns服务来进行定位了。当我们通过使用dns服务的时候,可以根据他使用的LDNS服务器来进行一个定位,例如我们的调度服务器看到他是来自深圳电信的LDNS服务器,那么我们就认为该用户来自深圳电信,然后调度服务器可以让该用户去访问深圳电信的CDN服务器,这样就让用户访问到了最优的cdn节点。

         通过dns服务我们可以很快的定位到用户的位置,然后给用户分配最佳cdn节点,但是这种调度方式存在一个问题,例如,当我 是北京联通的用户但是使用的却是深圳电信的ldns的话,调度服务器会给我分配到深圳电信的cdn服务器,这样就产生了错误的调度。

 4、http调度方式 

    针对上面的问题,我们还有另一种调度方式——http调度。

    当用户访问我们的服务器时,服务器先分析用户的ip地址,然后服务器给用户返回一个302重定向,将离用户最近的服务器存在location中,用户再去请求这个cdn服务器就能得到最佳的cdn节点。

    这种调度方式的优点是他的定位更加准确,不会因为错误的ldns造成访问偏差。但是他的缺点就是需要一次额外的http访问,这样首次访问的延时就会比较高。所以如果是对大文件的请求,显然采用http的调度方式比较合适,因为大文件的请求需要更多的时间,相比之下可以忽略这次http请求的时间,但是如果是一些小文件的请求,花费这个时间有时就有些得不偿失了。

    当然我们也可以将这两种方式结合起来使用,先通过dns的方式来定位,然后通过http的方式来纠正偏差。

 5、缓存的两种方式 

    cdn中缓存了服务器上的部分资源。那么服务器怎么去更新cdn节点的缓存呢?这里有两种方式,一种是服务器主动去更新缓存,cdn节点被动接受。另一种方式是当用户请求的资源不存在时,cdn服务器向上游服务器发起请求,更新缓存,然后将数据返回给用户,这种方式是cdn服务器主动,源站服务器被动。显然第一种方式存在很多问题,例如很容易产生404等,所以一般采用第二种缓存方式。

 6、cdn的整个工作过程 

  当用户请求一个文件时,cdn的工作过程如下:

    1.dns请求当地local DNS

    2.当地local DNS递归的查询服务器的gslb

    3.服务器根据local DNS 分配最佳节点,返回ip

    4.用户获得最佳接入ip,访问最佳节点。

    5.如果该节点没有用户想要获取的内容,则通过内部路由访问上一节点,直到找到文件或到达源站为止。

    6.cdn节点缓存该数据,下次请求该文件时可以直接返回。

 

posted @ 2020-12-27 13:12  SlightFly  阅读(154)  评论(0编辑  收藏  举报