我们都知道,一台电脑要向另一台电脑发送信息,需要知道对方的 IP 地址。可是 IP 地址是一长串的数字,对于程序来说理解起来没有问题,可是对于人类来说,记忆起来就很困难。
为了方便人类能够正常使用,IP 地址需要有一个人类的名字,这就是域名(Domain Name)。
当然,域名不是随便起的,名字是为了区分自己与别人的区别,但同时也是为了显示自己与别人的联系。比如姓氏,就区分了所谓的同宗。再比如按辈分的传承,同辈的人名字中要有一个字相同。
域名也是如此,它的姓就是所谓 TLD(top level domain),顶级域名,所有的域名都是从顶级域向下的。顶级域一般标识着一些基本分类,比如 com
是最常用的,表示商业网站,而 edu
表示教育网站。
顶级域名以下,又可以层层划分下去,可以有二级域名(SLD),三级域名,乃至四级五级域名。但一般常见的也就三级域名了。
另一个有意思的地方是,域名其实是从右向左看的,比如最常见的百度的域名:baidu.com
, 其实应该先看 com,再看 baidu。
域名是可以复用的,如果我们想建一个网站,那么我们需要购买一个域名(这由域名服务商提供),然而我们购买的只是域名的使用权,有效期过了之后,需要重新购买。如果不够买,这个域名就可以给别人去用。
现在我们知道了域名,那么我们又是怎么通过域名获得 IP 地址的呢?
当我们在浏览器上输入 URL 时,浏览器会先从自己的缓存中找找有没有域名和 IP 地址的对应信息,如果没有,这时候浏览器就会呼唤操作系统,操作系统会查看自己的缓存,看看有没有该信息。
如果还是没有,操作系统就会派出 resolver(解决者?),resolver 会先去问根服务器,是否有这样的信息。
顺带一提,根服务器是 DNS 的顶层,一共有 13 台(但有许多复制的,查找时会优先从最近的一台根服务器上找)。
根服务器会返回给 resolver 一级域名(TLD)的信息,resolver 会保存该信息,然后去找 TLD, TLD 会让它去找 authoritative name server,然后 name server 会告诉它 IP 地址是什么。这时候 resolver 就获得了 IP 地址,并把它传给了 OS(操作系统),操作系统会把结果储存下来(下次就不用那么费劲)并传给浏览器,浏览器获得 IP 地址后,就可以进行连接了。
上述的 resolver 有一个正式的称呼,叫作 resolving name server,专门用来查找 IP 地址的。在它的查询过程中,每次都会把结果存起来,这样不会回头去找。
现在,让我们再深入一些细节。resolver 与 根服务器,TLD 这些打交道,那么根服务器它们是怎么知道这些信息的呢?
其实,每一个服务器内部都有 zone file,file 里面有许多 records,一台 name server 所知道的全部域名都会作为 record 存在 file 里。当然,record 也不止有域名和 IP 的对应关系,还包含其他更细的东西,想要查阅可以看一下底部的参考文件。
参考:
What is a domain name?
An Introduction to DNS Terminology, Components, and Concepts
How DNS Works
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!