DNS域名解析简要介绍

DNS域名解析简要介绍

首先,什么是DNS:

1,DNS服务器:

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.台湾”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入、难以在国际推广等。
——维基百科
DNS服务器一共分为三层,根域名服务器,顶级域名服务器,权威域名服务器。
根域名服务器:.root
顶级域名服务器:.com,.cn,.net,.life,.top …
权威域名服务器:baidu.com,vtvv.net,bilibili.com …
剩下的都是这些域名解析出来的二级域,或三级域…

  • 现实生活中需要调取一个服务,首先需要获取服务所承载的服务器的地址,即服务器的IP地址,但是我们熟知的IPV4地址,和现在开始大范围使用的IPV6地址,是由一堆数字,字母和英文 组成的,如果没有域名,让每个人想要获取服务的时候,都去浏览器地址栏内输入一串字符,一不小心就忘了需要输啥,一不小心就输错了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLrRgFEQ-1650122062281)(/upload/2022/04/image-c6366f51c6414c4090c8d4fe2056016c.png)]

所以我们在实际场景中是通过域名来访问Web资源的。

如:
baidu.com
bilibili.com
ysd.life
vtvv.net

而DNS服务器的作用就是将我们在域名服务商处购买的域名和我们的服务器的Ip地址联系起来,绑在一起使用,在浏览器的地址栏内输入域名,通过DNS服务器解析出对应的IP地址,然后返回给服务器通过IP地址去调取服务。

部署一个可以被别人访问到的云服务

当你的域名解析到你对应的服务器的地址,并且在你承载服务的云服务器上配置好你的域名之后,就可以在浏览器中获取你的服务器。

这是使你自己的服务可以被别人访问到,但是别人是怎么访问到你的服务的,这就是我们今天要讲的DNS域名解析的过程。

2,域名解析的过程

在这里插入图片描述

当你在浏览器内输入输入一个域名之后,浏览器需要那些步骤,我们才可以访问到我们需要的服务。

  • 1,浏览器会查找浏览器的DNS缓存记录,查找有没有对应的DNS缓存记录,有的话,直接读取对应的IP地址去获取服务。
    • 查找谷歌浏览器内的DNS缓存记录,直接在抵制栏内输入:
chrome://chrome-urls/
  • 2,如果浏览器的缓存中找不到的话,会继续在本机的缓存记录中寻找。
    • windows系统的话,是在 .host文件内
    • Mac…我没有找到,如果有,请留个消息。🥺
  • 3,如果还是不能找到的话,浏览器会调取本地解析器——DNS客户端,可以看作是一段执行代码,用它来连接本地DNS服务器,他会向本地的DNS服务器发送一个解析请求。
    • 正常情况的话,本地主机的网络设置会保存一个距离最近的DNS服务器的地址
  • 4,本地DNS服务器会调取自己本地的缓存去查询,有没有这个域名对应的IP服务,有的话会直接返回回去。
  • 5,如果他的本地也没有的话,会去访问根服务器,使用迭代的方式一层层的去查找这个域名对应的服务。

下面以阿里云服务器的终端来解析一下baidu.com这个域名来解析他的IP地址来试一试:(下面的步骤是上面 5,的底层操作流程,是一个迭代处理的过程)
首先打开的的电脑的终端:

  • 第一步:使用 nslookup 命令,进入到DNS控制界面。

    • 但是但是。。。有的系统已开始是没有配备这个工具包的,可以使用下面的命令下载一下:
    yum -y install bind-utils
    
  • 第二步:上面在终端运行nslookup,后下方出现一个 > 就说明可以了,开始第二个步骤:查找根服务器——

yinsdsmac@yinsdsdeMacBook-Pro ~ % nslookup
> set type=ns
> .
Server:		8.8.8.8      //本地DNs服务器名称
Address:	8.8.8.8#53   ///本地DNS服务器的IP地址和端口号

Non-authoritative answer:
.	nameserver = a.root-servers.net.
.	nameserver = b.root-servers.net.
.	nameserver = c.root-servers.net.
.	nameserver = d.root-servers.net.
.	nameserver = e.root-servers.net.
.	nameserver = f.root-servers.net.
.	nameserver = g.root-servers.net.
.	nameserver = h.root-servers.net.
.	nameserver = i.root-servers.net.
.	nameserver = j.root-servers.net.
.	nameserver = k.root-servers.net.
.	nameserver = l.root-servers.net.
.	nameserver = m.root-servers.net.

Authoritative answers can be found from:

到这里获得了全球的13个根域服务的域名地址,其中 set type=ns是设置他的请求类型是获取服务名称(name server)。
Non-authoritative answer:非权威回答,这说明现在这里获取到的根域地址是读取的本地的缓存信息,不是从根服务器中调取到的数据,后面同义。

  • 下面的话,就可以开始第三步骤了:设置获取数据类型为IP,然后随机选择13个域名中的1个去获取他的IP地址
> set type=a
> m.root-servers.net.
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	m.root-servers.net
Address: 202.12.27.33
>

第四步:使用获取到的根服务器IP地址,从根服务器获取.com顶级服务器的地址的。(这里使用Mac本地的终端时,获取不到com.的地址)

> set type=ns
>  e.root-servers.net.
Server:         183.60.83.19
Address:        183.60.83.19#53

Non-authoritative answer:
*** Can't find e.root-servers.net.: No answer

Authoritative answers can be found from:
root-servers.net
        origin = a.root-servers.net
        mail addr = nstld.verisign-grs.com
        serial = 2022040700
        refresh = 14400
        retry = 7200
        expire = 1209600
        minimum = 3600000
> set type=a
>  e.root-servers.net.
Server:         183.60.83.19
Address:        183.60.83.19#53

Non-authoritative answer:
Name:   e.root-servers.net
Address: 192.203.230.10
> server 192.203.230.10
Default server: 192.203.230.10
Address: 192.203.230.10#53
> set type=ns
> com.
;; Truncated, retrying in TCP mode.
Server:         192.203.230.10
Address:        192.203.230.10#53

Non-authoritative answer:
*** Can't find com.: No answer

Authoritative answers can be found from:
com     nameserver = l.gtld-servers.net.
com     nameserver = b.gtld-servers.net.
com     nameserver = c.gtld-servers.net.
com     nameserver = d.gtld-servers.net.
com     nameserver = e.gtld-servers.net.
com     nameserver = f.gtld-servers.net.
com     nameserver = g.gtld-servers.net.
com     nameserver = a.gtld-servers.net.
com     nameserver = h.gtld-servers.net.
com     nameserver = i.gtld-servers.net.
com     nameserver = j.gtld-servers.net.
com     nameserver = k.gtld-servers.net.
com     nameserver = m.gtld-servers.net.
l.gtld-servers.net      internet address = 192.41.162.30
l.gtld-servers.net      has AAAA address 2001:500:d937::30
b.gtld-servers.net      internet address = 192.33.14.30
b.gtld-servers.net      has AAAA address 2001:503:231d::2:30
c.gtld-servers.net      internet address = 192.26.92.30
c.gtld-servers.net      has AAAA address 2001:503:83eb::30
d.gtld-servers.net      internet address = 192.31.80.30
d.gtld-servers.net      has AAAA address 2001:500:856e::30
e.gtld-servers.net      internet address = 192.12.94.30
e.gtld-servers.net      has AAAA address 2001:502:1ca1::30
f.gtld-servers.net      internet address = 192.35.51.30
f.gtld-servers.net      has AAAA address 2001:503:d414::30
g.gtld-servers.net      internet address = 192.42.93.30
g.gtld-servers.net      has AAAA address 2001:503:eea3::30
a.gtld-servers.net      internet address = 192.5.6.30
a.gtld-servers.net      has AAAA address 2001:503:a83e::2:30
h.gtld-servers.net      internet address = 192.54.112.30
h.gtld-servers.net      has AAAA address 2001:502:8cc::30
i.gtld-servers.net      internet address = 192.43.172.30
i.gtld-servers.net      has AAAA address 2001:503:39c1::30
j.gtld-servers.net      internet address = 192.48.79.30
j.gtld-servers.net      has AAAA address 2001:502:7094::30
k.gtld-servers.net      internet address = 192.52.178.30
k.gtld-servers.net      has AAAA address 2001:503:d2d::30
m.gtld-servers.net      internet address = 192.55.83.30
m.gtld-servers.net      has AAAA address 2001:501:b1f9::30
>
  • 第五步:使用获取到的 com. 的顶级域中选一个IP地址进行使用,去获取baidu.com的Ip地址:
> set type=ns
> baidu.com
Server:         192.41.162.30
Address:        192.41.162.30#53

Non-authoritative answer:
*** Can't find baidu.com: No answer

Authoritative answers can be found from:
baidu.com       nameserver = ns2.baidu.com.
baidu.com       nameserver = ns3.baidu.com.
baidu.com       nameserver = ns4.baidu.com.
baidu.com       nameserver = ns1.baidu.com.
baidu.com       nameserver = ns7.baidu.com.
ns2.baidu.com   internet address = 220.181.33.31
ns3.baidu.com   internet address = 112.80.248.64
ns4.baidu.com   internet address = 14.215.178.80
ns1.baidu.com   internet address = 110.242.68.134
ns7.baidu.com   internet address = 180.76.76.92
ns7.baidu.com   has AAAA address 240e:940:603:4:0:ff:b01b:589a
ns7.baidu.com   has AAAA address 240e:bf:b801:1002:0:ff:b024:26de
> 
  • 第六步:继续先上解析,值到最后出现的两个IP地址,复制他们到浏览器中都可以获取到baidu.com的内容:
> server  220.181.33.31
Default server: 220.181.33.31
Address: 220.181.33.31#53
> set type=ns
> baidu.com
Server:         220.181.33.31
Address:        220.181.33.31#53

baidu.com       nameserver = ns7.baidu.com.
baidu.com       nameserver = dns.baidu.com.
baidu.com       nameserver = ns2.baidu.com.
baidu.com       nameserver = ns3.baidu.com.
baidu.com       nameserver = ns4.baidu.com.
> set type=a
> ns7.baidu.com
Server:         220.181.33.31
Address:        220.181.33.31#53

Name:   ns7.baidu.com
Address: 180.76.76.92
> server  180.76.76.92
Default server: 180.76.76.92
Address: 180.76.76.92#53
> set tpe=a
*** Invalid option: tpe=a
> set type=a
> baidu.com
Server:         180.76.76.92
Address:        180.76.76.92#53

Name:   baidu.com
Address: 220.181.38.251
Name:   baidu.com
Address: 220.181.38.148
> 

好了,就这些啦,如果有不理解的或者有错误的,请各位在闲暇之余请及时留言联系,望指正。

标注源地址:vtvv.net

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值