DNS-知识简介-学习记录
简介
域名系统(Domain Name System,DNS)的主要任务是进行主机名到P地址转换的目录服务。DNS是:①一个由分层的DNS服务器(DNS server)实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。DNS服务器通常是运行BIND(Berkeley Internet Name Domain)软件的UNIX机器。DNS协议运行在UDP之上,使用53号端口。
DNS协议的组成
根DNS服务器
根据DNS查询报文中的内容返回相应顶级DNS服务器的地址。如收到www.baidu.com的域名解析请求,则会根据com返回负责com的顶级域名服务器的IP地址。
而且相应的镜像节点,没有详细资料查询
顶级(Top-Level Domain,TLD)DNS服务器
负责顶级域名如com、net、org,以及所有国家的顶级域名如uk、fr。根据DNS查询报文中的内容返回相应存有DNS记录的权威DNS服务器。如收到www.badiu.com的域名解析请求,则会根据baidu.com返回负责baidu.com的权威DNS服务器的IP地址。
权威DNS服务器
在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。
本地域名服务器
由电信运营商运营的一个用户宽带接入 DNS 服务器,是电信用户接入互联网后访问的第一个 DNS 服务器。负责一个 Local Domain Zone 内所有域名的解析工作,并关联到其他上级服务器。
私有域名服务器
在企业或组织内部部署的私有域名服务器,不需要在互联网上注册。
域名请求过程
- 电脑开机,随即从 DHCP 服务器获得 IP 地址和电信运营商的 Local DNS 服务器(e.g. 8.8.8.8)地址。
- 用户打开浏览器访问 www.cmbc.com.cn,先查浏览器的 DNS 查询记录缓存。
- 如果没有,再通过 Kernel Resolver(内核 DNS 解析器)查本机的 hosts 文件记录。
- 如果没有,则 Kernel Resolver 发出 DNS Query Request 到 Internet 上的 Local DNS 服务器。
- Local DNS 服务器通常对应一个 Domain Zone,如果待查域名并不属于这个 Zone 内,且 Local DNS 服务器对该域名没有缓冲记录(假设后续环节中都没有命中 DNS 记录缓存),那么此时 Local DNS 服务器从根服务器开始进行逐级的递归查询,也有可能通过迭代依次向
.、cn.、com.cn.、cmbc.com.cn.域名服务器发出 Query Requests,并最终返回域名对应的 IP 地址给用户。
*其中有个非常重要的点就是,整个查询过程迭代和递归都是存在的。这张图展示的递归流程,迭代在轮询服务器,去寻找自己最近的服务器来进行寻找结果。
DNS 协议报文格式
- dentification 会话标识(2 字节)
- Flags 标志(2 字节)
- 四大区域长度(8 字节)
- Questions 查询问题区域(不定长)
- Answers 查询应答区域(不定长)
后期会添加详细报文
DNS实现方式
- DNS over UDP/TCP
- DNS over HTTP
DNS安全问题
DNS劫持和DNS缓存污染有什么区别?
DNS劫持和DNS缓存污染都是网络安全问题,但是它们的原理和目的不同。
DNS劫持是指通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。
而DNS缓存污染(DNS cache pollution) ,又称域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器数据包,把域名指往不正确的IP地址。一般来说,在互联网上都有可信赖的网域服务器,但为减低网络上的流量压力,一般的域名服务器都会把从上游的域名服务器获得的解析记录暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的计算机导引往错误的服务器或服务器的网址 。