当你在浏览器输入www.baidu.com时,DNS为你做了什么?
在上网时,如果网络不通或网速很慢时,经常会听到DNS这个词,所以大家都会知道DNS肯定跟网络有关,那DNS究竟是什么?在我们上网时它是如何为我们工作的?一起来看看吧~
一、DNS其实就是个“翻译”IP地址的服务器
DNS 的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。
计算机在网络上进行通讯时只能识别如“202.108.22.5”之类的IP地址,而不能认识域名(www.baidu.com)。
人类是无法记住10个以上IP地址的网址,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。
二、当你在浏览器输入www.baidu.com时,DNS做了什么?
DNS“翻译”的过程又称为DNS解析,它的解析过程并没有我们想象的那么简单,该过程分为10个步骤,前2步是在本机完成的,后面是在DNS服务器完成:
- 你在浏览器输入www.baidu.com,浏览器会先去检查缓存中有没有这个域名对应的IP地址,若有,解析过程就结束,可以去访问网站了。
- 如果你的浏览器是新装的,还没有这个域名的缓存数据,浏览器会去操作系统的缓存中找是否有这个域名。
(操作系统中也有域名解析的过程:在Windows中可以通过C:WindowsSystem32driversetchosts文件来设置,在Linux中可以通过etchosts文件来设置)
如果正巧你的操作系统也是新装的,那么此时你输入www.baidu.com会有以下这8步:
1.在操作系统的缓存中没有该域名时,操作系统会把这个域名发送给一个名叫LDNS的DNS服务器,因为这个DNS服务器通常会在用户所在城市的某个角落,所以取名为本地DNS服务器(local DNS)。
这个专门的DNS服务器性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,所以LDNS主要承担了域名的解析工作。
(查询配置的DNS服务器:Windows环境下通过命令行输入ipconfig,Linux环境下通过cat etcresolv.conf)
百度这个域名到这里就结束了,但如果是其他域名,到这里还没有会怎么办呢?
2.如果LDNS仍然没有命中,就直接到根域名服务器请求解析。
(这个根域名服务器全世界只有13台,这13台服务器是由美国授权的分配机构 ICANN 统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理)。
3.这个时候肯定能找到该域名了(除非没有域名),此时根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址。
gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。
4.本地域名服务器LDNS再向上一步返回的gTLD服务器发送请求
5.接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,Name Server通常就是用户注册的域名服务器
6.LDNS 再向Name Server域名服务器请求IP地址,Name Server域名服务器会查询存储的域名和IP的映射关系表
7.在正常情况下都会得到目标IP地址,返回给LDNS
8.终于找到IP地址后,LDNS会把这个域名和IP地址的对应关系缓存在服务器内,并把结果返回给用户。
三、最后再来说一下,很多人通过修改DNS来提高网速,这种方法真的可行吗?
修改DNS会提速,但不要随意修改。
首先,如果默认自动获取DNS服务器地址,是你采用运营商的本地DNS服务器,这个服务器速度很快,且会解析给你最近的IP地址来访问。
其次,若修改了DNS,可能给你解析的IP地址不是最快的,比如你是电信的用户解析给你一个联通的IP,跨运营商访问速度会比较慢。
当然也有一些通用的DNS服务器采用了智能解析功能,它的工作原理是根据你的源IP解析给你一个最快的访问地址(解决多运营商解析和同一运营商不同地域解析问题,这是另一个话题了,这里按下不表),比如比较火的谷歌DNS:8.8.8.8,阿里的DNS:223.5.5.5,但使用这些DNS提供方可能会收集用户信息,或是嵌入一些广告。
所以建议大家还是用自动获取的吧。