什么是DNS协议
众所周知在网络通讯中IP地址代表着主机在网络中的地址。如果你想访问一台服务器,那么首先你就需要知道这台服务器的IP地址,也就是目的地址。比如你想访问百度那么你就需要知道百度的IP地址——112.80.248.76 。但是IP地址十分难记,且容易记混,所以在日常生活中,我们往往通过域名,也就是www.baidu.com 来作为百度的地址。 IP地址是面向主机的,而域名是面向用户的。但是通讯是主机间的过程,因此需要将域名转为对应的IP地址,来告诉主机访问的目标是哪里。DNS协议就是一个将主机名和域名转换为IP地址的协议。
域名系统DNS
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。 域名的结构由若干个分量组成,各分量之间用点(’.’)隔开,分别标识不同级别的域名
…三级域名.二级域名.顶级域名
- 每一级的域名都是由英文字母、数字和连接符(-)组成,不超过63个字符,不区分大小写
- 级别最低的域名写在最左边,而级别最高的域名写在最右边
- 完整的域名不超过255个字符
各级域名由其上一级域名管理机构管理
- 顶级域名
- 国家顶级域名:cn(中国)、jp(日本)、us(美国)、uk(英国)…
- 通用顶级域名:最常见的有7个分别是:com(公司企业)、edu(美国教育机构)、net(网络服务机构)、org(非盈利组织)、int(国际组织)、gov(美国政府部门)、mil(美国军事部门)
- 反向域arpa:用于反向域名解析
- 二级域名
在国家顶级域名注册下的二级域名均由该国家自行确定,例如:顶级域名jp的日本,将其教育机构和企业机构的二级域名定为ac和co而不是edu和com。 我国将二级域名划分为两类: 1.类别域名 共7个:ac(科研机构)、com(工、商等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)、org(非盈利性组织) 2.行政区域名: 共34个,适用于我国的各省、自治区、直辖市。如北京是bj、上海是sh 这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。域名和IP地址的对应关系保存在域名服务器中,供所有其他用户查询。由于域名的庞大,显然不能将所有的域名保存在一个域名服务器中,DNS使用分布在各地的域名服务器实现域名到IP地址的转化。
域名服务器
分类 | 作用 |
---|
根域名服务器 | 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助,每个根域名服务器都知道所有顶级域名服务器的域名及其对应的IP地址 | 顶级域名服务器 | 负责管理在该顶级域名服务器下注册的二级域名 | 权限域名服务器 | 负责一个区的域名解析工作,另外权限域名服务器还知道其下级域名服务器的地址 | 本地域名服务器 | 本地域名服务器不属于上面的域名服务器等级结构。当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器,主要起 代理作用 |
域名解析过程
- 递归查询
假设需要查找y.abc.com域名所对应的IP地址:
- 操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果hosts里没有这个域名的映射,则查找本地DNS服务器缓存,是否有这个网址映射关系,如果有,直接返回给主机,完成域名解析。
- 而本地DNS服务器并没有
y.abc.com 域名对应的IP地址,则从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),然后向最近的一台根域名服务器发起请求。如果根域名服务器中有所需要的数据,则返回给本地域名服务器,由本地域名服务器返回给主机。 - 而根域名服务器只有
com ,并没有y.abc.com 域名所对应的IP地址,则向com 的顶级域名服务器查询。如果顶级域名服务器有该地址,则将IP地址返回给根服务器,根服务器返回给本地服务器,本地服务器返回给主机。 - 而顶级域名服务器只有
abc.com ,并没有y.abc.ciom ,则向abc.com 的权限服务器查询。而权限域名服务器有y.abc.com 域名对应的IP地址,以此将IP地址返回给顶级域名服务器,根服务器、本地服务器、最后由本地服务器返回给主机。 - 迭代查询
迭代查询和递归查询都是从根域名服务器一直询问到权限服务器,直到招到为止。只不过当找到对应的IP地址后,不是返回给上一级,而是每次都返回给本地域名服务器,由本地域名服务器不断地进行查询。
- 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
- 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)
- 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
黄大牙牙yyds!
|