名词解释
DNS(domain name server)域名解析服务器
URL统一资源标识符
TTL time-to-live 生存时间
LDNS 本地DNS服务器
gTLD全球DNS服务器
背景:
在互联网的世界中是用ip来标识一台服务器的,因此在很早的时候大家都是通过ip来访问其他服务器上的资源的。倘若让你在浏览器中输入115.239.210.27这样的URL你肯定不能接受。所以把通过ip访问替换成通过名字(域名)访问是很有必要的,因此把用户输入的名字解析成ip的服务也就应运而生了。
解析过程:
1.当用户在浏览器输入一个域名的时候,最先浏览器会从自己中的缓存中寻找指定的结果。如果找到了域名对应的的ip则域名解析完成。这个缓存空间大小是有限的,另外每一条结果都有过期时间,这个过期时间通过TTL属性来指定。这个过期时间过长过短都不好。过长的话,如果服务器的ip发生了变化则会发生访问错误的服务器的问题,如果过短的话,每次访问都要重新解析一次域名。
2.如果在浏览器中的缓存没有命中,则会在系统的缓存中来查找是这个域名否有对应的DNS解析结果,如果有则域名解析完成。这个缓存通常是以文件的方式来保存,比如windows下是通过C:\windwos\system32\driver\etc\hosts文件来设置的,linux中则是/etc/named.confg文件。通过编辑这个文件我们能把域名映射到任意一个ip中。
如果前面连个流程都没有找到指定域名的解析结果,那么下面就要进行真正的域名解析了。为什么叫真正的域名解析呢?因为前面的都是在本机中完成的,下面的流程就要依赖外部服务器来查找指定的域名的解析结果。
3.系统缓存中未命中之后会把这个域名提交到指定LDNS服务器中,这个服务器就是你计算机设定(或自动获取)的DNS服务器。如果你在学校的网络中,这个DNS服务器一定在你学校里,如果你是在小区的网络,这个DNS服务器通常是运营商提供的。总之这个服务器在物理位置上离你比较近。这个域名解析服务器缓存了大量的域名的DNS解析结果。由于它的性能较好,物理上的距离又比较近,它通常会在很短的时间内返回指定域名的解析结果。大约80%的DNS解析需求在这一步就满足了,所以LDNS完成了大部分的DNS解析任务。
4.如果指定的域名在LDNS服务器的缓存中仍然没有命中,LDNS会向ROOT Server发送请求。
5.ROOT Server会返回给LDNS一个指定域名对应的主域名服务器gTL的地址D,gTLD是顶级域名服务器,如com,cn,org等,全球就十几台。
6.LDNS接下来会向这个gTLD服务器发送域名解析请求。
7.接受请求的gTLD会返回给LDNS一个该域名对应的Name Server服务器地址,这个Name Server通常就是你注册的域名服务器。例如你在某个域名服务提供商申请的域名,这个域名就由他们的服务器来解析。
8.NAME Server会把指定域名的ip和一个TTL返回给LDNS。
9.LDNS会把这个结果缓存下来,缓存的过期时间由TTL来决定。
10.然后LDNS再把这个结果返回给用户,DNS解析结束。
从上面来看如果LDNS中没有查找到指定域名的对应ip,则需要很长的时间来获取解析结果。但是一旦解析结果被缓存了,下次再请求同样的域名就不会这么慢了。