DNS

188 阅读4分钟

1.定义

DNS(Domain Names System),域名系统,是互联网的一项服务,是进行域名和与之对应的IP地址进行转换的服务器。

简单来讲,可以将DNS比喻成一个翻译官,负责将域名翻译成IP地址。

  • IP地址:一长串能够唯一标记网络上的计算机的数字。
  • 域名:由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。

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

2. 结构

域名是一个具有层次的结构。从上到下依次为:

  • 根DNS服务器(.)
  • 顶级域DNS服务器(.com)
  • 权威DNS服务器(server.com)

image.png

3. 应用层协议使用DNS的过程

  1. 同一台用户主机上运行着DNS应用的客户端
  2. 浏览器从URL中抽取主机名,将此主机名传送到DNS应用的客户端
  3. DNS客户端向DNS服务器发送一个包含主机名的请求
  4. DNS客户端接收到一个回答报文,回答报文中包含主机名对应的IP地址
  5. 浏览器接收到IP地址后,向位于此IP地址80端口的HTTP服务器进程发起一个TCP连接

4. DNS查询方式

4.1 递归查询

如果A请求B,那么B一定要给A想要的答案。

image.png

4.2 迭代查询

如果A请求B,如果B没有所需要的准确内容,那么B就会告诉A如何去获取这个内容,但是自己并不去向其他人发出请求。

image.png

5. DNS缓存

在一个请求链中,当某DNS服务器接收一个DNS回答(例如,包含某主机名到IP地址的映射)时,它能将映射缓存在本地存储器中。

例如,每当本地DNS服务器dns.nyu.edu从某个DNS服务器接收到一个回答,它能够缓存包含在该回答中的任何信息。如果在DNS服务器中缓存了一台主机名/IP地址对,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器就能够提供所要求的P地址,即使它不是该主机名的权威服务器。由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

6. DNS记录与报文

DNS记录也称为资源记录(Resource Record)。其格式为一个四元组(name,value,type,TTL),其中TTL为该记录存在时间,Name和value的值取决于Type。

image.png

DNS协议为查询和回复,两种格式相同。报文格式如下:

image.png

7. 域名解析过程

  1. 首先搜索浏览器的DNS缓存,缓存中维护一张域名与IP地址的对应表

  2. 若没有命中,则继续搜索操作系统的DNS缓存

  3. 若仍没有命中,那么操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的DNS缓存,查找成功则返回结果

  4. 若本地域名服务器的DNS缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询

    1. 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
    2. 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
    3. 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的IP地址
  5. 本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来

  6. 操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来

  7. 至此,浏览器就得到了域名对应的IP地址,并将IP地址缓存起来

image.png