域名分级与域名解析过程(DNS)

前几天被其他同事的一个问题给问到了,域名的问题,问本人现在的域名很长,当时随口一说是这是一个二级域名,但后面一想有点不对,这种基础的东西搞不清楚是显得又low又蠢,得学习记录一波。今天晚上有空转身就把绿壳计算机网络摸出来了,果然说错了……
本文参考:计算机网络第六版

文章目录

  • 1 域名及域名分级的原因
  • 2 域名分级
  • 3 域名体系与域名解析流程
    • 3.1 域名体系
    • 3.2 域名服务器分类
    • 3.3 域名解析过程
    • 3.4 举例
    • 3.5 域名前的www
    • 3.6 linux 查看域名对应ip的命令
  • 4 主机名
    • 4.1 广域网
    • 4.2 局域网
    • 4.3 host文件
  • 5 参考链接:

1 域名及域名分级的原因

域名系统DNS(domain name system)是因特网使用的命名系统,用于把便于人们记忆的机器名字(域名)转换成ip地址。

那么为什么存在域名分级呢?
因为整个因特网不可能只使用一个域名服务器提供服务,所以,域名系统DNS使用成层次树状结命名,并使用分布式的域名系统。这一点可以参考第三节中域名解析过程。

2 域名分级

任何连接到因特网上的主机或路由都有唯一层次结构的名字即域名(domain name)。

因特网采用层次树状结构命名方法。域是名字空间中一个可被管理的划分(按机构组织划分),域可被划分为子域,子域可再被划分,即形成了顶级域名、二级域名、三级域名等。从右向左为顶级域名、二级域名、三级域名等,用点隔开。如:
tieba.baidu.com
它由三个标号组成, com即为顶级域名,baidu为二级域名,tieba即为三级域名。且域名不分区大小写。
PS:没有一级域名的说法。
现在也有人把baidu.com连在一起称为二级域名,但从wiki定义上来说二级域名只是baidu而已。

3 域名体系与域名解析流程

3.1 域名体系

上面只是从语法上对域名解析进行了分析,但实际上对域名解析真实流程应该有一个基础的概念。

我们可以用一个域名树来表示一个来表示域名网络结构,最上面的是根,但没有对应的名字。根下面一级的节点就是最高一级的顶级域名(因为根没名字,所以根下面一级域名就是顶级域名)。顶级域名往下划分就是二级域名,再往下划分就是三级四级域名。这里就解释了域名系统中根的概念。
域名分级与域名解析过程(DNS)_第1张图片

DNS域名服务器同样具有类似的结构
域名分级与域名解析过程(DNS)_第2张图片

在图中每一个域名服务器都能进行部分域名到IP地址的解析,当某个DNS服务器不能进行域名到IP地址的转换时,它就会到网络上其他域名服务器进行解析。从图中也可看出,DNS域名服务器也是按照层次安排。每一个域名服务器都只对域名体系中的一部分进行管辖。

3.2 域名服务器分类

个人认为本地域名服务器的概念比较重要 和前面三类是不一样的。
(1) 根服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有顶级域名服务器的域名和ip。根域名服务器一版情况下不会把待查询的域名直接转换IP,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询。
(2)顶级域名服务器
顶级域名服务器管理在该顶级域名服务器注册的所有二级域名,但受到DNS查询就会有相应应答。(可能是给出最后的结果或下一步一应当找的域名服务器ip)

(3)权限域名服务器
可以理解为二级域名下 负责一个区的域名服务器、如abc.com和y.abc.com应各设有一个权限域名服务器。
PS: 这里感觉有理解有点误差,在阿里云上买了某个域名abc.com 后面的三级域名都是可以自己设置的,如果访问量较小,整个abc.com仅一个区。下面的y.abc.com和 a.abc.com应该是公用的同一个权限域名服务器。

(4)本地域名服务器
本地域名服务器并不属于3.1域名服务器图中的层级结构,但对域名系统非常重要。但一台主机发出DNS请求时就是发给本地域名服务器。
每一个因特网服务提供ISP(电信联通移动),或一个大学都可以拥有一个本地域名服务器。这种服务器有时也被称为默认域名服务器。本地域名服务器一般离用户较近,一般不超过几个路由的距离。如果要查询的IP同属一个本地ISP时即可直接返回结果地址ip。

域名服务器同样具有主从模式保证服务可用

3.3 域名解析过程

在3.2中了解到了几种域名服务器的区别之后,这里就学习最重要的一个域名是如何变成ip的。
域名服务器(DNS)实际上记录域名与ip的对应关系。
主机发起查询请求到得到结果有以下流程:
1 主机向本地域名服务器发起查询。
2 本地域名服务器向网络上各DNS域名服务器发起请求得到结果
3 本地域名服务器告诉主机结果。

而DNS查询流程有两种模式
递归模式(用于上诉查询1过程中 主机与本地域名服务器的查询):
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服 务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结 果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

迭代模式(用于上诉查询过程2 本地域名服务器与各DNS域名服务器的查):
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

真实DNS解析流程:主机与本地域名服务器递归查询,本地域名服务器迭代查询
域名分级与域名解析过程(DNS)_第3张图片
真实DNS实现上一般都采用高速缓存技术,各级域名服务器缓存一段时间查询结果。

3.4 举例

这里通过一个计算机网络书上的一个举例来说明解析流程:
假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:
1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。
2、本地服务器采用迭代查询。它先向一个根域名服务器查询。
3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
4、本地域名服务器向顶级域名服务器dns.com进行查询。
5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
6、本地域名服务器向权限域名服务器dns.abc.com进行查询。
7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
8、本地域名服务器最后把查询结果告诉m.xyz.com。
整个查询过程共用到了8个UDP报文。本地域名服务器经过3次迭代查询后,从权限域名服务器dns.abc.com得到主机y.abc.com的IP地址。最后将结果返回给发起查询的主机m.xy.comz

这里还需要进行说明的是浏览器到本地域名服务器之前的操作:
1 当我们访问一个 URL,例如 y.abc.com会优先查找浏览器的 DNS 缓存,如果命中就会返回,未命中就会继续下一步,查找操作系统的缓存。
2 浏览器的 DNS 缓存没有命中,则查看操作系统中是否有域名对应的 IP,位于操作系统的 hosts 文件。
3 当 浏览器 DNS 缓存 与 系统(OS)缓存 均无映射,则请求会发送到路由器缓存中检查。(这里路由缓存已经相当于用迭代模式的本地域名服务器了)
正如上诉所说各级域名系统均具有高速缓存。而DNS对域名的解析结果会缓存在上诉所得各级域名服务器内。(这里也包括浏览器)**而缓存时长则由DNS服务设置TTL时间决定。**

3.5 域名前的www

为什么很多域名前面都有www,因为历史遗留原因,早期互联网公司以域名前缀来区分服务,如www.xxx.com,mail.xxx.com,ftp.xxx.com等,所以因为这个遗留原因导致了www延用至今。

在DNS行为上对www和不带www的的解析完全是处理成两个不同域名,如
www.xxx.com
xxx.com
做域名后台解析设置可以将www.xxx.com指向网站ip
xxx.com也同样指向网站ip。当然从SEO优化上考虑,我们可以将xxx.com做301重定向到www.xxx.com

3.6 linux 查看域名对应ip的命令

dig 域名
dig www.xxx.com
域名分级与域名解析过程(DNS)_第4张图片
ANSWER SECTION中内容即为域名对应ip
PS:能访问真外网千万不要点www.xxx.com这个网址,知乎上来的梗(手动滑稽)

4 主机名

有网友提到主机名和域名区别的问题,一下又被问住了。谈起主机名一般都是局域网里面用的多。比如局域网里搜索同事的电脑就是用的主机名。这里进而联想到谈的比较多的hosts文件。 这里也整理一下学习到内容。

主机名,个人认为需要从广域网和局域网来看。

4.1 广域网

在广域网,域名里面的主机名是指:
主机名是指二级域名下一级域名(三级域名)这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的,所以被称为主机名。

4.2 局域网

在网络通信中,每个IP可唯一标识一台主机,但IP地址的可读性非常差。于是人们使用英文字母和单词组成的主机名来替换该主机IP地址。比如
在我所使用内网内,就是用cdoa08的主机名作为172.28.52.200这台服务器的主机名。实际上ping cdoa08 和ping 172.28.52.200 效果是一样。
域名分级与域名解析过程(DNS)_第5张图片
而主机名是如何实现的呢?
1 通过4.3 中host文方式
2 通过内网DNS解析

4.3 host文件

hosts的作用和dns类似,也是通过域名解析出IP地址,只不过是在我们本地进行,而且解析优先级比dns还要高。也就是说系统会首先查找hosts文件里是否有域名的解析信息,如果没有查询到,才会走第二步,继续在dns服务器中查询。

测试:
C:\Windows\System32\drivers\etc
域名分级与域名解析过程(DNS)_第6张图片
这里我在windows host文件里添加一个andlitest 主机名并映射到127.0.0.1
我尝试ping一下 andylitest
域名分级与域名解析过程(DNS)_第7张图片
果然解析到了 127.0.0.1

5 参考链接:

https://www.zhihu.com/question/29998374
https://blog.csdn.net/qq_15936309/article/details/76896562
https://zhuanlan.zhihu.com/p/117964719

你可能感兴趣的:(网络)