1.DNS
DNS 是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。
- 域名解析过程:
-
- 当某个应用进程需要将主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,将待解析的域名放在DNS请求报文中,以UDP数据报方式发给本地域名服务器。本地域名服务器在查找域名后,将对应的IP地址放在回答的报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
- 域名结构:
-
- 域名:任何一个链接在因特网上的主机或路由器,都拥有一个唯一的层次结构名字,该名字为域名。
- 域:名字空间中的一个可被管理的划分,可以继续划分为子域。
- 设计原则:域名的结构由若干个分量组成,各分量之间用点隔开,如:….三级域名.二级域名.顶级域名
-
- 每一级域名都由英文字母和数字组成(不超过63个字符,不区分大小写字母),除连字符外不能使用其他标点符号。
- 类别最低的域名写在最左边,级别最高的顶级域名写在最右边
- 完成的域名不超过255个字符。
- 域名的层次结构如图所示
2.DNS的报文格式
DNS定义了一个用于查询和响应的报文格式。这个报文由12字节长的首部和4个长度可变的字段组成
- 标识字段:由客户程序设置并由服务器返回结果。客户程序通过他来确定响应与查询是否匹配。
- 标志字段:16bit的标志字段被划分为若干子段,如图所示
-
- QR:0表示查询报文,1表示响应报文
- opcode:0标准查询,1反向查询,2服务器状态请求。
- AA:表示“授权回答”,该名字服务器是授权于该域的。
- TC:表示“可截断的”,使用UDP时,它表示当应答的总长度超过512字节时, 只返回前512个字节。
- RD:表示“期望递归”。这个表示告诉名字服务器必须处理这个查询,也称为一个递归查询。
- RA:表示“可用递归”。如果名字服务器支持递归查询,则在相应中将该比特设置为1。
- zero:3bit为0
- rcode:返回码字段。0为没有差错,3名字差错。
- 问题部分
-
- 问题部分中每个问题的格式如图所示,通常只有一个问题:
- 查询名是要查找的名字,它是一个或多个标识符的序列。
- 每个问题有一个查询类型,而每个相应也有一个类型。大约有20个不同的类型只,其中有一部分已经过时,最常用的查询类型是A类型,表示期望获得查询名的IP地址。
- DNS报文最后三个字段:回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR的相同格式。如图所示:
-
- 域名是记录中资源数据对应的名字
- 类型说明RR的类型码
- 生存时间是客户程序保留该资源记录的秒数
为了减少Internet上的DNS的通信量,所有的名字服务器均使用高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。