DNS

DNSDomain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库, 能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

DNS协议运行在UDP协议之上,使用端口号53。

RFC 2181对DNS有规范说明。

RFC 2136对DNS的动态更新进行说明。

RFC 2308对DNS查询的反向缓存进行说明。

NDS是分级的。

发起一个网络请求的时候,操作系统首先读取hosts文件。不同的操作系统,此文件的位置不同。

Windows系统的hosts文件位置为:%SystemRoot%\system32\drivers\etc\hosts, 一般来说也就是C:\WINDOWS\system32\drivers\etc\hosts

Windows上的hosts文件的一般格式如下:

# copyright (c) 1993-1999 microsoft corp.
#
# this is a sample hosts file used by microsoft tcp/ip for windows.
#
# this file contains the mappings of ip addresses to host names. each
# entry should be kept on an individual line. the ip address should
# be placed in the first column followed by the corresponding host name.
# the ip address and the host name should be separated by at least one
# space.
#
# additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# for example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
127.0.0.1       localhost

UnixUnix-like系统的hosts文件位置为:/etc/hosts

UnixUnix-like系统的hosts文件的一般格式如下:

127.0.0.1	localhost
127.0.1.1	ubuntu-64-bit
74.125.237.1    dl-ssl.google.com
203.208.46.146  dl.google.com
203.208.46.146  dl-ssl.google.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

在此文件修改后需要重启网卡,使用如下命令:

/etc/rc.d/init.d/network restart

hosts文件其实是一个纯文本文件,它里面包含了IP地址和Host name(主机名)的映射关系。

以#开头的文字都是注释用。

127.0.0.1 localhost这一行就是表示把localhost解析到127.0.0.1这个IP地址上。需要强制解析的域名则按127.0.0.1 localhost这一行的格式添加,一行一个。

发起一个网络请求的时候,操作系统首先读取hosts文件。 如果此文件中配置了主机名(域名)和IP的映射关系,就直接使用此IP地址,如果没有这个配置,就去访问DNS服务器,从DNS服务器得到对应的IP地址。

自己修改hosts文件,目的是跳过DNS服务器。可以起到加快网站域名解析、方便局域网用户、屏蔽网站等作用。

要是对于每个请求,我们都要等待DNS解析后返回IP信息,这样访问网络的效率就会降低, 如果我们事先将IP地址和主机名的映射关系保存在hosts文件中,就能提高解析效率。

在进行DNS请求以前,会先检查自己的hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有才向已知的DNS服务器提出域名解析。 即hosts的请求级别比DNS高。

一般来说,有以下几种情况需要或会改动hosts文件:

  • 加快域名解析
    对于要经常访问的网站,我们可以通过在hosts文件中配置主机名和IP地址的映射关系,这样就不用请求网络上的DNS服务器。
  • 方便局域网用户
    在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务要输入难记的IP地址, 对不少人来说相当麻烦。现在可以分别给这些服务器取个容易记住的名字,然后在hosts文件中建立IP地址映射, 这样以后访问的时候我们输入这个服务器的名字就行了。
  • 屏蔽网站
    现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,有些说不定就是木马或病毒。 对于这些网站我们可以利用hosts文件,把该网站的域名映射到错误的IP或自己计算机的IP,这样就不能访问了。 这样计算机解析域名就解析到本机或错误的IP,达到了屏蔽的目的。 杀毒软件或安全软件(比如360安全卫士、瑞星)等出于保护你的电脑安全的考虑,对某些含有病毒木马的网站域名强行解析到127.0.0.1, 让你的电脑无法访问到这些病毒网站。有些病毒也会通过修改你的hosts文件来让你访问含有病毒木马的网站。 hosts文件对于电脑安全来说是相当重要的一个文件,因此,病毒和杀毒软件双方往往会争相对这个文件的写入权限加以控制, 这也就是为什么我们有时候打开hosts文件会提示拒绝访问的原因。
  • 顺利连接系统
    对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。 那么我们配置好hosts文件,这样输入服务器名就能顺利连接了。
    你的网站尚未上架对外开放访问,而你自己又想通过域名访问,这时就可以先在本地电脑hosts文件作解析。

hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。 某些时候DNS服务器不能访问,导致不能使用名字访问只能通过IP地址访问,此时可以在hosts文件中增加对应IP地址和主机名,就仍然可以使用主机名来访问。