信息技术-域名与DNS解析

2023 / 10 / 3

一.域名

2.1域名与IP地址

域名要从 IP 地址开始解释。IP 地址(类似 192.168.1.1 内网网关)是互联网协议地址,它给因特网上的每台计算机和其它设备都规定了一个唯一的地址。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

但是 IP 地址毕竟是一串毫无规律的数字,并不方便人类的记忆和书写。因此在 IP 地址的基础上又发展出一种符号化的地址方案,来代替数字型的 IP 地址,每一个符号化的地址都与特定的IP地址对应。这个与网络上的数字型 IP 地址相对应的字符型地址,就是域名

那个把你家比喻成网站页面,那么IP地址有点像你家的经纬度,非常不直观不好记,而域名就是你家的门牌号。

类似 kgthe.top、www.baidu.com 这样的字符串就是“域名”,当访问“ kgthe.top”时,首先由 DNS(Domain Name System, DNS)域名系统(这个我们一会再解释)解析为 IP 地址,随后再访问 IP。

2.2顶级域名、一级域名、子域名是什么

一般来说,域名包括顶级域名、一级域名、子域名组成。

  • 顶级域:一般是 .com、.net、.org、.com. cn、.cn 等等。各种域名后缀都有不同含义。例如 .com 意为商业/公司(Commercial / companies / company ),.net 意为网络(network).org 意为组织(organization)。还有国别域名。例如 .CN 就是中国的国别域名。

    后缀

    意义

    com

    商业机构

    net

    网络服务商

    edu

    教育机构

    org

    非营利组织

    gov

    政府部门

    cn

    中国

  • 一级域名: kgthe.top这样的域名就叫做“一级域名”。

  • 二级域名(子域名): mail.kgthe.top 就是一个二级域名,其中“mail”是前缀,同理 www.baidu.com前缀就是“www”。

二.DNS解析

2.1复习

我们首先要来复习一下"域名和IP地址的区别"。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。

      但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的IP地址,这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景,人们在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。

Tips:本部分与一.域名的内容相同

2.2为什么要有DNS

域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的IP地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成IP地址。而DNS域名解析承担的就是这种翻译效果。

2.3DNS域名解析过程

       当我们在浏览器地址栏中输入www.baidu.com 时,DNS解析将会有将近10个步骤,这个过程大体大体由一张图可以表示:

       整个过程大体描述如下,其中前两个步骤是在本地电脑内完成的,后8个步骤涉及到真正的域名解析服务器:

  • 第一步

      本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。

  • 第二步

        如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程,在Linux中可以通过/etc/hosts文件来设置,而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置,用户可以将任何域名解析到任何能够访问的IP地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的IP地址上,导致这些域名被劫持。

  • 第三步

        前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。

  • 第四步

       如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。

  • 第五步

       根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

  • 第六步

       本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。

  • 第七步

        接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。   比如我要访问www.baidu.com ,而这个域名是从A公司注册获得的,那么A公司上的服务器就会有www.baidu.com 的相关信息。

  • 第八步

       Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器。

  • 第九步

       返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。

  • 第十步

       把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。

2.4递归查询和迭代查询的区别

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。

  1. DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

  2. DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

  • 在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

  • 客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

2.5域名解析记录

       主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录:

1、A记录

A代表Address,用来指定域名对应的IP地址,如将item.taobao.com指定到115.238.23.xxx,将switch.taobao.com指定到121.14.24.xxx。A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址

2、MX记录

Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server,如taobao.com域名的A记录IP地址是115.238.25.xxx,如果将MX记录设置为115.238.25.xxx,即xxx@taobao.com 的邮件路由,DNS会将邮件发送到115.238.25.xxx所在的服务器,而正常通过Web请求的话仍然解析到A记录的IP地址

3、CNAME记录

Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将aaa.com解析到bbb.net、将ccc.com也解析到bbb.net,其中bbb.net分别是aaa.com和ccc.com的别名

4、NS记录

为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器取解析

5、TXT记录

为某个主机名或域名设置说明,如可以为ddd.net设置TXT记录为"这是XXX的博客"这样的说明

版权说明:DNS解析这部分来自bangshao1989 DNS域名详细解析过程(最全面,看这一篇就够) ,部分内容经过作者编辑