一、原理
DNS即DOMAIN NAME SYSTEM ,域名系统,主要要做的是将人们便于使用的域名映射到人们不便于记忆的IP地址。他可以完成域名到IP地址的翻译,主机别名,邮件服务器别名和负载均衡的工作。DNS是一个分布式层级式的系统,它分为根域名服务器,顶级域名服务器,权威域名服务器3层。一般由ISP提供的本地域名服务器来代理用户主机来进行查询。
DNS协议是一个查询/回复的协议,查询和回复的数据格式相同。当一个应用需要把域名解析为一个IP地址时,就调用解析程序,称为DNS的一个客户,把待查询的域名已UDP数据报的方式发给本地域名服务器。本地域名服务器查询缓存,如果存在则把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
若本地域名服务器不能回答该请求(无缓存),则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求(迭代)。依次向根域名服务器(返回顶级域名服务器IP地址),顶级域名服务器(返回权威域名服务器IP地址),权威域名服务器(返回目的主机的IP地址)发出查询,并将权威域名服务器返回的IP地址放在回答报文中返回给主机。应用程序获得主机IP地址后即可进行通信。
因此主机到本地域名服务器是递归查询,本地域名服务器的查询是迭代查询。
域名服务器的资源记录分为4种,A(ip-主机名),NS(域-域名解析服务器域名),CNAME(域名别名-真实域名),MX(邮件服务器)
二、举例
假设我们访问的是baidu.com. 首先当我们在浏览器输入www.baidu.com的时候,他先去访问本地缓存,在本地缓存发现有相应的资源,就直接返回,如果没有就去.根域找相应的资源。 但是.根域只知道.com域服务器的IP,根据IP 访问。com。 .com服务器找到baidu.com的ip,然后访问到baidu.com的服务器地址,根据要访问的端口确定运行的服务,假如是apache服务,我们进入apache的http.conf找到配置资源的路径读取资源返回到本地缓存进行缓存,然后在返回给客户,下次直接访问本地缓存