域名系统(Domain Name System,缩写:DNS)是
互联网的一项服务。它作为将
域名和
IP地址相互
映射的一个
分布式数据库,能够使人更方便地访问
互联网。DNS使用TCP和
UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
简介
DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。DNS系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。目前绝大多数的防火墙和网络都会开放DNS服务,DNS数据包不会被拦截,因此可以基于DNS协议建立隐蔽信道,从而顺利穿过防火墙,在客户端和服务器之间传输数据。
DNS允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。Internet Engineering Task Force(IETF)标准组对
HTTP和DNS进行了标准化定义。原始的DNS标准是在1987年发布的,因为用户在使用网络浏览器的同时需要使用其他应用程序,例如将
电子邮件地址转换为IP地址。
报文格式
DNS 定义了两种报文 ,一种为查询报文;另一种是对查询报文的响应,称为响应报文。无论是查询报文还是响应报文,都有12个字节的头和查询问题。
报文细节分析
(1)标识:占两个字节,同一个问题的查询和响应标识必须相同。
(2)标志:占两个字节QR:这一位是查询和响应报文的标志,0表示查询报文,1表示响应报文;Opcode:操作码占4bit,值为0表示标准查询,值为1表示反向查询,值为2表示服务器状态请求。标准查询是给出主机名查询其对应的IP;反向查询是给出
IP查询其对应的主机名;AA:占1bit,表示该域名服务器是否是授权给该域的,1表示授权,0表示未授权;TC:占1bit,表示是否可截断。当使用UDP时,若此位为1,表示当响应报文的总长度超过512字节时,只返回前512个字节,是可截断的;RD:占1bit,表示是否期望递归。为1时表示查询方式是递归查询;如果该位为0,且被请求的
域名服务器没有一个授权回答,则查询方式为迭代查询;RA:占1bit,表示是否
可用递归。如果域名服务器支持递归查询,则在响应中将该比特设置为1,大多数名字服务器都提供递归查询,除
了某些
根服务器;随后的3bit字段必须为0;Rcode:结果代码占4bit,值为0表明没有差错,值为1表明报
文格式出错,值为2表明服务器查询失败,值为3表明名字出错。
(3)问题数、回答资源记录数、授权资源记录数、附加资源记录数分别描述各自的记录数目。对于查询报文,
问题数通常是1,而其他三项则均为0。响应报文随问题不同而变化。
(4)查询问题:由查询名、查询类型、查询类三部分组成。查询名是要查找的名字,它是一个或多个标识符的
序列,它的存储方法是先存储每个子域的字符数,再存储相应的字符,依次存储,最后填写一个0字节;查询类型
占两个字节,常用的有(A,1)代表IP地址、(NS,2)代表名字服务器、(PTR,12)代表
指针记录;查询类占两个字节,通常为(IN,1),指互联网地址。
(5)资源记录:只出现在响应报文中,它们有一种统一的格式。
DNS报文解析
下面分析一个正向解析的查询和响应报文:即已知主机名www.safepro.com.cn查询其对应的IP值。查
询报文(用嗅探器抓的包)。
响应报文中的回答资源记录列出了查询结果,即www.safepro.com.cn对应的IP为211.154.170.7;授权资源记录列出了该主机名所属域由ns1.cendata.net和ns2.cendata.net这两个
域名服务器来进行管理;附加资源记录列出了这两个域名服务器所对应的IP地址,也就说执行主机名www.safepro.com.cn查询的可以是这两个域名服务器之一。
工作原理
DNS是一种可以将域名和IP地址相互映射的层次结构的
分布式数据库系统,主要包括如下3个组成部分:
(1)域名空间(domain name space)和资源记录(resource record);
(3)解析器(resolver)。
DNS系统采用递归查询请求的方式来响应用户的查询,其一般过程如下:
(1)客户端首先向首选域名服务器查询。
(2)首选域名服务器检查本地资源记录,如果存在则作权威回答,如果不存在,则检查本地缓存,如果有记录则直接返回结果。若本地资源记录和缓存记录都不存在,则向
根域名服务器查询。
(3)根域名服务器返回相应顶级域的权威域名服务器的地址,首选域名服务器继续向该顶级权威域名服务器查询。
(4)顶级权威
域名服务器返回次级域的权威域名服务器地址,首选域名服务器如此迭代查询,直到得到对查询域名的权威回答,保存在本地缓存中并返回给客户端,完成此次查询。目前绝大多数的网络都会开放DNS服务,DNS数据包不会被
防火墙等网络安全防护设备拦截,因此,可以基于DNS协议建立隐蔽通道,从而顺利穿过防火墙,在客户端和服务器之间隐蔽地传输数据。
5G时代下的发展
未来将会有数十亿个物联网设备具有
5G连接性,DNS将为这些设备的发现和寻址创造全新的需求。IETF也已经开始进行一些关键的协议开发,比如以DNS-SD为代表的“DNS Service Discovery”。DNS—SD允许所有设备在对等体中相互组播,来快速发现本地设备和服务。在智能住宅设置中,例如,这将允许灯控开关可以自动控制所有灯具,而不需要任何人机配置或管理步骤。因此,与传统的DNS方法相比,DNS—SD将在未来更有效地扩展,这需要集中查询
服务器和大量手动配置功能的实现。