统一资源定位符(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使用TCP和UDP端口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节点缓存该数据,下次请求该文件时可以直接返回。