Hosts详解(含域名、DNS)

# Hosts文件位置

  • win10、win7系统在C:\Windows\System32\drivers\etc
  • winxp、win2000系统在C:\Windows\System32\Drivers\Etc
  • win98系统在C:\Windows
  • 或者可以使用系统自带的搜索工具找到hosts文件。

# Hosts是什么

  它其实就是一个纯文本文件,用来记录 IP 和 Hostname(主机名)的映射关系。使用普通的文本编辑器即可打开。笔者建议编辑修改时保持一个较好的内容格式。

# Hosts工作原理

  Hosts文件是根据 TCP/IPforWindows 的标准来工作的,其实际上是遵循的的Window系统的约定,在进行DNS请求之前,Windows先检查自己的Hosts文件中的配置是否有相应的映射关系,如果有则使用映射关系查出IP地址并返回,否则再向已知的DNS提出解析。这样一来,如果Host给出了映射关系,将不再触发DNS。这其实也是DNS域名解析的第一个步骤,后文会介绍

# Hosts应用场景

1. 加快域名解析
  我们在 hosts文件中配置好域名与IP的映射后,计算机在执行地址访问时可以不在网络上的DNS服务器上查找,而直接使用本地的配置。
2. 方便局域网用户
  这也许才是最常用的场景之一。
  在很多企业的局域网中,一般都会有服务提供给员工,而且一般会维护好几个应用服务,有的可能有DNS但没有做配置,有的直接没有。这种情况下,相比于员工直接输入难记的服务器IP地址,在Hosts文件提前配置好映射使用时输入域名,更能体现服务应用作用,和方便记忆。
3. 去广告 和 屏蔽网站
  这种应用场景也很深。但并不是谁都会用,特别是广大的普通网民。
  去广告与屏蔽网站的原理就是应用了hosts文件配置,故意将广告域名配给一个错误的IP,达到访问目标错误的目的。如,去爱奇艺的广告办法如下

// 去奇艺广告
127.0.0.1 afp.qiyi.com
127.0.0.1 focusbaiduafp.allyes.com

# Hosts危险区

  hosts可以屏蔽网站,也可以导入错误网站,甚至是有病毒的网站。因此,要特别注意防止恶意网站篡改hosts,将其设为只读或者管理员权限。

拓展与巩固


# 域名

域名(Domain Name),又称“网域”,是由一串用 "." 分割的字符串组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。

  由于IP地址具有不便记忆不能显示地址组织的名称和性质等缺点,于是前辈们设计出了网域名称系统(Domain Name System),也就是耳熟能详的 DNS ,来将域名和IP地址相互映射。它的角色就像是一名“翻译官”

  这样,用户只需输入语义强便于记忆的域名,通过DNS解析成相应的IP地址后,便能访问到处在Internet上的服务机器。当然对于计算机组来说(如www.baidu.com对应的背后千千万万服务器)则还是用了别的技术如 Nginx 负载均衡等

# DNS域名解析

  先看结论再理解:如果有缓存或hosts则查询匹配返回,否则,走DNS域名解析过程。


Hosts详解(含域名、DNS)_第1张图片
先走虚线缓存,没有再执行DNS解析
过程如下:

  为了更好理解我们举例:假设用户在浏览器输入了www.baidu.com

  1. 浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,检查操作系统DNS解析器缓存,如果有直接返回IP完成解析。这两个缓存,可以理解为 本地解析器缓存

  一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录).如,在cmd窗口中输入 ipconfig /displaydns可以找到如下信息。你也可以手动清理dns缓存ipconfig /flushdns

Hosts详解(含域名、DNS)_第2张图片
的DNS域名解析缓存

  1. 如果没有,检查系统中hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。

  2. 如果 本地DNS解析器缓存hosts文件 中均没有找到对应的IP,则正式进入请求域名服务DNS解析域名阶段。

    Hosts详解(含域名、DNS)_第3张图片
    DNS解析图例

  3. 用户电脑发起一个DNS请求(请问http://www.baidu.com的域名是什么?)给本地域名服务器 本地DNS本地DNS一般是由你的ISP(网络服务商) 如电信、移动等根据DHCP动态主机配置协议 自动分配的。当然也可以手动分配

    Hosts详解(含域名、DNS)_第4张图片

  4. 本地DNS 收到询问后,查询缓存在本地的IP/域名的映射表,如果找到www.baidu.com,则解析成功返回,否则,转发问题给根域名服务器Root,他是最高层次的,全球只有13套。它不用于域名解析,但会给出回复并指出下一步应该找顶级域名.com服务器。

  5. 本地DNS 收到回复后向.com管理者询问请问http://www.baidu.com的IP地址是什么?

  6. 顶级域名服务器 负责管理二级域名如baidu.com,qq.com...,它收到请求后,也不会直接进行域名解析,而是给出回复并指出下一步应该找负责http://www.baidu.com区域的权威域名服务器 baidu。

  7. 收到 顶级域名服务器的 的回复后,本地DNS 继续转发询问给 http://www.baidu.com权威域名服务器,因为该服务器就是负责该区域机器的服务,换句话说,http://www.baidu.com这个域名就是由它所产生的,因此,它知道该域名所对应的IP地址是什么,查询出后返回给 本地DNS

  8. 本地DNS 收到IP地址后,将次IP返回给客户端,客户端和目标IP建立连接,并缓存此次域名解析的结果。

你可能感兴趣的:(Hosts详解(含域名、DNS))