CDN与DNS

发布时间 2023-08-31 15:36:33作者: 小张同学哈

DNS

 域名系统(Domain Name System)。由两部分组成:

  • 分层的DNS服务器实现的分布式数据库,服务器通常是服务器通常运行BIND软件即Berkeley Internet Name Domain的Unix机器。
  • 能够使主机查询分布式数据库的应用层协议(dns协议)

DNS协议运行在UDP之上,使用53号端口。

DNS作为网络核心协议,为什么在应用层实现,而不是在运输层或网络层实现?

  1. 由域名系统的组成可以看出,域名系统使用的是CS模式(客户端-服务器模式)。它运行在端系统上(即网络边缘的端系统上)
  2. 通讯的端系统之间需要CIA层的传输协议来传送DNS报文。

总的来说,域名系统是一个应用系统,只不过该应用不直接与用户打交道,而是作为基础应用,由其他应用层协议如HTTP、SMTP/FTP使用。DNS采用位于网络边缘的客户端和服务器(理解DNS的实现位于网络边缘及其重要),实现域名到IP地址的转换。

域名系统的核心功能

  1. 实现域名到IP地址的转换
  2. 实现主机别名(host aliasing)到规范名称(canonical hostname)的转换
  3. 负载分配 一个主机名可以配置多个冗余的服务器IP地址,DNS可以为多个IP进行负载分配。(说白了,一个域名可以有多个IP地址,多个IP地址对应多个服务器,DNS可以为多个服务器负载均衡)

域名系统的工作机理

假设某个应用(如浏览器)需要将主机名(域名)换成IP地址,应用需要调用DNS客户端,并给出需要转换的主机名。DNS客户端收到后,则会向本地DNS服务器发送DNS查询报文,收到查询DNS的回答报文后返回给调用者(浏览器)。

DNS服务器的层次结构:

 DNS服务器分为多个层次(不仅仅是图中所示的三层,这三层之下可能有很多层),大致分为三种类型:

  • 根域名服务器,全球13台(不是仅有是13台服务器,而是13个分布式集群,总的根服务器有几百台)
  • 顶级域名服务器(TLD,Top level domain),负责维护顶级域名,如:com/org/net/edu/gov及国家域名。顶级域名服务器知道如果想要查询某个顶级域名下的域名(如baidu.com),应该查询哪个权威域名服务器。
  • 权威域名服务器,负责维护权威域名(组织或机构的域名)。如百度公司会有权威域名服务器,负责baidu.com下的域名到IP地址的转换。如api.baidu.com,百度公司提供的权威域名服务器应该能查到该域名对应的ip地址。

除了图中的三层,每个ISP(一个大学,一个系,一个公司)都有自己的本地域名服务器。比如百度公司下属有AI自动驾驶部门和搜索部门,其域名分别为:ai.baidu.com和so.baidu.com,搜索部门可能还有算法部门、广告部门,alg.so.baidu.com和ad.so.baidu.com那么搜索部门可以有自己的本地域名服务器,负责alg和ad的主机名的解析。

 

 上面的这个例子利用了递归查询(recursive query)和迭代查询(iterative query)。从cis.poly.edu到dns.poly.edu是递归查询,后续2-7为迭代查询。

DNS缓存

为了减少网络中DNS报文的数量,DNS服务器会将查询到的DNS记录缓存起来,下次再有同类型查询时,直接使用缓存记录,而不需要再查询。

DNS记录

DNS服务器存储的信息为资源记录(Resource Record,简称RR)。RR通常为一个四元组:

(Name, Value, Type, TTL)

其中TTL为生存时间,决定了该记录应当从缓存中删除的时间。Name和Value的含义取决于Type.

  • 如果Type为A,则Name是主机名,Value是该主机名对应的IP地址
  • 如果Type=NS,则Name是一个域,Value是这个域的权威域名服务器的主机名。
  • 如果Type=CNAME,则Name是一个别名,Value是该别名对应的规范主机名。

 CDN原理