《图解TCP/IP》阅读笔记(第五章 5.1、5.2)—— DNS技术初探

《图解TCP/IP》

第五章 IP协议相关技术

本章主要介绍和IP协议搭配的辅助和扩展规范的DNS、ARP、ICMP以及DHCP等协议

5.1 仅凭IP无法完成通信

这一点,应该是毋庸置疑的。

书中从两个点说明为什么仅依靠IP地址是无法完成通信的

  • 实际网上冲浪中,很少出现直接通过IP完成通信的情况。不仅是因为大量的IP地址难以记忆,而且在不同的网络中,IP还会发生重复的情况
  • IP层用在七层网络模型的第三层,数据链路层是用不到IP地址的,在以太网环境中,必须要了解发送端的MAC地址。

这一小节就是引子,引出之后的内容

5.2 DNS(域名服务器)

从一开始,就有一种叫做主机识别码的东西,其通过给每台计算机赋以唯一的主机名,进行通信时就可以直接使用主机名而无需输入一大长串的IP地址。

要搭配这一功能,系统就需要自动将主机名转换为具体的IP地址。这些数据就用在hosts文件中(早些年可以通过修改hosts文件,实现访问墙外网站的功能)

在这个背景下,DNS应运而生。DNS系统可以有效管理主机名和IP地址之间对应关系的系统。

其工作原理如下:

当用户输入主机名(域名)时,DNS会在记录了主机名和IP地址的数据库中,自动检索该主机名对应的IP地址。如果两者需要变更对应关系,在数据库内变更即可。

那么,域名又是什么呢?

其实上网冲浪的我们几乎天天见,拿我们学校的官网举例:

  • 学校官网:www.xidian.edu.cn
  • 学校教务处:jwc.xidian.edu.cn
  • 我们学院:ste.xidian.edu.cn

可以看到,后面的xidian,使我们学校的名称,edu指的是教育性质的网站,cn则是隶属于中国的网站

读到这里读者应该可以意识到了,如果把DNS比作一棵树,那儿根部就是最后的一节,被称为第一层域名,包括日本jp、英国uk等国家的域名,亦或是edu(美国教育机构)或是com(美国企业)等特定领域的域名。

而下一层域名中则通常包括表示不同组织机构的属性域名,或者是表示地域的通用域名,在此之下还可以用第三层域名。

以我们学校官网为例,第一层域名即cn,表示中国;第二层域名edu表示教育机构(由此可见不同国家划分域名的方式尽管殊途同归,但还是有些出入的);而第三层域名xidian则表示了我们学校的名字,西安电子科技大学,隶属于中国教育部的一所大学。

书中提到,一直以来都是使用ASCII码(及我们常见的英文数字以及常见字符)来表示域名,但现在还有使用日语的域名。

从刚刚的介绍中就可以看出来,域名必然是需要申请与被管理的,否则大家域名冲突了,跳入某些“不知名”网站,那就难以名状了。

域名服务器(domain name server,DNS),管理的分层,叫做ZONE(什么黑子的篮球),由下图可见,每层都设有一个域名服务器,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BLMCFVEx-1670642688613)(C:\Users\19041\AppData\Roaming\Typora\typora-user-images\image-20221210080240586.png)]

从上图中可以看到,所有的域名服务器都指向根域名服务器,其中注册着根以下第一层域名服务器的IP地址。如果要新增或者修改,就需要在域名服务器中进行追加或者变更。

从某些新闻中我们也可以得知,如果域名服务器被破坏或者被屏蔽,那么就无法通过域名查询IP。下面这篇文章就足以看出域名服务器的重要性。

美国人如果把根域名服务器封了,中国将会从网络上消失? - 知乎 (zhihu.com)

通常情况下,会设置至少两个以上的域名服务器(睿思(指我们学校的论坛),你崩了我可怎么活啊.jpg)。一旦一个域名服务器无法提供查询服务时,就会自动转到第二个甚至第三个域名服务器上进行。

所有的域名服务器都必须注册根域名服务器的IP地址,有一种江湖各大帮派需要尊奉武林盟主的意味。

从刚刚的阅读过程中,读者也许对某个服务有了兴趣,那就是域名服务器是如何解析域名的。进行DNS查询的主机和软件叫做DNS解析器。我们平时使用的主机中都包含解析器的功能。解析器必须得注册至少一个域名服务器的IP地址,在学校局域网中,连接校园网,就可以理解为域名注册的过程(这句话不知道对不对)。

有了解析功能,进而就应该聊聊如何进行解析?书中给出了这么一张图,非常直观。

第一步,就是主机的解析器(左下角)往域名服务器发出查询请求,这台域名服务器首先会在自己的数据库中进行查找,如何有待查询域名对应的IP地址,就返回。

如果没有查询到,就向再上一层的域名服务器请求查询。整个过程是遍历一棵树的过程,域名服务中有张表记录了域名与IP的对应关系,每个节点可以查询,直到在该树中查询到某个IP为止,并把所需的数据进行回传。

值得提到的一点是,为了节省查询时的性能消耗,解析器和域名服务器会将最新的信息保存在缓存里。(换言之,在数内搜索会比较耗时是吗?)

如果有了解分布式数据库的同学看到这里应该有一种感悟,DNS其实就如用互联网中的分布式数据库,其所管理的信息不仅包括主机名与IP地址之间的映射关系,还包括很多其他信息,参考下图:

参考上面所贴的文章(美国人如果把根域名服务器封了,中国将会从网络上消失? - 知乎 (zhihu.com)),下面介绍一下DNS的工作方式:

上表中最常见的3种类型:A记录(记录某域名和其IP的对应),NS记录(记录某域名和负责解析该域的权威DNS,权威DNS的意思就是负责对请求做出权威的回答),CNAME记录(负责记录某域名及其别名)。权威能直接回答的,就回复A记录;需要其他权威DNS回答的,就回复NS记录,然后LDNS(本地DNS)再去找其他权威DNS问;如果该记录是别名类型的,就回复CNAME,LDNS就会再去解析别名。

现在举一个具体的例子:比如终端请求http://www.baidu.com这个域名的IP。

在没有缓存时,LDNS会从根DNS问起:

1、LDNS问根DNS说:“http://www.baidu.com的IP是多少啊?”。(之所以能问到,是因为根DNS的IP通常是预先配置在LDNS中的)

2、根DNS说:“我哪有时间管你这么细的问题,你去问com顶级域的DNS吧,我只管到顶级域,喏,这些是com顶级域DNS的名字和IP,你去问它们吧”。(以NS记录回应)

3、LDNS又忙问com的权威DNS,com权威DNS说:“你问的这是三级域名,我不管这么多,你去问http://baidu.com的权威DNS吧,它的名字是http://ns.baidu.com,他的IP是XXX(这里可能给出多个权威DNS)”。

4、LDNS继续问http://baidu.com的权威DNS,这次痛快,因为http://www.baidu.com正是它管的,它可能直接给出A记录,也可能给出CNAME记录,如果是前者,就直接得到IP,如果是后者,就需要对别名再做查询。

5、最终,LDNS得到http://www.baidu.com的IP,并将其返回给终端。

而由于缓存的关系,实际中的查询没有这么复杂,作者给出了实际中的DNS查询过程:

实际DNS查询的过程,是这样的:

举个例子,比如用户在浏览器中输入这个域名:http://123.abc.qq.com.cn

1、浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,

如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,

如果没有,再去hosts文件看,也没有,才会去问LDNS。

2、LDNS会去先看看自己有没有http://123.abc.qq.com.cn的A记录,要有就直接返回,

要没有,就去看有没有http://abc.qq.com.cn的NS记录,如果有,就去问它要答案,

如果没有,就去看有无http://qq.com.cn的NS的记录,如果有,就去问它,

没有就去看有无http://com.cn的DNS,

还没有就去看有无cn的DNS,

如果连cn的NS记录都没有,才去问根。

所以,有了缓存以后,教科书上那种从根问起的情况,实际上很少发生。

只有在各处都没有缓存的时候,我们才会问根。

表中的其他内容在此就不再赘述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值