DNS协议
需求背景
DNS产生过程
由于记IP地址去访问网站,考验太大!
历史
网络出现的早期是使用IP地址通讯的,那时就几台主机通讯。但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windows也继承保留了这个文件)。这个文件中记录着主机名称和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了。
但是后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出现了在文件服务器上集中存放hosts文件,以供下载使用。互联网规模进一步扩大,这种方式也不堪重负,而且把所有地址解析记录形成的文件都同步到所有的客户机似乎也不是一个好办法。这时DNS系统出现了,随着解析规模的继续扩大,DNS系统也在不断的演化,直到现今的多层架构体系。
定义
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议使用UDP/TCP 53端口号,UDP负责域名解析请求报文,TCP负责多台DNS服务器之间区域传送,当域名解析请求单个报文字节数过大时,如超过512字节,可能会采用TCP 53进行通信,因此在防火墙定义策略时,可同时开启53的TCP/UDP协议。
DNS 的分布式数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中路径,这棵逆向树称为域名空间(domain name space)。如图所示树的最大深度不得超过127 层,树中每个节点都有一个可以长达63 个字符的文本标号。
DNS的命名规范:由26个英文字母、数字以及-组成,最多63字节长度。
解析过程
首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
- 检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
- 若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
- 若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
- 若没有找到,则返回错误信息。
分类
主DNS服务器:就是一台存储着原始资料的DNS服务器。
从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也称辅助DNS服务器。
缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
根提示服务器:根据系统中的13组根服务器的IP地址寻求域名解析(需要当前DNS服务器连接外网)
转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。
记录类型
以下是一些常见的DNS记录类型及域名示例,展示了DNS 中的记录域名:
记录类型 | 域名 | 功能描述 |
---|---|---|
A | example.com | 指向IPv4地址,常用的域名到IP映射记录。 |
CNAME | www.example.com | 用于别名,指向另一个域名,常用于负载均衡等。 |
MX | mail.example.com | 指向邮件服务器,用于邮件发送和接收。 |
TXT | example.com | 可包含文本信息,常用于验证域名所有权等。 |
NS | ns1.example.com | 指定负责该域名的权威域名服务器。 |
PTR | 1.2.3.4.in-addr.arpa | 相当于反向DNS解析,IP到域名映射。 |
SRV | _service._proto.example.com | 用于定位服务,如LDAP、SIP等。 |
以上是不同类型的DNS记录及域名示例,每种记录类型都有其具体的功能和用途。
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论