• Yif
    2019-06-10
    GFW就是使用了这些恶意的DNS

    作者回复: ……

     7
     73
  • 肥low
    2019-06-13
    老师好!

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

    第二个问题:如果dns失效或出错,那就访问不了了呗,我现在有个域名在国外某些国家每天都有不少访问失败的http请求,客户端直接报“Failed host lookup”的错误
    展开

    作者回复: √

     1
     15
  • Wendy
    2019-08-31
    比如你有一个网站要上线,你在域名注册商那里申请了abc.com,那么你的域名A记录就保存在这个域名注册商的DNS服务器上,该DNS服务器称为权威域名服务器。当客户端访问abc.com时,先查找浏览器DNS缓存,没有则查找操作系统DNS缓存,在这一阶段是操作系统dnscache clinet 服务进行DNS缓存的(你在任务管理器里面可以看到一个dns客户端进程,就是这玩意实现缓存的),如果还是没有则查找hosts文件中的域名记录。然后依然没有的话则访问电脑上设置的DNS服务器IP,比如三大营运商的dns服务器或者谷歌的8.8.8.8,此时这一层的DNS服务器称为“野生DNS缓存服务器”,也就是非权威域名服务器。如果还是没有则非权威域名服务器会去查找 根域名服务器-顶级域名服务器-二级域名服务器-权威域名服务器 ,这样客户端就在权威域名服务器上找到了abc.com对应的IP了,这个IP可以是多个,每次客户端请求的时候域名服务器会根据负载均衡算法分配一个IP给你。当DNS缓存失效了,则重新开始新一轮的域名请求。
    总结如下:
    浏览器缓存->操作系统dnscache ->hosts文件->非权威域名服务器->根域名服务器->顶级域名服务器->二级域名服务器->权威域名服务器。
    其中非权威域名服务器还包括LDNS(企业内网DNS服务器),三大营运商DNS,谷歌公开的DNS,微软公开的DNS等。
    另外DNS请求有两种方式:递归查询和迭代查询,这方面大家可以网上了解一下。LDNS往后面查询一般是递归查询,因为公司内网是有防火墙的,全部请求通过LDNS来递归查询然后把结果给内网用户。
    以上为自己理解整理的,若有错误还请大家指正。
    展开

    作者回复: 整理的非常完善非常好,感谢补充!

     1
     13
  • 何用
    2019-06-10
    为何全世界只有 13 组根域名服务器呢?

    作者回复: 细节原因不好解释,简单来说是因为dns协议还有udp协议里包大小的限制,只有512字节,再除以dns记录长度,最多15组,再去掉buffer。

    
     12
  • Chuan
    2019-06-28
    老师好:
    对于DNS解析的过程:浏览器DNS缓存->操作系统缓存->Hosts文件->非权威域名服务器->根域名服务器->顶级域名服务器->权威域名服务器。一直对浏览器/本机如何知道根服务器地址存在疑惑。
    在查阅《计算机网络自顶向下方法》后发现,我们在连接某个ISP时,ISP一般会给我们提供一个IP地址,同时该地址拥有一台或多台DNS服务器地址(通过DHCP)。所以我们在Hosts文件中找不到时,会去查询这个局域网DNS服务器,如果没有查到,它会帮我们去查询根NDS服务器、顶级域名服务器和权威域名服务器,然后返回给本机,同时进行缓存。
    个人认为,如果我们自己配置了非权威DNS服务器,如8.8.8.8,它应该也会帮我们去查询根NDS服务器、顶级域名服务器和权威域名服务器。
    这些远程查询都是基于UDP协议,通常使用53号端口。
    不知道以上理解是否正确?
    展开

    作者回复: 是的,你学习的很仔细。

    一般上网的时候都会有默认dns,都配置好了,所以通常都感觉不到。

    但默认dns有的时候性能不好,所以才会有很多的免费dns。

     1
     9
  • 初音未来
    2019-06-12
    应该是先查找本地hosts文件,在查找缓存吧

    作者回复: 浏览器缓存->操作系统缓存->hosts->dns

    
     8
  • 梦倚栏杆
    2019-06-10
    老师好,我有两个疑问:
    1.终极dns的解析是有谁实现的或者谁规定的:
    比如乔布斯有个苹果域名:www.apple.com,苹果电脑的官网;张三也想为水果苹果申请个域名(www.apple.com)来展示他的苹果;结果我们几乎可以猜测到,他是申请失败的,原因已经有一个苹果存在了,谁来评判这个苹果域名已经被占用了呢?判断逻辑是如何来的,如果两个申请发生在同时呢?
    2. ip地址的分配和身份证号一样吗?有地址在里面吗?
    比如1-45属于美国的网段,或者属于哪个超大公司的网段。如果有,那是不是就以为着预分配,也就意味着部分ip段的浪费,如果没有,那ip地址从一个地方查找另外一个地方怎么找呢?莫非每个初始的线路都需要访问到根DNS
    展开

    作者回复: 域名由专门的域名注册机构管理,终极的是ICANN。
    IP地址的分配也由ICANN管理,当然有浪费,美国是互联网的发明国,所以占用ip地址最多。

    ip地址查找由专门的协议,比如arp。

    这些比较偏底层,离http比较远,可以再找其他资料学习。。

    
     5
  • zjajxzg
    2019-06-10
    1、操作系统缓存→本地hosts文件→非核心dns服务器→根域名服务器地址→顶级域名服务器地址→二级域名服务器地址。。。
    2、无法访问相应的资源

    作者回复: 第一个没说完,第二个问题可以再说的详细一些。

    
     5
  •        鸟人
    2019-06-14
    修改hosts绕过gfw
     2
     3
  • Reco
    2019-06-10
    老师您好,之前碰到过这样一个问题
    域名解析返回两个IP地址,其中一个IP无法正常访问。
    Safari可以自动切换到正常的IP地址继续访问
    Chrome会尝试TCP连接不正常的IP,大约1分多钟之后会连接另一个IP
    最终导致Chrome页面访问速度缓慢。想问下这种问题是属于浏览器问题,还是DNS的问题呢?

    作者回复: 这个应该是浏览器的重连策略问题,dsn解析结果已经出来了,就已经跟dns无关了。

     1
     3
  • -W.LI-
    2019-06-10
    老师好!1.2.3.4改成5.6.7.8后访问不到浏览器会自动重试解析DNS是么?从事的时候使用野生还是专业的有啥策略?重试几次,DNS集群的域名是最终一致还是强一致。
    1.操作系统缓存不存在,host文件不存在,访问DNS服务器,根域名解析成功,二级域名解析失败,重试还是失败。浏览器返回错误。
    2走失败策略,最终还是失败的就错误页面。

    作者回复: dns解析出ip后访问失败就不会再解析了。
    浏览器的重试策略跟具体实现有关,这个我也不清楚。
    dns是最终一致。

    
     2
  • keep it simple
    2019-11-20
    老师,学完这课我有两个疑问:
    1.大企业为什么要建设8.8.8.8这样的DNS服务器,他们有什么好处?是否是搜集更多用户流量,为自己的产品运营做大数据分析?
    2.基于DNS的负载均衡中,比如一个域名同时返回两个IP,哪个在前哪个在后有关系吗?不同客户端是不是都会选择排在前面的那个IP来访问呢?

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

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

    
     1
  • - shadow -
    2019-09-27
    想问问老师,域名的“新玩法”的第一种和第三种在现实环境中真的会使用吗?主要是各级缓存的存在,可能会导致找不到最新的IP,而拿到的是旧的IP呢?

    作者回复: 域名的这些用法在现实中都有用到,但网站服务器变更时不会立即下线,而是等一段时间,当过了dns缓存有效期,新的dns解析结果全网生效时再把旧服务器下线,这时旧服务器已经没有dns解析后的流量了。

     1
     1
  • Even
    2019-08-05
    有个疑问,操作系统的dns缓存存在哪里?内存还是硬盘?为什么有hosts文件还需要操作系统的dns缓存。

    作者回复:
    1.具体不清楚,应该是都有

    2.hosts文件是方便用户自己添加dns解析,与操作系统的目的不同,它不是缓存,而是一个简单的dns解析器。

    
     1
  • missing~~
    2019-07-03
    nginx中的resolve配置dns服务器,这个没太理解,我一直以为是先通过域名解析到ip之后,才找到相应的主机,加载nginx配置。老师,请教一下这个顺序关系

    作者回复: Nginx的里的resolver是给连接后端服务器用的,如果Nginx配置反向代理,用域名的方式指定后端服务器,就必须要用resolver把域名转换成ip地址。

    这个指令不影响客户端,客户端是用本地dns解析出服务器的ip地址,连接网站。

    
     1
  • 小美
    2019-06-12
    1. www.不存在.com -> Hosts 文件 -> 操作系统本地缓存 -> 非权威域名服务器查询其缓存 -> 查询根域名、顶级域名、以及域名服务器,当后面的查询得到结果时,将会写入本地缓存
    2. - 首先,我们的目标的 IP 地址就会因此无法被正确解析到,因此将无法打开页面,即域名屏蔽;如果 DNS 错误得将域名解析道错误的 IP 地址上,即域名污染。

    提问一下,浏览器本身是不是也会对 DNS 缓存以提高访问速度?

    作者回复: 回答的基本正确。

    是的,课程里好像说了,浏览器内部也会缓存dns的。

    
     1
  • 团结屯儿王二狗他二大...
    2019-06-11
    建议把每节的课后作业,在下一节中,把答案给大家说一下。毕竟有说的不对的地方,也算个参考

    作者回复: 我个人觉得还是自己想出答案比较好,统一的“标准答案”反而不利于学习,其实留言里的很多都回答的挺好的。

    
     1
  • pyhhou
    2019-06-11
    思考题:
    1、操作系统首先会在其缓存和 HOST 文件中去找域名对应的 IP 地址,如果本地中没有记录,则会去 DNS 服务器中查找,按照 DNS 服务器的树状结构,层级进行访问查找,对于 “www.” 这样的请求,在第一层,也就是根域名服务器中是找不到下一层的域名服务器的,于是就返回错误给客户端,不继续往下找
    2、看 DNS 服务器的返回错误内容吧,如果是返回错误请求或者内部错误告知的话,客户端这边可以相应地做一些响应异常处理;还有一种情况是 DNS 返回一个不存在的 IP 地址,或者是映射到错误的 IP 地址,个人认为前者的影响会小一些,顶多是请求页面 404 报错,后者的话则会误导用户,比如你输入了 “www.apple.com”,弹出的是 Google 搜索栏

    这里想请教老师几个问题,可能有点超出 HTTP 的范畴,但是还是比较好奇
    1、如果说我们应用域名的一些技术,比如文中说的重定向,负载均衡等等,这些技术都涉及到了域名和 IP 映射关系的改变,那么这些改变只是在其对应的 DNS 代理服务器上改变吗,还是说代理服务器立刻会将该改变内容发送到 DNS 核心服务器去?
    2、另外就是操作系统的缓存和 HOST 文件是不是需要定期的人工检查,排除域名和 IP 对应的改变?
    展开

    作者回复: “野生”dns服务器本质上只是缓存,它不能影响核心dns系统,而是核心dns改变它的值。

    如果你自己搭dns服务器那么就没有这些问题了。

    第二个,hosts文件需要人工维护,可以自己添加,而操作系统缓存是自动管理的。通常都不需要做修改,除非有些特殊域名被“攻击”,只能手动改hosts实现解析。

    
     1
  • 极客时间
    2019-06-11
    这句话不是太明白 “第一种方式,因为域名解析可以返回多个 IP 地址,所以一个域...

    域名不是只能绑定一个ip地址吗?为什么解析的时候会返回多个ip呢? 我是哪里读漏了吗?

    作者回复: 一个域名可以对应多个ip地址,不一定是一个,所以域名能够实现负载均衡。

    
     1
  • 我行我素
    2019-06-10
    老师,想请问下,当域名所对应的ip发生变化的时候,因为本地或者"野生"域名服务器上的ip是怎么发生变化的呢?因为在域名所对应的ip发生变化的时候应该是通知的权威域名服务器吧

    作者回复: 域名解析有个ttl有效期,到期就会去上一级dns重新获取,当然也可以主动刷新。

    
     1
我们在线,来聊聊吧