Hosts
hosts是一个没有扩展名的系统文件,可以用记事本打开。其作用就是将一些常用的域名与其对应的IP地址建立联系,当用户在浏览器输入一个需要登录的网址时,系统会首先从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,系统会再将在网址提交给DNS域名解析服务器进行IP地址的解析,hosts的请求级别与DNS高。
DNS
DNS也是用来解析IP地址的,只不过hosts文件用户可以*修改,但DNS上的内容用户是无法修改的,只可以选择使用哪个DNS服务。一般默认使用电信服务商,但也可以选择第三方服务,如Google,阿里,百度等。
DNS是个分布式数据库,命名空间采用层次的逻辑树形结构
DNS树每一个节点代表一个域,从节点到树根采用反向书写,并将每一个节点用“.”分隔
如google.com
google为com域的子域,其表示方法为google.com,而www为google域的子域,表示为www.google.com
域名不分区大小写
从顶层到下层分为:根域(全球只有13个根服务器),*域,二级域,子域
DNS服务器
运行DNS服务器程序的计算机,存储DNS数据库信息,DNS服务器会尝试解析客户机的查询请求。
DNS缓存
DNS服务器在解析客户机请求时,如果本地没有改DNS信息,则可以会询问其他DNS服务器,当其他域名服务器返回查询结果时,该DNS服务器会将结果记录在本地的缓存中,成为DNS缓存。
当下一次客户机提交相同请求时,DNS服务器能够直接使用缓存中的DNS信息进行解析。
DNS查询过程
1、在浏览器中输入www.163.com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该*域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(163.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找163.com域服务器,重复上面的动作,进行查询,直至找到www . 163 .com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
本地DNS服务器:家用的路由器自带的。
两种查询方式
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询
递归查询:DNS服务器接受客户机请求,必须使用一个准确的查询结果返回给客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果叫交给客户机(本地DNS服务器)。
迭代查询:当客户机发送查询请求时,DNS服务器并不直接返回查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,一次循环直到返回查询的结果为止。
网址解析顺序
1) 浏览器缓存
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
2) 系统缓存
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
3) 路由器缓存
当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;
4) ISP(互联网服务提供商)DNS缓存
当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
5) 根域名服务器
当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内*域名(如.com)服务器IP告诉本地DNS服务器;
6) *域名服务器
*域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;
7) 主域名服务器
主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
8)保存结果至缓存
本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。
实验
在host文件里加上域名和IP的映射关系
浏览器输入baidu.com或ping baidu.com
因为我电脑本机80端口开启了IIS服务,所以跳转了这个页面