DNS详解

前言:
前面讲了域名、IP,那么还缺少一个主角—DNS。这些都是网络中最最最基础的,也是最重要的概念,很有必要深入学习下。

网站打开的原理
我们在通过网站网址打开网站的过程中,其实就是浏览器获取到了隐藏在网址背后的网站服务器的IP地址,通过访问这个IP地址的网站服务器来打开网站。也就是说所有的域名,真正起作用的是它背后的服务器的IP地址。那浏览器之所以知道每一个域名背后对应的网站服务器的IP地址,靠的就是DNS。
在这里插入图片描述

正文

NDS全称Domain Name System,翻译过来就是域名系统。 在我看来它是一种机制,是管理和查询世界上所有域名,所对应的IP地址的一种非常高效的一种机制。而实现这个机制,主要靠的就是专门的DNS服务器注意,我这里说的是们 。互联网世界中有很多的NDS服务器,它们到底是如何协作,实现域名和IP地址的高效查询和管理的呢?本文章我们来了解一下DNS背后的工作原理。
DNS的服务器,它有一个分层协作的机制 ,这个分层机制和我们了解过的域名的层级有非常大的关系。 eg:b站的域名(www.bilibili.com),最右边的com是顶级域名(世界顶级域名,cn是国内顶级域名),往左的bilibili是一级域名,再往左的是二级域名www,如果往左还有的话,那等级就依次递减。不过其实还有一个根域名.root,应该写在域名的最右侧,也就是等级最高的域名 ,所以b站完整的域名是www.bilibili.com.root。但是这个根域名,因为它是唯一的,你写了跟没写没差,写了反而显得多余,因此我们在日常使用过程中,基本上都不会去写根域名,只不过在有些场景,或者是有些域名的写法会带上这个点root或者是只有一个点,eg:www.bilibili.com.这样的一个简化的写法。那么根域名和域名的层级与我们这个DNS服务器有什么关系呢?
假如现在有一个人,想要在浏览器里面打开b站,他在浏览器里面输入的是www.bilibili.com,然后回车,然后浏览器会通过网络去向某台DNS服务器查询www.bilibili.com这个域名背后对应的IP地址。每台联网的设备,都会有一台指定的DNS服务器来帮助自己去完成查询的过程。这里就好比,我是负责查询任务的NDS服务器,我的查找的过程会先从DNS服务器们中的一种叫做Root DNS Server,就是根DNS服务器开始找起,这种服务器是专门用来,只负责记录com、net、org等等这些顶级域名的DNS服务器的网络地址的。那也就是说,Root DNS服务器收到域名的查询请求之后,它只看你要查询的域名的顶级域名是什么,它一看这个是com顶级域名,它就会回复:“好的,这里是负责管理com顶级域名的DNS服务器的网络地址,你去这些服务器那里问问看吧”我这台DNS服务器收到这些从根DNS服务器发回的消息之后,又马不停蹄的去找负责com顶级域名的DNS服务器了(Top Level Server),而负责com顶级域名的服务器,在了解到我的查询请求之后,它帮我查查bilibili.com域名的信息,然后发现专门负责bilibili.com域名的DNS服务器的网络地址,这种NDS服务器一般被称为Name Server。然后它就把这个DNS服务器的网络地址发给了我,然后我就继续去找这个专门的Name Server,从它那里,我终于找到了,www.bilibili.com这个域名(对应)的IP地址。然后我再把IP地址信息回传给浏览器,这样浏览器就可以通过访问这个(网站服务器)IP地址来打开b站了。
在这里插入图片描述
这种分层的协作机制,是不是和域名的层级很相似 。根域名、顶级域名、一级域名和根DNS服务器、顶级域名DNS服务器、Name Server DNS服务器,每一层服务器,只负责记录下一层域名的NDS服务器的信息
在这里插入图片描述
大概的查询机制就是这样。


接下来,我们举例子从头再捋一遍整个过程,让大家清楚的了解更多的细节
比如我住在深圳的某个小区,假如,今天是我有生以来第一次在主机的电脑上,想看看b站,于是我小心翼翼的在我电脑的浏览器里面,输入了www.bilibili.com,然后敲了一下回车。 这时浏览器会先查找,它自己的DNS缓存,如果我之前在电脑上,访问过b站,那里面有可能就有这个域名的记录,那就有相应的网址的IP地址的信息,那就可以直接访问了,但是因为我这里说的是第一次访问,所以它就在缓存里面找不到。接着浏览器会先在本地电脑上,一个叫hosts文件中,查找相应的域名和IP的对应记录,如果没有的话,它就会把查询请求,发送到你电脑网络设置中设置好的NDS服务器上。一般我们的电脑和手机连上网络的时候,这个都是自动设置好的,当然,如果你知道,某个公开的DNS服务器的地址,也可以自己手动,直接在网络设置管理里面进行设置(然后就会由这DNS服务器负责你域名背后的IP地址的查询的工作,而要是自动设置的则会先向路由器发送DNS查询请求->路由器->光猫->运营商DNS服务器)。eg:比较有名的,像谷歌的DNS—8.8.8.8。自动设置的DNS服务器的IP地址,一般都是管理WiFi的路由器的IP地址,eg:像192.168.0.1。
在这里插入图片描述
而路由器收到DNS查询请求之后,它会把它转发到光猫,也就是宽带盒子(也就是光猫再转给运营商DNS服务器)上面设置好(IP地址)的相应的宽带服务商提供的(各自的)DNS服务器上,
在这里插入图片描述
电信、联通、移动,它们都有各自很多这样的DNS服务器,这种DNS服务器,会负责各自区域内的联网设备的DNS请求的查询 ,eg:我家电脑被自动分配的,它可能只负责我家附近几个小区所有的DNS请求的处理,这种DNS服务器,一般被称为Local DNS Server。那么这个Local DNS Server或者你自己手动设置的DNS服务器,就会负责你域名背后的IP地址的查询的工作,当负责我设备的Local DNS Server收到我这台电脑的浏览器发送的域名查询请求,它会先在它自己服务器本地查询,看看有没有已经查询过的记录,如果有别的设备,刚好在不久前,已经通过这台DNS服务器,查询过www.bilibili.com这个域名,该服务器上是会有缓存的,有的话直接返回相应的IP地址到我电脑的浏览器上,如果它在服务器里面的缓存中找了一圈,并没有发现www.bilibili.com网址的信息,那么这个Local DNS Server会向Root DNS Server,也就是根NDS服务器发送查询请求—咦,可能有人会问,为什么宽带运营商的DNS服务器会知道根NDS服务器的IP地址呢?因为根DNS服务器,在全球只有13台,而且基本是固定不变的,所以在所有的DNS服务器当中,它们的信息都是内置的接着的过程就是,按照我之前给大家介绍过的,分层查询机制进行查询 。先向根DNS服务器查询,获取负责com顶级域名的DNS服务器的地址,然后负责帮你查询的DNS服务器(Local DNS Server)接着会向负责com顶级域名的DNS服务器查询负责bilibili.com这个一级域名的DNS服务器的信息,查询到之后,再向负责bilibili.com域名的DNS服务器,也就是Name Server。查询www.bilibili.com这个二级域名(指向)的服务器的IP地址信息,查到之后,就返回给电脑上的浏览器,这样,浏览器就能访问这个IP地址来打开网站了。
在这里插入图片描述
其实除了根DNS服务器,是固定的13台,每一层查询回来的服务器信息数量,一般都不止一台,而Local DNS Server,也会向查询回来的,每一台服务器都发送查询请求,那哪台返回的信息快,就用哪台返回的信息,
在这里插入图片描述这样就是一个比较完整的流程了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值