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组根名称服务器。"