当我们在浏览器的地址栏中输入了一个域名~比如http://github.com的时候,在我们的计算机中以及整个网络中都会发生什么事情呢?
从我们输入域名开始直到我们获得要访问的ip地址的过程,我们称之为域名解析过程。这个过程也是很多公司面试的时候经常会问的问题,那么我们今天依然通过邓哥的例子来为大家解释域名解析的全过程~
有一天渡一教育邓哥想约绿茶妹妹出来玩~打通电话之后,绿茶妹妹说:“那你明天来接我吧~”。
这里邓哥想去绿茶妹妹家,就像是我们想访问某个网站,比如百度。
我们说的“绿茶妹妹家”就相当于是域名,而绿茶妹妹的实际住址就是所谓的IP地址。就像我们生活中交流一样,都说谁谁家,不会直接说具体的家庭住址,因为具体的家庭住址不好记也不形象,所以我们生活中一般都会说“我去张三家玩了~”,没有人会说“我去XX大街XX号201玩了~”。
在互联网中我们通常说的也是域名,我们通常会说你去http://www.baidu.com搜一下,没人会说你去“119.75.217.109”搜一下~
但是邓哥最近脑残片总忘吃,所以自己忘了绿茶妹妹住在哪了。。
当我们想去谁谁家的时候,脑海中一般会首先想起这个人住在哪里~这就相当于是我们浏览器的缓存,当我们输入一个URL的时候,浏览器会先从本地的缓存中看,有没有这个域名对应。
邓哥发现自己忘了绿茶妹妹住在哪之后很是着急,然后赶忙翻开自己的通讯录,看看有没有在通讯录上记着绿茶妹妹的住址。
当要访问的URL没有命中本地的浏览器缓存时,就要查看计算机本地的HOST指向,有没有相关的记录。计算机本地的HOST是一个文件,记录着域名和IP的映射关系。
让邓哥崩溃的是,自己的通讯录中也没有记下来绿茶妹妹的住址。于是渡一教育邓哥只能求助他们村号称大聪明的“老王”。
当浏览器缓存和计算机HOST都没有命中的时候,就要求助于本地的DNS解析服务器了。本地的DNS解析服务器我们称之为LDNS。这些服务器距离我们比较近,可能在每个城市都会有。
但是老王也不是什么都知道呀~这个问题老王也不知道怎么办,但是碍于面子,老王不能说自己不会~所以老王继续求助别人,老王找到了本村的派出所,想向民警打听一下这个人。毕竟警察叔叔肯定会了解当地的人的~
每个城市的DNS也不可能记住全世界所有的网址,所以LDNS也有可能找不到相应的域名对应的IP。
当本地的DNS解析找不到的时候,就会求助更权威的机构,也就是gTLD Server。gTLD Server 全称是Generic top-level domain Server,通用顶级域Server。
我们常见的域名后缀有.com的,有.net的,有.org的等等很多。每个顶级域名都有一个记录着所有注册过相应域名的记录。比如.com域名的服务器就会记录着全部注册过的.com的域名。
村里的民警听到这个名之后,感觉这个名字很熟悉,好像是隔壁村的村花,所以民警和老王说,你去隔壁村问问吧,好像是隔壁村的。然后老王颠颠的跑到了隔壁村。
每个域名后缀的顶级域名服务器也不可能只有一台,毕竟一台机器无法承载这么大的访问量,肯定是有多台的。
但是LDNS只会访问其中的一台,当被访问的这台gTLD Server收到了这个域名之后,会告诉LDNS你应该去询问哪台机器,然后LDNS再去相应的机器去询问这个域名对应的IP。
老王到了隔壁村了之后,一打听就知道了绿茶妹妹的住址。然后老王就可以回去告诉邓哥啦,同时自己也记住啦。老王告诉了邓哥绿茶妹妹住在哪之后,邓哥也重复了几遍,让自己记住这个地址,免得以后约绿茶妹妹出来玩的时候不知道对方的住址,这样很尴尬~
当LDNS从gTLD获取到了域名对应的IP之后就会把这个信息返回给发出请求的计算机,然后LDNS会在本地进行缓存,相应的浏览器也会对这个域名和IP进行缓存,以保证下次再有访问这个域名时可以很快的响应。
当我们在浏览器的地址栏中输入一个URL之后都发生了什么,这个问题在很多公司面试的时候都有问到,希望通过这篇文章可以让大家比较详细的了解到DNS解析的全过程。
其实网络的原理都很简单,只不过是把一些很普通的步骤封装了起来然后起了一个很高大上的名字~但是大家不要被这些陌生的名字所吓倒。
这些特有的名词背后的原理,几乎都是我们每个人都可以想得到的。当我们逐步的了解这个网络的世界之后,我们会惊叹,原来我们这个看似极为复杂的网络世界原来也是很清晰很容易理解的。这就是计算机科学的魅力~!