1 简介
域名系统用来方便人们把机器名字转换为IP地址,比如我输入www.baidu.com,这是一个域名,单不是ip地址,要转化成ip地址才能访问此网站。
至于为什么不直接用域名来访问而要用ip地址呢,因为ip地址是固定的32位或128位,便于机器的处理,而域名往往随机性更大。
域名解析为ip是互联网上的许多域名解析服务器完成的。当某个客户进程需要一个域名的ip时,就把带解析的域名放在DNS请求报文中,以UDP方式发给本地域名服务器,本地域名服务器在查找域名后,把对应ip地址放在回答报文中发回。
如果本地域名服务器没有找到对应的ip地址,那它就成为一个临时的客户,以相同方式向其他域名服务器发送请求。
2 互联网的域名结构
mail.cctv.com
com是顶级域名
cctv是二级域名
mail是三级域名
每一级域名不超过63个字符,不区分大小写,总共不超过255个字符。
3 域名服务器
根域名服务器:是最重要的域名服务器,不管哪个本地域名服务器,要对互联网上的任何一个域名进行解析,只要自己无法完成,就会求助于根域名服务器。
根域名服务器是由13套装置组成的13组根域名服务器,只有13个域名,但服务器分布于全球。
一般本地服务器向根域名服务器查询时,根域名服务器不会直接返回IP地址,而是告诉本地服务器该到哪一个顶级域名服务器进行查询。
顶级域名服务器:负责管理所有注册在该顶级域名下的二级域名。
权限域名服务器:负责一个区的域名服务器。
本地域名服务器:主机最先查询的服务器。
为了提高可靠性,域名服务器都会把数据复制到其他几个辅助域名服务器中保存,当主服务器出现故障时,会借助于辅助域名服务器进行DNS查询工作。复制只从主服务器复制到辅助服务器,修改时只修改主服务器,保证了数据的一致性。
3 域名解析过程
递归查询主机向本地域名服务器查询DNS一般采用递归查询,即主机向本地域名服务器询问,如果本地域名服务器不知道,那么它就把自己当做客户,向其他域名服务器继续发送请求。主机最后只会收到查询结果,或者错误报告,不需要自己一个一个的查询。
迭代查询本地域名服务器向根域名服务器进行DNS查询时,一般使用迭代查询。即根域名服务器收到本地域名服务器的请求时,一般不会直接返回IP地址,而是返回下一步应该到哪个顶级服务器进行查询,之后由本地域名服务器向下一个域名服务器进行查询,如此迭代进行。
4 高速缓存的使用
为了提高DNS的效率,减少网络开销,一般主机和域名服务器中都会设置高速缓存,来记录最近查询过的域名或者从何处获得域名映射的记录。即记录此域名对应的IP,或者此域名下一步应该向哪个域名服务器进行查询。如此可以提高DNS的查询效率。
高速缓存需要定时更新来保证缓存的有效性,更新的越快则网络开销越大,更新的越慢则缓存的准确性越低,需要权衡。