作者回复: ……
作者回复: √
作者回复: 整理的非常完善非常好,感谢补充!
作者回复: 细节原因不好解释,简单来说是因为dns协议还有udp协议里包大小的限制,只有512字节,再除以dns记录长度,最多15组,再去掉buffer。
作者回复: 是的,你学习的很仔细。
一般上网的时候都会有默认dns,都配置好了,所以通常都感觉不到。
但默认dns有的时候性能不好,所以才会有很多的免费dns。
作者回复: 浏览器缓存->操作系统缓存->hosts->dns
作者回复: 域名由专门的域名注册机构管理,终极的是ICANN。
IP地址的分配也由ICANN管理,当然有浪费,美国是互联网的发明国,所以占用ip地址最多。
ip地址查找由专门的协议,比如arp。
这些比较偏底层,离http比较远,可以再找其他资料学习。。
作者回复: 第一个没说完,第二个问题可以再说的详细一些。
作者回复: 这个应该是浏览器的重连策略问题,dsn解析结果已经出来了,就已经跟dns无关了。
作者回复: dns解析出ip后访问失败就不会再解析了。
浏览器的重试策略跟具体实现有关,这个我也不清楚。
dns是最终一致。
作者回复:
1.的确有很多公司会搭建公共dns,给广大网民免费使用,出发点有很多,不能妄自猜测,但确实可以收集到数据。
2.dns解析域名可以内部定制策略,设置权重按优先级返回ip地址,但除非特殊说明,这些ip地址都是平等的。客户端也可以任意选择,双方都有各自的主动权。
作者回复: 域名的这些用法在现实中都有用到,但网站服务器变更时不会立即下线,而是等一段时间,当过了dns缓存有效期,新的dns解析结果全网生效时再把旧服务器下线,这时旧服务器已经没有dns解析后的流量了。
作者回复:
1.具体不清楚,应该是都有
2.hosts文件是方便用户自己添加dns解析,与操作系统的目的不同,它不是缓存,而是一个简单的dns解析器。
作者回复: Nginx的里的resolver是给连接后端服务器用的,如果Nginx配置反向代理,用域名的方式指定后端服务器,就必须要用resolver把域名转换成ip地址。
这个指令不影响客户端,客户端是用本地dns解析出服务器的ip地址,连接网站。
作者回复: 回答的基本正确。
是的,课程里好像说了,浏览器内部也会缓存dns的。
作者回复: 我个人觉得还是自己想出答案比较好,统一的“标准答案”反而不利于学习,其实留言里的很多都回答的挺好的。
作者回复: “野生”dns服务器本质上只是缓存,它不能影响核心dns系统,而是核心dns改变它的值。
如果你自己搭dns服务器那么就没有这些问题了。
第二个,hosts文件需要人工维护,可以自己添加,而操作系统缓存是自动管理的。通常都不需要做修改,除非有些特殊域名被“攻击”,只能手动改hosts实现解析。
作者回复: 一个域名可以对应多个ip地址,不一定是一个,所以域名能够实现负载均衡。
作者回复: 域名解析有个ttl有效期,到期就会去上一级dns重新获取,当然也可以主动刷新。