首页>常见问题>APP开发之DNS的基础介绍
永佳动态 行业资讯 永佳见解 常见问题

APP开发之DNS的基础介绍

更新时间:2021/1/29 14:16:39 作者:永佳软件

    "DNS是Internet的核心协议之一。无论是浏览Internet还是编程开发,您都需要了解一点。

    本文详细介绍了DNS的原理以及如何使用工具软件观察DNS的运行情况。我的目标是阅读本文后,您将能够完全了解DNS。

    1.什么是DNS?

    DNS的作用(DomainNameSystem的缩写)非常简单,它是根据域名找出IP地址的。您可以将其视为一本巨大的电话簿。

    例如,如果要访问域名math.stackexchange.com,则必须首先通过DNS找出其IP地址为151.101.129.69。

    如果您不知道为什么必须先找到IP地址,然后才能在网络上进行通信,建议阅读我写的“Internet协议简介”。

    二,查询过程

    尽管仅需要返回一个IP地址,但DNS查询过程非常复杂,分为多个步骤。

    工具软件dig可以显示整个查询过程。

    $digmath.stackexchange.com

    上面的命令将输出六条信息。

    段是查询参数和统计信息。

    第二段是查询内容。

    以上结果表明查询域名为math.stackexchange.com的A记录,A为地址的缩写。

    第三段是DNS服务器的响应。

    以上结果表明math.stackexchange.com具有四个A记录,即四个IP地址。TTL值(Timetolive的缩写)为600,表示缓存时间,即不需要在600秒内再次查询。

    第四段显示stackexchange.com的NS记录(NameServer的缩写),即,哪些服务器负责管理stackexchange.com的DNS记录。

    以上结果表明,stackexchange.com具有四个NS记录,即四个域名服务器,可以通过查询其中任何一个来查找math.stackexchange.com的IP地址。

    第五段是以上四个域名服务器的IP地址,与前一段一起返回。

    第六段是DNS服务器的一些传输信息。

    以上结果表明,本机的DNS服务器为192.168.1.253,查询端口为53(DNS服务器的默认端口),响应长度为305字节。

    如果不想看到太多内容,可以使用short参数。

    $digshortmath.stackexchange.com

    151.101.129.69

    151.101.65.69

    151.101.193.69

    151.101.1.69

    上面的命令仅返回与math.stackexchange.com对应的4个IP地址(即A记录)。

    三,DNS服务器

    下面我们将根据上一个示例逐步还原本机如何获取域名math.stackexchange.com的IP地址。

    首先,计算机必须知道DNS服务器的IP地址,否则它将无法访问Internet。只有通过DNS服务器,我们才能知道域名的IP地址。

    DNS服务器的IP地址可能是动态的,并且每次您上线时都会由网关分配。这称为DHCP机制。它也可以是预先指定的固定地址。在Linux系统中,DNS服务器的IP地址存储在/etc/resolv.conf文件中。

    上例中的DNS服务器为192.168.1.253,这是一个内部网地址。有一些公共DNS服务器也可以使用。最著名的是Google的8.8.8.8和Level3的4.2.2.2。

    本机仅查询自己的DNS服务器。dig命令具有一个@参数,该参数显示查询其他DNS服务器的结果。

    $dig@4.2.2.2math.stackexchange.com

    上面的命令指定查询DNS服务器4.2.2.2。

    四,域名层次

    DNS服务器如何知道每个域名的IP地址?答案是分层查询。

    请仔细查看前面的示例,每个域名的末尾都有一个点。

    例如,域名math.stackexchange.com显示为math.stackexchange.com。这不是疏忽,但在所有域名的末尾,实际上有一个根域名。

    例如,www.example.com的真实域名是www.example.com.root,缩写为www.example.com。因为根域名.root对于所有域名都相同,所以通常将其省略。

    根域名的下一级称为“

    域名”(顶级域名,缩写为TLD),例如.com,.net;下一级称为“第二域名”(缩写为SLD),例如www.example.com中的.example,级别的域名可以由用户注册;下一级是主机名(host),例如www.example.com中的www,也称为“第三级域名”,用户可以在其中注册他域中的服务器分配的名称由用户任意分配。

    总而言之,域名的层次结构如下。

    主机名。子域。

    域名。根域名

    #这是

    host.sld.tld.root

    五,根名称服务器

    DNS服务器根据域名的层次结构执行层次结构查询。

    需要明确的是,每个域名都有其自己的NS记录,并且NS记录指向该域名的域名服务器。这些服务器知道下一级域名的各种记录。

    所谓“级别查询”就是从根域名开始,依次查询每个级别域名的NS记录,直到找到最终的IP地址。该过程大致如下。

    从“根域名服务器”检查

    NS记录和“域名服务器”的A记录(IP地址)

    从”

    域名服务器找到了“辅助域名服务器”的NS记录和A记录(IP地址)

    从“辅助域名服务器”中查找“主机名”的IP地址

    如果仔细查看上述过程,可能会发现没有提到DNS服务器如何知道“根域名服务器”的IP地址。答案是“根域名服务器”的NS记录和IP地址通常不会更改,因此它内置在DNS服务器中。

    以下是内置的根域名服务器IP地址的示例。

    在上面的列表中,列出了根域名(.root)的三个NS记录A.ROOT-SERVERS.NET,B.ROOT-SERVERS.NET和C.ROOT-SERVERS.NET以及它们的IP地址(即A记录)198.41.0.4、192.28.79.201、192.3.4.12。

    此外,您可以看到所有记录的TTL值是360万秒,相当于1000小时。换句话说,根域名服务器列表仅每1000小时被查询一次。

    目前,从A.ROOT-SERVERS.NET到M.ROOT-SERVERS.NET,全球共有13组根名称服务器。"