http协议:二 (6)域名里的那些门道

域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;

DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管家”;

DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存;

使用 DNS 可以实现基于域名的负载均衡,既可以在内网,也可以在外网。一个域名可以对应多个ip地址,不一定是一个,所以域名能够实现负载均衡。

 

浏览器缓存->操作系统dnscache【包含hosts】 ->->非权威域名服务器->根域名服务器->顶级域名服务器->二级域名服务器->权威域名服务器。

win10会在启动时加载hosts中的条目到操作系统dns缓存
win10还会监视hosts文件的变化,并动态更新,如新加或删除条目,都会更新操作系统dns缓存
如果尝试解析一个未知的域名,win10并不会访问hosts,观察依据是hosts的访问时间不会更新。
其中非权威域名服务器还包括LDNS(企业内网DNS服务器),三大营运商DNS,谷歌公开的DNS,微软公开的DNS等。
另外DNS请求有两种方式:递归查询和迭代查询,这方面大家可以网上了解一下。LDNS往后面查询一般是递归查询,因为公司内网是有防火墙的,全部请求通过LDNS来递归查询然后把结果给内网用户

客户端向本地域名服务器获取,是递归查询
本地域名服务器向根域名服务器获取,可以是递归也可是迭代
递归就是你交给别人,让别人查到,在返回给你
迭代就是你找别人要,他叫你去别的地方找

 

问题

在浏览器地址栏里随便输入一个不存在的域名,比如就叫“www. 不存在.com”,试着解释一下它的 DNS 解析过程。

回复: 

    1、检查浏览器缓存是否存在解析"www.不存在.com"域名的ip

    2、检查操作系统dnscache是否存在解析"www.不存在.com"域名的ip
    3、如果没有找到继续查找本地hosts文件内是否有对应的固定记录
    4、如果hosts中还是没有那就根据本地网卡被分配的 dns server ip 来进行解析,dns server ip 一般是“非官方”的ip,比如谷歌的“8.8.8.8”,本身它也会对查找的域名解析结果进行缓存,如果它没有缓存或者缓存失效,则先去顶级域名服务器“com”去查找“不存在.com”的域名服务器ip,结果发现不存在,于是直接返回告诉浏览器域名解析错误,当然这两次查找过程是基于udp协议

 

终极dns的解析是有谁实现的或者谁规定的:

回复:

域名由专门的域名注册机构管理,终极的是ICANN。
IP地址的分配也由ICANN管理,当然有浪费,美国是互联网的发明国,所以占用ip地址最多。
ip地址查找由专门的协议,比如arp。

 

拿着域名去浏览器(操作系统)缓存中查找,这里有些疑问,浏览器中缓存在哪里?过期时间大概多久?过期机制是什么?

chrome chrome://net-internals/#dns 查看和清空缓存

windows查看系统缓存:
 ipconfig /displaydns 显示已有缓存
 ipconfig /displaydns > C:\Users\SDWQ\Desktop\1.txt 导出到再查看。
 ipconfig /flushdns 强制更新缓存

 

大企业为什么要建设8.8.8.8这样的DNS服务器,他们有什么好处?是否是搜集更多用户流量,为自己的产品运营做大数据分析?

回复:

的确有很多公司会搭建公共dns,给广大网民免费使用,出发点有很多,不能妄自猜测,但确实可以收集到数据。

 


基于DNS的负载均衡中,比如一个域名同时返回两个IP,哪个在前哪个在后有关系吗?不同客户端是不是都会选择排在前面的那个IP来访问呢?
回复:

dns解析域名可以内部定制策略,设置权重按优先级返回ip地址,但除非特殊说明,这些ip地址都是平等的。客户端也可以任意选择,双方都有各自的主动权。

dns缓存都有有效期,过期了就会更新

域名负载均衡是由dns服务器来执行,基于域名,而Nginx是在http协议上负载均衡,更灵活。

posted @ 2021-08-11 10:44  血染星辰  阅读(125)  评论(0)    收藏  举报