1.DNS协议是什么

概念

DNS是域名系统(Domain Name System)的缩写,提供的是一种主机名到IP地址的转换服务,就是我们常说的域名系统。它是一个由分层的DNS服务器组成的分布式数据库,是定义了主机如何查询这个分布式数据库的方式的应用层协议。能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。

作用

将域名解析为IP地址,客户端向DNS服务器(DNS服务器有自己的IP地址)发送域名查询请求,DNS服务器告知客户机Web服务器的IP地址。

2.DNS同时使用TCP和UDP协议?

DNS占用53号端口,同时使用TCP和UDP协议

区域传输的时候使用TCP协议

  • 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如果有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
  • TCP是一种可靠连接,保证了数据的准确性。

域名解析的时候使用UDP协议

  • 客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快,理论上说,客户端也可以制定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询

3.DNS完整的查询过程

DNS服务器解析域名的过程:

  1. 首先会在浏览器的缓存中查找对应的IP地址,如果查找到直接返回,否则继续下一步。
  2. 将请求发给本地DNS服务器,在本地域名服务器缓存中查询,如果查找到,就直接将查找结果返回,否则继续下一步。
  3. 本地DNS服务器向根域名服务器发送请求,根域名服务器会返回一个所查询域的顶级域名服务器地址。
  4. 本地DNS服务器向顶级域名服务器发送请求,接受请求的服务器查询自己的缓存,如果有记录,就返回查询结果,如果没有就返回下一级的权威域名服务器的地址。
  5. 本地DNS服务器向权威域名服务器发送请求,域名服务器返回对应的结果。
  6. 本地DNS服务器将返回结果保存在缓存中,便于下次使用。
  7. 本地DNS服务器将返回结果返回给浏览器。

4.DNS记录和报文

DNS 服务器中以资源记录的形式存储信息,每一个 DNS 响应报文一般包含多条资源记录。一条资源记录的具体的格式为

1
(Name,Value,Type,TTL)

其中 TTL 是资源记录的生存时间,它定义了资源记录能够被其他的 DNS 服务器缓存多长时间。

常用的一共有四种 Type 的值,分别是 A、NS、CNAME 和 MX ,不同 Type 的值,对应资源记录代表的意义不同:

  • 如果 Type = A,则 Name 是主机名,Value 是主机名对应的 IP 地址。因此一条记录为 A 的资源记录,提供了标 准的主机名到 IP 地址的映射。

  • 如果 Type = NS,则 Name 是个域名,Value 是负责该域名的 DNS 服务器的主机名。这个记录主要用于 DNS 链式 查询时,返回下一级需要查询的 DNS 服务器的信息。

  • 如果 Type = CNAME,则 Name 为别名,Value 为该主机的规范主机名。该条记录用于向查询的主机返回一个主机名 对应的规范主机名,从而告诉查询主机去查询这个主机名的 IP 地址。主机别名主要是为了通过给一些复杂的主机名提供 一个便于记忆的简单的别名。

  • 如果 Type = MX,则 Name 为一个邮件服务器的别名,Value 为邮件服务器的规范主机名。它的作用和 CNAME 是一 样的,都是为了解决规范主机名不利于记忆的缺点。