一、关于DNS
1、什么是DNS
DNS(Domain Name Service)域名解析服务,就是将域名和IP之间作相应的转换;TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序,IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变化的,不便于计算机处理,而IP地址对于用户来说不方便记忆,但域名便于用户使用;总结一点就是IP地址是面向主机的,而域名则是面向用户
域名到IP地址的解析过程:
【1】当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求包文中,以UDP用户数据报方式发给本地域名服务器
【2】本地域名服务器在查找域名后,把对应的IP地址放在回答包文中返回;应用程序获得目的主机的IP地址后即可进行通信
【3】若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS的另一个客户,并向其他域名服务器发出查询请求
主机向本地域名服务器的查询一般都是采用 递归查询(recursive query):如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求包文,替该主机继续查询;因此,递归查询得到的结果要么是查询到的IP地址,要么就是无法查询得到报错
本地域名服务器向根域名服务器的查询通常是采用 迭代查询(iterative query):当根域名服务器收到本地域名发出的迭代查询请求包文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个域名服务器查询;然后让本地域名服务器进行后续的查询(不会代替查询);根域名服务器通常是把自己知道的顶级域名服务器告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询;顶级域名服务器也会要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个权限域名服务器查询;本地域名服务器就是以这样的方式进行迭代查询最后把结果返回给发起查询的主机
域名的层次结构
由于因特网的用户数量多,所以因特网在命名时采用的是层次树状结构的命名方法;任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名;【域】是名字空间中一个可被管理的划分;从语法上讲,每一个域名都是由标号(label)序列组成,而各标号之间用点【.】隔开,标号序列总长度不能超过255个字符;每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名
一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区
需要注意的是:
1)每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
2)每一级域名服务器都知道下级域名服务器的IP地址
3)为了容灾, 每一级至少设置两个或以上的域名服务器
域名的分级
域名可以划分为各个子域,子域还可以继续划分为子域的子域;如下图
比如:mail.cctv.com.
. ##根域名(因特网上有13个根域名服务器
)
com ##顶级域名
cctv ##二级域名
mail ##三级域名
由此可见级别最低的域名写在左边,级别最高的域名写在右边
顶级域名分为三大类:
【1】国家顶级域名(nTLD):国家和某些地区的域名;如“.cn”表示中国、“.us”表示美国、“.uk”表示英国
【2】通用顶级域名(gTLD): 常见的有“.com” (公司)、“.net" (网络服务机构)、“.org”(非营利性组织)和“.gov" (国家或政府部门)等
【3】基础结构域名:这种顶级域名只有一个即arpa,用于反向域名解析,因此又称反向域名;反向域名解析与通常的正向域名解析相反,提供IP地址到域名的对应;反向域名格式如:X.X.X.in-addr.arpa;很多网络服务提供商要求访问的IP地址具有反向域名解析的结果,否则不提供服务
2、DNS服务中的名词解释
服务器端
bind ##DNS服务安装包
named ##DNS服务名称
/etc/named.conf ##DNS服务主配置文件
/var/named ##DNS数据目录
53 ##DNS服务默认使用的端口号
客户端
/etc/resolv.conf ##DNS指向文件
host '域名' ##地址解析命令
dig '域名' ##地址详细信息解析命令
##dig命令是逐级解析;比如在对www.baidu.com进行解析时,解析步骤是先去baidu.com中查找,查不到时去.com中再查找,这里还查不到时就回去.根域名解析服务器中查找
A记录 ##IP地址叫做域名的Address记录
SOA ##授权起始主机(根域名服务器)
CNAME ##别名记录,可以将多个记录映射到同一台主机上