我们平时在访问网站时,不使用 IP 地址,而是网站域名。但是抓包发现:交互报文是以 IP 地址进行的。那么 IP 地址是从哪来的呢?这是因为 DNS 把网站域名自动转换为 IP 地址。
DNS 出现
TCP/IP 是基于 IP 地址进行通信的,但是 IP 地址不太好记。于是出现了另一种方便记忆的标识符,那就是主机名。为计算机配置主机名,在进行网络通信时,直接使用主机名,而不用输入一大串的 IP 地址。同时,系统通过一个叫 hosts 的文件,实现主机名转换 IP 地址的功能。***hosts 文件包括主机名和 IP 地址的对应关系。***当需要通过主机名访问主机时,它就会查看本地的 hosts 文件,从文件中找到相对应的 IP 地址,然后进行报文发送。如果在 hosts 文件中没找到相关信息,则主机访问失败。
hosts 文件是主机的本地文件,优点是查找响应速度快。它主要用来存储一些本地网络的主机名和 IP 地址的对应信息。这样,主机在以主机名访问本地网络主机时,通过 hosts 文件可以迅速获得相应的 IP 地址。
每台主机的 hosts 文件都需要单独手工更新。随着网络规模的不断扩大、接入计算机的数量不断增加,维护难度越来越大,每台主机同步更新,几乎是一件不可能完成的任务。
为了解决 hosts 文件维护困难的问题,出现了 DNS 域名系统,一个可以解决主机名和 IP 地址互相转换的系统。无论网络规模变得多么庞大,都能在一个小范围内通过 DNS 进行管理。
DNS 介绍
DNS ,全称 Domain Name System
。采用 client/server
模式,DNS client
发出查询请求,DNS server
响应请求。DNS client
通过查询 DNS server
获得主机的 IP 地址,进而完成后续的 TCP/IP 通信过程。
当 Windows 系统用户使用 nslookup hostname/domainname
命令时,DNS 会自动查找注册了主机名和 IP 地址的数据库,并返回对应的 IP 地址。
DNS 域名
先了解什么是域名,才能理解 DNS 。**域名是为了识别主机名或机构的一种分层的名称。因为单独的一台域名服务器是不可能知道所有域名信息,所以域名系统是一个分布式数据库系统,域名(主机名)到 IP 地址的解析可以由若干个域名服务器共同完成。每一个站点维护自己的信息数据库,并运行一个服务器程序供互联网上的客户端查询。DNS 提供了客户端与服务器的通信协议,也提供了服务器之间交换信息的协议。由于是分布式系统,即使单个服务器出现故障,也不会导致整个系统失效,消除了单点故障。
DNS 域名组成
DNS 域的本质是一种管理范围的划分,最大的域是根域,向下可以划分为顶级域、二级域、三级域、四级域等。相对应的域名是根域名、顶级域名、二级域名、三级域名等。不同等级的域名使用点号分隔,级别最低的域名写在最左边,而级别最高的域名写在最右边。
举个栗子:网站域名 www.tsinghua.edu.cn 中,从右到左开始,cn
是顶级域名,代表中国,edu
是二级域名,代表教育机构,tsinghua
是三级域名,表示清华大学,www
则表示三级域名中的主机,并提供了 web 服务。