1. 首页 > 快讯

小菜学网络之DNS服务器工作原理-dns服务器工作原理

大家好,感谢邀请,今天来为大家分享一下小菜学网络之DNS服务器工作原理-dns服务器工作原理的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

[[394856]]

通过上一节的学习,我们初步掌握了域名系统的基本原理。通过域名访问网络服务时,需要首先向DNS服务器查询该域名对应的IP地址。那么,所有域名都存储在一台服务器上吗?

答案肯定是否定的。全球现有的域名数量是一个天文数字,不是一两台服务器能够保存的。事实上,DNS服务器被划分为很多角色,形成了一个分层的分布式系统。

本节我们就来看看它背后的故事。

管理机构

全球域名的最高管理机构是ICANN(互联网名称与数字地址分配机构),该组织总部位于美国加利福尼亚州。 ICANN负责管理整个域名系统的运行,其主要工作是规划顶级域名(TLD)。

顶级域名是第一级域名,可以分为两种:

通用顶级域名,例如.com、net、edu、org等;国家级顶级域名,如.cn、hk、jp、us等; ICANN不会直接管理这些顶级域名,因为顶级域名需要管理的域名太多了。目前全球有1000多个顶级域名,每个顶级域名下都有很多批发商和零售注册商,管理起来比较麻烦。

因此,ICANN为每个顶级域名找到一个托管人,负责该域名下的所有事务。这样一来,ICANN 只需要与托管人打交道,生活就会轻松很多。

例如,cn域名由中国互联网络信息中心(CNNIC)托管,该中心制定了.cn域名的各项政策;而.com 域名则由VeriSign 托管。

看来ICANN控制着根域的控制权:

一方面决定了根域即顶级域名下有多少个子节点;另一方面,它决定了每个顶级域名的托管提供商;

根服务器

理论上,查询任何域名都需要首先查询ICANN的根域。因为只有根域才能知道:谁在托管某个域以及它是哪些服务器。事实上,情况确实如此。 ICANN维护着一张映射表,记录了每个顶级域名和对应的主机。

例如,查询域名www.fasionchan.com时,我们需要先查询ICANN的映射表。它会告诉我.com 域是由VeriSign 托管的,所以我必须去VeriSign,VeriSign 会告诉我应该给fasionchan.com 打电话给谁。

ICANN 维护的根域名列表称为DNS 根区域。 ICANN 官方网站提供根区域相关信息,包括根区域文件。根区域文件保存了所有顶级域的托管信息,因此它非常大,超过2MB。

以顶级域名.com为例,从根域可以查询到13个域名服务器:

com.172800INNSb.gtld-servers.net.com.172800INNSg.gtld-servers.net.com.172800INNSf.gtld-servers.net.com.172800INNSe.gtld-servers.net.com.172800INNSc.gtld-servers.net。 com.172800INNSj.gtld-servers.net.com.172800INNSk.gtld-servers.net.com.172800INNSa.gtld-servers.net.com.172800INNSi.gtld-servers.net.com.172800INNSm.gtld-servers.net。 com.172800INNSd.gtld-servers.net.com.172800INNSh.gtld-servers.net.com.172800INNSl.gtld-servers.net。也就是说,以.com结尾的域名可以到这13台服务器中的任意一台去查询,比如a.gtld-servers.net。

我们注意到,这13台服务器仍然以域名的形式提供。也就是说,我们首先要通过域名找到.com服务器的IP地址。但是,这不会造成循环查询吗?

为此,DNS 根区域还提供这些服务器的IP 地址(IPv4 和IPv6 版本):

a.gtld-servers.net.172800INA192.5.6.30b.gtld-servers.net.172800INA192.33.14.30.m.gtld-servers.net.172800INA192.55.83.30a.gtld-servers.net.172800INAAAA2001:503333 60a 83e:2:30b 。 gtld-servers.net.172800INAAAA2001:503:231d:2:30.m.gtld-servers.net.172800INAAAA2001:501:b1f9:30DNS根区域列表存储在哪里?答案是根名称服务器。

早年,全球只有13个根域名服务器,编号从a.root-servers.net到m.root-servers.net。由于早期的DNS查询结果是通过512字节的UDP数据报传输的,因此最多只能容纳13个服务器地址。

可以在root-servers.org 上找到根名称服务器列表。

这13个根域名服务器由12个独立组织独立运营。其中,A和J由VeriSign管理。为了保证可用性,每个运营组织都会部署很多节点。仅根服务器A就有16个节点部署在全球。

虽然每个根服务器部署了多个节点,但它们的IP地址都是相同的。以根服务器A为例。其16个节点的IP地址均为198.41.0.4。这太棒了!这么多节点共享同一个IP地址,会不会产生冲突?

得益于Anycast路由技术,分散在不同地理位置的多台服务器可以使用相同的IP地址。当发送者向该IP地址发送数据时,路由协议会自动选择最近的节点。这里暂时不列出Anycast路由技术,以后有机会再介绍。

这意味着全球只有13个根域名服务器,对应的IP地址也只有13个。您可以通过执行dig 命令来获取它:

root@netbox[~]dig.NS;DiG9.16.1-Ubuntu@10.2.66.66.NS;(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,status:NOERROR,id:42791;flags:qrrdra;QUERY3336 01,答案:13 ,AUTHORITY:0,附加:8;OPTPSEUDOSECTION:EDNS:version:0,flags:udp:4000;QUESTIONSECTION:INNS;ANSWERSECTION:1700INNSk.root-servers.net.170 NSm.root-servers.net.1700INNSl.root-servers.net。1700INNSb.root-服务器.net.1700INNSg.root-服务器.net.1700INNSf.root-服务器.net.1700INNSd.root-服务器.net.1700INNSe.root-服务器.net.1700INNSi.root-服务器.net.1700INNSa.root-servers.net.1700INNSh.root-servers.net.1700INNSj.root-servers.net.1700INNSc.root-servers.net.附加部分:k.root-servers.net。 3282INA193 .0.14.129g.root-servers.net.2845INA192.112.36.4d.root-servers.net.118INA199.7.91.13e.root-servers.net.494INA192.203.230.10a.root-servers.net.1771INA198。 41.0 .4j.root-servers.net.3197INA192.58.128.30c.root-servers.net.1830INA192.33.4.12;查询时间:14毫秒;服务器:10.2.66.66#53(10.2.66.66);WHEN:ThuApr080第933章36001:17CST2021; MSGSIZErcvd:364 :010 -1010 我们在查询域名时,必须从根服务器开始,一层层查询。这就是所谓的迭代查询。

如上图,当我们查询一个域名时,例如www.fasionchan.com:

首先查询根域名服务器;

根域名服务器只有13个,IP大家都知道,很少变动;根域名服务器保存根区域列表,其中包含顶级域名的主机及相关服务器信息;根域名服务器根据根区域列表告诉我们顶级.com 谁应该查询该域名?根据根服务器返回的结果,继续查询负责.com解析的服务器,一般称为顶级域名服务器;

主域名fasionchan.com注册后,负责域名解析的服务器需要注册到.com顶级域名服务器上;根据这些信息,com顶级域名服务器告诉我们谁应该查询fasionchan.com域名;根据顶级域名服务器返回结果,继续查询负责fasionchan.com解析的服务器,一般称为权威域名服务器;

fasionchan.com子域名信息一般是在权威服务器上注册的;权威服务器取出www.fasionchan.com对应的记录返回给我们,查询结束;如果某个子域名负责其他权威服务器,则需要继续迭代,直到查询完成;无论查询什么域名,都需要先查看根域名服务器。这样的话,根服务器的压力会不会太大了?

其实完全不用担心。由于根服务器上存储的根区域列表很少发生变化,因此客户端可以对其进行缓存,以减少根服务器的查询压力。

迭代查询

事实上,客户端一般不会自行进行迭代解析,而是使用本地递归解析器。以访问网站www.fasionchan.com为例:

客户端向本地递归解析器查询域名www.fasionchan.com;递归解析器向根域名服务器查询域名www.fasionchan.com;根域名服务器告诉递归解析器应该去.com的顶级域名服务器;递归解析器向顶级域名服务器查询域名www.fasionchan.com;顶级域名服务器告诉递归解析器应该去fasionchan.com的权威域名服务器;递归解析器向权威域名服务器查询域名www.fasionchan.com;权威服务器将结果返回给递归解析器;递归解析器将结果返回给客户端;客户端获得域名对应的IP地址后,即可向Web服务器发起请求; Web服务器处理完请求后,将结果返回给客户端;注意,递归解析器需要从根服务器开始,逐层查询。这个过程就是迭代解析。迭代解析最显着的特点是,如果服务器没有要搜索的域名的结果,它会告诉客户端去哪里搜索。根服务器就是一个典型的例子。

这与递归解析器不同。当它收到未知域名的查询请求时,它会代表客户端向其他DNS服务器发起请求,然后将结果返回给客户端。这个过程称为递归查询。

递归解析对客户端来说是完全透明的,客户端不需要关心递归解析器后面的其他DNS服务器。

此外,递归解析器将查询结果缓存在本地。当再次查询域名时,可以直接返回缓存的结果,无需重新查询其他DNS服务器。因此,递归解析器通常称为DNS 缓存服务器。

那么,客户端主机如何配置DNS缓存服务器呢?以Linux系统为例,只需编辑/etc/resolv.conf配置文件:

root@netbox[~]cat /etc/resolv.conf#Thisfileisincludedonthemetadataisonameserver192.168.65.1 关键字nameserver后面是DNS缓存服务器地址,可以写多行配置多个DNS缓存服务器以实现冗余。

好了,关于小菜学网络之DNS服务器工作原理-dns服务器工作原理和的问题到这里结束啦,希望可以解决您的问题哈!

用户评论

人心叵测i

想最近想学习一下怎么搭建自己的网站,这篇文章正好很实用!

    有20位网友表示赞同!

话少情在

之前看到过 DNS 的概念,但从来没想过它的详细运作机制,终于有人来解释了!

    有14位网友表示赞同!

执笔画眉

看完这篇文章,我对域名解析的过程好像有了更深刻的理解。

    有7位网友表示赞同!

最怕挣扎

原来小小的一个地址能经过这么多步骤才能找到对应的网站啊!

    有9位网友表示赞同!

柠夏初开

现在很多人都使用公共 DNS 服务器了,但明白它的原理确实很重要。

    有18位网友表示赞同!

来瓶年的冰泉

做网络安全的小伙伴一定得了解 DNS 的运作机制吧?

    有17位网友表示赞同!

枫无痕

感觉这篇文字解释的很清楚,新手也能看懂!

    有11位网友表示赞同!

抚笙

我一直以为 DNS 就是负责解析域名的服务器,原来还有这么多细节啊!

    有20位网友表示赞同!

执拗旧人

这篇文章让我对网络基础知识有了更清晰的认识。

    有20位网友表示赞同!

逃避

分享给我的朋友学习用!

    有9位网友表示赞同!

糖果控

以后知道域名是怎么找到相应的网站的了!

    有6位网友表示赞同!

虚伪了的真心

做程序员一定要了解 DNS 的工作原理,毕竟很多应用都要用到它啊!

    有5位网友表示赞同!

十言i

感谢作者将这些专业知识解释得这么通俗易懂!

    有14位网友表示赞同!

你身上有刺,别扎我

这篇文章很有用,可以用来学习网络安全相关的内容。

    有18位网友表示赞同!

墨城烟柳

原来 DNS 服务器还有缓存的功能,这样就能加快网页加载速度的呀!

    有12位网友表示赞同!

風景綫つ

这篇文章让我对网络技术有了更深层的理解,感觉自己离成为 IT 专家更近了!

    有11位网友表示赞同!

凝残月

学习DNS可以帮助我更好地维护我的网站,太棒了!

    有13位网友表示赞同!

熏染

真不错的一篇入门文章!

    有12位网友表示赞同!

颜洛殇

这篇文章让我进一步了解了网络的世界,对技术充满了好奇心!

    有9位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7221.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666