计算机网络之DNS详解
基础知识简单介绍DNS用于将容易记忆的域名转换为IP地址。DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”。DNS一般情况下使用UDP协议。域名系统2.域名服务器DNS为什么不采用单点的集中式的设计方式,而是使用分
基础知识
简单介绍
DNS用于将容易记忆的域名转换为IP地址。
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”。
DNS一般情况下使用UDP协议。
DNS协议运行在UDP协议之上,使用端口号53。
域名系统
在域名中,越靠右的位置表示其层级越高。
毕竟域名是外国人发明,所以思维和中国人相反,比如说一个城市地点的时候,外国喜欢从小到大的方式顺序说起(如 XX 街道 XX 区 XX 市 XX 省),而中国则喜欢从大到小的顺序(如 XX 省 XX 市 XX 区 XX 街道)。
实际上域名最后还有一个点,比如 www.server.com.,这个最后的一个点代表根域名。
也就是,. 根域是在最顶层,它的下一层就是 .com 顶级域,再下面是 server.com。
所以域名的层级关系类似一个树状结构:
- 根 DNS 服务器(.)
- 顶级域 DNS 服务器(.com)
- 权威 DNS 服务器(server.com)
- 顶级域 DNS 服务器(.com)
域名服务器
DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器。
DNS为什么不采用单点的集中式的设计方式,而是使用分布式集群的工作方式?
DNS的一种简单的设计模式就是在因特网上只使用一个DNS服务器,该服务器包含所有的映射,在这种集中式的设计中,客户机直接将所有查询请求发往单一的DNS服务器,同时该DNS服务器直接对所有查询客户机做出响应,尽管这种设计方式非常诱人,但他不适用当前的互联网,因为当今的因特网有着数量巨大并且在持续增长的主机,这种集中式设计会有
- 单点故障(嗝屁一个,全球着急)
- 通信容量(上亿台主机发送的查询DNS报文请求,包括但不限于所有的HTTP请求,电子邮件报文服务器,TCP长连接服务)
- 远距离的时间延迟(澳大利亚到纽约的举例)
- 维护开销大(因为所有的主机名-ip映射都要在一个服务站点更新)
等问题
域名解析过程
本地dns服务器是指 你电脑ip协议中填进去的那个dns查询地址服务器
如果你路由器也填写了 那应该是根据你电脑的设置优先去找
- 缓存中查找是否有记录
- 1 )浏览器缓存
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在); - 2)系统缓存
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统DNS缓存是否有该域名对应IP; - 3)系统Hosts文件查询(一般是用户或者代理软件设置)
- 4) 路由器缓存
当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查 - 5) ISP(互联网服务提供商)DNS缓存
当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
- 查找本地DNS服务器:如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
如果电脑、路由器、上级路由器 都设置了nds服务器查询地址,则以最接近用户端的路由器设置DNS服务器为主,也就是如果你电脑设置了 那就以你电脑设置的为准
以上都是递归查询
- 查找根服务器:如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。
PS根服务器只有13台 受UDP的限制。
-
根据根服务器返回的信息查询低一级别的域名服务器。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
-
如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
-
保存结果至缓存
本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。
如何强制都不走缓存 包括上级路由器和isp的 强制走本地服务器的呢?
递归查询和迭代查询
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询
- 递归查询:DNS服务器接受客户机请求,必须使用一个准确的查询结果返回给客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果叫交给客户机(本地DNS服务器)。
- 迭代查询:当客户机发送查询请求时,DNS服务器并不直接返回查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,一次循环直到返回查询的结果为止。“整个过程就和我们日常生活中找人问路的过程类似,只指路不带路。”
主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。 因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
本地域名服务器向根域名服务器的查询的迭代查询。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机
比较零散的
泛域名解析

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)