DNS协议(Domain Name System)
预备知识:
1、hosts文件:域名和IP的对应关系保存在一个hosts文件。
2、域名层次结构:域名服务主要是基于UDP实现的,服务器的端口号为53。域名是一个标号序列,标号序列由字母(大小写一致),数字和连接符(-)组成。标号序列由“.”分成不同层次的标号。级别最低的域名写在标号序列的左边,级别最高的域名写在标号序列的右边。
3、域名服务器:域名服务器实际上就是装有域名系统的主机。
一、背景:
最初,通过互联网信息中心来管理host文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件。其他计算机也需要定期更新,才能上网。 但是这样太麻烦了,就出现了DNS系统。DNS协议则是用来将域名转换为IP地址,也可以将IP地址转换为相应的域名地址。
二、定义:
DNS是互联网的一项服务。DNS作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
三、原理:
1、一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系。
2、如果新计算机接入网络,将这个信息注册到数据库中。
3、用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。
四、实现过程:域名解析过程
1、递归查询和迭代查询
一、递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
二、迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询
2、域名层次结构包含的域名服务器服务器有:根域名服务器(13个,但是具有镜像服务器),顶级域名服务器,权限域名服务器,本地域名服务器。通过根域名服务器可以查询到保存顶级域名记录的顶级域名服务器,通过顶级域名服务器可以查询到保存二级域名记录的的权限域名服务器,最后权限域名服务器会提供本地域名服务器所查询域名对应的主机的IP地址。
3、DNS协议报文格式
一、报文头部=会话标识(2个字节)+标志(2个字节)+数字字段(8个字节)=12个字节
1、会话标识,2个字节,请求报文和应答报文的会话标识是一致的。
2、标志,2个字节。
QR(1bit) | 查询/响应标志,0为查询,1为响应 |
opcode(4bit) | 0表示标准查询,1表示反向查询,2表示服务器状态请求 |
AA(1bit) | 表示授权回答 |
TC(1bit) | 表示可截断的 |
RD(1bit) | 表示期望递归 |
RA(1bit) | 表示可用递归 |
rcode(4bit) | 表示返回码,0表示没有差错,3表示名字差错,2表示服务器错误(Server Failure) |
3、数量字段(总共8字节):Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四个区域的数目。Questions表示查询问题区域节的数量,Answers表示回答区域的数量,Authoritative namesversers表示授权区域的数量,Additional recoreds表示附加区域的数量。
二、报文正文
两张图片,一张表
注:
1、查询名可以是查询的域名,也可以是IP。
2、Class查询类:通常为1,表明是Internet数据。
3、图-2表示资源记录(RR)区域,回答区域,授权区域和附加区域格式都是一样的。
4、 资源数据,该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据。可以是Address(表明查询报文想要的回应是一个IP地址)或者CNAME(表明查询报文想要的回应是一个规范主机名)等。
图-1
表-1
查询类型 | 助记符 | 说明 |
1 | A | 由域名获得IPv4地址 |
2 | NS | 查询域名服务器 |
5 | CNAME | 查询规范名称 |
6 | SOA | 开始授权 |
11 | WKS | 熟知服务 |
12 | PTR | 把IP地址转换成域名 |
13 | HINFO | 主机信息 |
15 | MX | 邮件交换 |
28 | AAAA | 由域名获得IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
图-2