DNS的诞生(默认端口号 53)
当我们在浏览器中输入一个域名访问某个网站时,这个域名最终会被解析为一个IP地址,我们的浏览器实际是在和这个IP地址进行通信。
负责将域名解析到IP地址的协议为DNS(Domain Name System,域名解析系统)。
网络中每个节点都有自己唯一的IP地址,通过IP地址可以实现节点之间的相互访问,但是如果和所有的节点进行通信都使用IP地址的方式,人们很难记住这么多IP地址,为此提出了DNS,将难以记忆的IP地址映射为字符类型的地址。
Internet的前身ARPAnet时就已经存在主机名称和IP地址的对应关系,只是当时主机数目很少,只需要一个HOSTS.txt文件就可以维护对应关系,HOSTS.txt由NIC(network information center)维护,改动自己主机名的使用者通过电子邮件将自身改动发送给NIC,NIC定期更新HOSTS.txt,这一切在主机数目很少时都没有什么问题。但当ARPAnet使用TCP/IP协议之后,网络用户数量出现了激增,手动维护HOSTS.txt似乎变得困难起来:
- 名称冲突:NIC虽然可以保证管理的主机名称一致性,但很难保证主机不会随机修改名称和别人正在使用的一致。
- 一致性:随着网络规模扩大,用户的HOSTS.txt很难保持一致性,很可能主机的HOSTS.txt文件还未更新,其余主机的名称已经变动了数次。
于是接替者DNS由此诞生。
域名系统组成
域名:主机的字符标识方式。大部分情况下,我们访问网站时在浏览器内输入的URL就是该网站的域名。
域名解析服务器(DNS Server):负责维护域名与IP地址对应关系的数据库,并对解析者的请求进行响应。
域名系统是一个分布式的结构,每个服务器上的数据库只保存了部分域名与IP的对应关系。
域名的表示方法
域名的表示方法为:主机名.次顶级域名.顶级域名.根域,根域为“.”,一般最后的根域不表示。
DNS查询方式
DNS是一个分布式系统,绝大多数的DNS服务器端的数据库不会拥有所有的域名记录,当客户端向一个DNS服务器端查询域名但该DNS服务器端上却没有该域名的记录时,此时会有两种继续查询的方式:
- 递归查询:由DNS服务器向其他DNS服务器进行查询,将最终查询结果返回给DNS客户端
- 迭代查询:DNS服务器告知DNS客户端其他DNS服务器地址,客户端自行向其他DNS服务器进行查询。
迭代查询不同于递归查询,DNS服务器1返回的DNS响应里的内容是另外一个DNS服务器地址。