【读书笔记】DNS解析

450

前言

种一棵树最好的时间是十年前。 --谁说的不要紧。

IP地址基础知识

在网络中,所有的设备都会被分配一个地址,这个地址类似于现实中的住宅地址:“XX号XX室”。而“室”对应的号码是分配给子网中的计算机的,这就是网络中的地址。“号”对应的号码称为网络号,“室”对应的号码称为主机号,这个地址的整体称为IP地址。通过IP地址我们可以判断出访问对象服务器的位置,从而将消息发送到服务器。 但现实中我们更多的是使用域名来访问网站,所以我们在使用域名访问网站的时候需要通过DNS查询该域名对应的IP地址。(内多很多网址被墙是由于DNS解析域名污染,如果针对某个单独的被墙的网站可以尝试传送门

抛出问题

DNS(Domain Name System 域名服务系统)服务器会从域名与IP的对照表中查找出相应的记录并返回IP。再那我们先来探索一下这个对照表。那么首先要从域名的结构说起。

域名的层次结构

DNS 中的域名都是用句点来分隔的,比如www.lab.glasscom.com,这里的句点代表了不同层次之间的界限;。在域名中,越靠右的位置表示其层级越高。

级别 备注
根域 . 全球根域DNS服务器对于的IP只有13个,通常www.lab.glasscom.com. 通常写法省略最右边的 '.' 。
顶级域 com 分为两类:①国家顶级域名;例如中国是cn,美国是us。②国际顶级域名;表示网络提供商的 . net,表示非盈利组织的 . org
二级域 glasscom  是指顶级域名之下的域名,它是指域名注册人的网上名称
三级域 lab 在二级域名下注册
四级域 www 在三级域名下注册

域名的存储规则

互联网中有数万台DNS服务器,肯定不能一台一台的挨个去找,可以采取以下做法:首先,将负责管理下级域的DNS服务器的IP地址注册到他们的上级DNS服务器中,然后上级DNS服务器服务器的IP地址再注册到更上一级的DNS服务器中,以此类推。那么起点便是的根域。那又如何能找到根域进而查找根域下的子域呢?上面我们已经说过,全球分配给根域的DNS服务器的IP地址地址全球仅有13个,而且这些地址是不会轻易发生变化的,所以这13的IP地址再安装DNS服务器程序的时候就已经被配置好了。

域名结构图

域名查询

客户端首先会访问最近的一台DNS服务器

每台DNS服务器都保存了根域服务器的地址,如果自身查找不到的会就会从根域开始查找。

假设我们要查询www.lab.glasscom.com这台Web服务器的相关信息。由于最近的DNS 服务器中没有存放www.lab.glasscom.com这一域名对应的信息,所以我们需要从顶层开始向下查找。最近的DNS 服务器中保存了根域DNS 服务器的信息,因此它会将来自客户端的查询消息转发给根域DNS 服务器。根域服务器中也没有www.lab.glasscom.com这个域名,但根据域名结构可以判断这个域名属于com 域,因此根域DNS 服务器会返回它所管理的com 域中的DNS 服务器的IP地址,意思是“虽然我不知道你要查的那个域名的地址,但你可以去com 域问问看”。接下来,最近的DNS 服务器又会向com 域的 DNS 服务器发送查询消息。com 域中也没有www.lab.glasscom.com 这个域名的信息,和刚才一样,com 域服务器会返回它下面的glasscom.com 域的DNS 服务器的IP 地址。以此类推,只要重复前面的步骤,就可以顺藤摸 瓜找到目标DNS 服务器,只要向目标DNS 服务器发送查询消息, 就能够得到我们需要的答案,也就是www.lab.glasscom.com 的IP 地址了。

DNS服务器还有一些缓存机制来加速访问的过程。

笔记来源

本文主要是读自于《网络是怎样连接的》。