前言
DNS是什么?DNS有什么用?怎么解决DNS给我带来的困扰?如果你想知道,那么接着往下看吧!
本文主要介绍关于DNS方面的知识,分别是:
1、DNS是什么?
2、DNS有什么用?
3、怎么解决DNS给我带来的困扰?
介绍开始
前言
DNS是什么?DNS有什么用?怎么解决DNS给我带来的困扰?如果你想知道,那么接着往下看吧!
本文主要介绍关于DNS方面的知识,分别是:
- DNS是什么?
- DNS有什么用?
- 怎么解决DNS给我带来的困扰?
正文
DNS是什么?
百度百科这样说:
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
简单来说,DNS将我们在浏览器的地址栏输入的域名(例如“baidu.com”、“jd.com”)解析为IP地址(例如111.1.22.333),之后我们通过IP地址访问其对应的服务器(当然,这个IP地址我们是看不到的)。
其实DNS(Domain Name System,域名系统)就是因特网上作为域名和IP地址互相映射的一个分布式数据库,使用户更方便地访问互联网,而不用去记住机器直接读取的IP数串。
DNS有什么用?
科技为人们带来了便利,DNS也是如此。
网络出现的早期是使用IP地址通讯的,那时只有几台主机通讯。随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了一个叫做hosts的文件(Linux和Windows也继承并保留了这个文件)。这个文件中记录了主机名称和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了。
简单来说,如果没有DNS,我们想要访问百度,就要记住百度的IP地址,想要访问京东,就要记住京东的IP地址。世界上所有的网站,只要我们想访问,就要记住它们的IP地址,这将是一个非常困难的事情。
有了DNS以后,我们只需要记住京东的官网是www.jd.com(京东的拼音首字母),百度的官网是www.baidu.com(百度的全拼),这样是不是我们记这个网站就方便多了呢?
如何解决DNS给我带来的困扰?
DNS很厉害,可是它有什么弊端呢?
相信不少小伙伴都遇到过这种情况。作为一个程序员,访问类似于GitHub的网站总是避免不了的,可是为什么有时候进得去,有时候进不去?然后,就看到了下面的页面:
心里那叫一个崩溃啊。那么,我们遇到这种情况以后,该怎么解决呢?
要想知道怎么解决,还得先知道出现这种情况的原因
DNS解析的过程
- 在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
- 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器。此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
- 如果要查询的域名不在本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
- 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询。如果未用转发模式,本地DNS就把请求发至13台根DNS。根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(www.baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找www.baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。
- 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析。上一级服务器如果不能解析,或找根DNS或把请求转发至上上级,以此循环。不管是本地DNS服务器用转发还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
stop,现在有问题了,我们可以看到,dns在进行解析时,经历了多次查找缓存,我们知道,为了缓解网络压力(因为类似于github的网站服务器是在国外的),有时的本地缓存并不会实时更新,尤其是我们将DNS服务设置为默认的时候。所以就会出现这样的情况:我们查找到了缓存里的IP,但是实际上服务器的IP已经更换了,但是我们的电脑并只知道,所以就直接向曾经的IP发出了请求,就会导致请求错误
那么看到这里,大家有想法怎么解决这个问题了吗?
该不会有人还在懵*吧!允许我偷偷嘲笑一下你们奥
上面我们提到,我们将dns服务设置为默认时,我们DNS在解析的时候大多数都在查找缓存,那么,第一个解决方法就来了。
修改我们的dns服务
国内许多互联网公司都提供了免费的DNS解析服务,例如:
- DNSPod(腾讯):119.29.29.29
- 百度DNS:180.76.76.76
- 阿里DNS:223.5.5.5 / 223.6.6.6
- 114 DNS:114.114.114.114
- Google DNS:8.8.8.8
IPv4:
- 首选DNS服务器:8.8.8.8
- 备用DNS服务器:8.8.4.4
只需要打开我们的网络设置,将IPv4地址改为手动,然后填写上面的地址即可(由于Windows 11、10以及有线连接和无线连接修改方式有所区别,可以直接百度自己的系统如何修改DNS,这里不再赘述)。
其他解决方法
上面我们还提到,由于github的服务器在国外,为了缓解网络压力,我们的缓存并不会实时更新,那么,我们可以欺骗github的服务器,让它以为我们和github的服务器里的不远,这时候,就需要(!!!建造一个楼梯,跨过山和大海!!!),由于特殊原因,这里并不能过多解释这个解决方法,如果非要了解,可以去百度搜索“翻墙”
一键解决的方法
在此向大家推荐一个免费开源的软件DevSidecar(开发者边车辅助工具),可以通过以下链接下载:
DevSidecar下载
好了,DNS的知识到此结束了,你该不会还没听懂?
那你还不改快联系我???!!!让我亲自教你