对于DNS(Domain Name System)大家肯定不陌生,不就是用来将一个网站的域名转换为对应的IP吗。当我们发现可以上QQ但不能浏览网页时,我们会想到可能是域名服务器挂掉了;当我们用别人提供的hosts文件浏览到一个“不存在”的网页时,我们会了解到域名解析系统的脆弱。然而关于DNS还有一大堆故事值得我们去倾听,去思考。
DNS 源起
要想访问网络上的一台计算机,我们必须要知道它的IP地址,但是这些地址(比如243.185.187.39)只是一串数字,没有规律,因此我们很难记住。并且如果一台计算机变更IP后,它必须通知所有的人。
显然,直接使用IP地址是一个愚蠢的方案。于是人们想出了一个替代的方法,即为每一台计算机起一个名字,然后建立计算机名字到地址的一个映射关系。我们访问计算机的名字,剩下的名字到地址的转换过程则由计算机自动完成。
为了解决上面的问题,1983年Paul Mockapetris提出了域名系统(DNS, Domain Name System),当我们需要访问一个域名(其实就是前面说的计算机的名字)时,应用程序会向DNS服务器发起一个DNS请求,DNS服务器返回该域名对应的IP地址。
这样访问一个域名的过程可以简化为下图
DNS域名空间
首先我们需要制定一套命名规则,防止域名出现重复。DNS关于域名的规则和我们生活中的快递系统类似,使用层次的地址结构。快递系统中要给某人邮寄物品,地址可能是这样:中国、安徽省、铜陵市、狮子山区、翠湖四路1335号 XXX。而一个域名看起来则是这样的groups.google.com(为什么不是com.google.groups?我猜可能和老外写地址的习惯有关)。
以寄快递为例,这里的DNS就是一个地址簿,域名是人的姓名,IP则就是居住地址。
域名、DNS、IP地址之间的关系简单来说就是:用户在浏览器中输入域名,请求就被发送给DNS服务器,服务器找到与该域名对应的IP地址,地址信息反馈到浏览器,最后浏览器成功访问到网址。
网友评论