在网络故障排查时,很容易忽略掉DNS:因为我们网工一般情况下配置firewall、router、switch、ac等设备时都是配置IP,而不怎么接触域名(firewall除外);但是在排错时往往需要ping域名,而错误(非最优)的域名会将域名指向非最优的服务器,轻则延迟增大,重则完全不能解析域名;
DNS提供域名解析,但是不正确的DNS对网络连通性有很大的影响。
今天在国外网站上下载文件时把电脑的本地DNS修改为了8.8.8.8
然后打开百度就特别卡
ping www.baidu.com
有特别严重的丢包
最初以为是本地哪台PC网卡中病毒了,一直在局域网发arp广播包,导致的广播风暴造成的丢包,最后才想到DNS。
将DNS修改后,DNS服务器对www.baidu.com的域名进行了更优的路径切换,实现了正常的访问百度
知其然,更要知其所以然
8.8.8.8是谷歌提供的免费域名解析服务器IP,114.114.114.114是国内114DNS的公众服务器IP,为国内多个基础电信运营商自用的DNS系统为基础;
DNS其实是一张由各个域名和IP组成的一张一一对应关系表!!!8.8.8.8为谷歌在美国建立的DNS服务器,而114.114.114.114就在国内
一方面,地点的远近往往就代表着网络路径跳数的多少,跳数越多,数据包经过的设备越多,我们知道数据包在光纤上是以光速来传播,所以地球上的地点对数据包在光纤上传输的时间可以忽略,但是设备对数据包处理的时间不能忽略,随着跳数的增加,数据包经过的设备也越多,所以处理时间就增加
另一方面,国外域名服务器解析国内网站对应关系没有国内网站那么重视。
DNS(Domain Name System,域名系统)关键点:
1、因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取IP数串。
2、通过主机名,最终得到该主机名对应的IP地址的过程就叫做域名解析
3、DNS协议运行在UDP协议之上,使用端口为53.
DNS域名解析可以简单概况为:
浏览器缓存 -> 系统 host 缓存 -> 本地域名服务器 LDNS -> Root Server -> 主域名服务器 gTLD DNS -> Name Server (BAIDU-DNS) -> LDNS 缓存并返回 ip 地址
具体过程为:
1、浏览器首先查询浏览器的缓存,因为浏览器会按照一定的频率缓存DNS记录。
2、若浏览器无缓存,那么查询操作系统的HOST文件,查询是否有DNS记录。
3、若还没有命中域名,就请求本地域名服务器(LDNS),该服务器一般都会缓存域名查询结果,因此大部分域名解析都能在这里解析完成。
4、若LDNS还没有命中,就LDNS请求根服务器(Root Server)请求帮助,根服务器返回LDNS一个所查询域名的主域名服务器gTLD DNS,国内顶尖域名服务器,如com\cn\org等,这里访问的是www.baidu.com即返回.com的主域名服务器。
5、LDNS 继续访问 gTLD Server,查找这个域名对应的 Name Server 地址,即网站注册的域名服务器 BAIDU-DNS。
6、LDNS 继续访问 BAIDU-DNS Server,根据映射关系表找到目标 IP 地址,返回给 LDNS。
7、LDNS 拿到 IP 地址后,对这个域名和 IP 地址进行缓存,并将 IP 地址返回给请求客户端,即我们的浏览器,至此,DNS 域名解析过程结束,拿到域名对应的 IP 地址。
原文链接:https://blog.csdn.net/WannaHaha/article/details/107465747