计算机网络系列博文——目录
DNS域名解析协议
因特网主机标识
- 主机名 hostname
- IP地址 IP adress
域名系统(Domain Name System,DNS)
主要提供主机名到IP地址转换的服务
包括
- 一个由分层的DNS服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
DNS服务器通常是运行Berkely Internet Name Domain(BIND)软件的UNIX机器
DNS协议基于UDP
端口:53
参见 [RFC 1034],[RFC 1035]
DNS服务
- 解析主机名为IP地址
- 主机别名(host aliasing) 主机可拥有一个 规范主机名 和若干主机别名。DNS提供通过主机别名获得规范主机名及主机IP的服务
- 邮件服务器别名 MX记录技术允许一个机构使用相同(但不同类型)的主机名。即该机构的web服务器可以和该机构的邮件服务器同名。
- 负载分配 DNS可用于在冗余的服务器间进行负载分配。一个规范主机名可以映射到一个地址集合,当用户请求解析该规范主机名时,DNS返回相应IP地址集合,但是在每次响应中轮换IP地址次序,以将负载分配到不同服务器(进程通常默认使用IP地址集合中的第一个地址)
DNS工作机制
分布式层次数据库
DNS使用了大量服务器,它们以层次方式组织,分布在全世界范围内。
DNS大致分三类
根DNS服务器
因特网上共13个根DNS服务器,标号[A-M]
每台逻辑上的根服务器实际上是一个冗余的服务器网络。
顶级域DNS服务器
负责顶级域名
负责com, org, net,edu等顶级域名和cn, uk, fr等国家顶级域名
参见 IANA TLD
权威DNS服务器
因特网上具有公共可访问主机的机构必须提供公共可访问的DNS记录。
机构可以选择实现自己的权威DNS服务器以管理该机构的公共可访问DNS记录,也可以选择由DNS服务提供商管理该机构的公共可访问DNS记录(付服务提供商钱,存服务提供商的权威DNS服务器里)
实践中,权威DNS服务器可能有多层。
本地DNS服务器
严格地说,不属于DNS层次结构
功能上非必须,提供代理,缓存作用
每个ISP(大学,院系,公司,小区)都拥有一台本地DNS服务器。本地DNS服务器通常在地理上临近用户主机。
当主机发出DNS请求时,请求被发往本地DNS服务器,本地DBS服务器起代理作用,它将请求转发到DNS服务器层次结构中。
递归查询 A请求B,B请求C,C返回给B,B返回给A
迭代查询 A请求B,B返回给A,A请求C,C返回给A
实践中,从主机到本地DNS的查询是递归的,从本地DNS到DNS层次结构的查询是迭代的。
DNS缓存
- 减少延时,减少DNS流量
- 在一个请求链中,当某DNS服务器接收到一个回答时,它能将该回答缓存在本地存储器中。
- 对一个请求,它首先查看本地缓存,若无,再请求相应DNS服务器。
- DNS在一定时间后(常为两天)会丢弃缓存的信息。
DNS记录
资源记录(Resource Record,RR) DNS服务器存储RR。每个DNS回答报文包含若干条RR。
资源记录 RR = (Name,Value,Type,TTL)
TTL 记录生存时间,即记录应当从缓存中移除的时间。
RR主要类型
- Type = A Name 为主机名,Value 是该主机名对应的IP地址。 A类RR提供规范主机名到IP地址的映射
- Type = NS Name 为域,Value为知晓如何获得该域中主机IP地址的权威DNS服务器的主机名。NS类RR提供沿查询链路由DNS的信息
- Type = CNAME Name 为主机别名,Value 为规范主机名。CNAME类RR提供别名到规范主机名的映射
- Type = MX Name为邮件服务器别名,Value为规范主机名。MX类RR提供邮件服务器别名到规范主机名的映射。MX记录允许一个机构的邮件服务器和其他服务器使用相同的别名。
对某给定主机名h,h的权威DNS服务器s1,DNS请求链中s1的上游DNS服务器s0,必有:
s1中有一条主机名h的A类记录;
s0中有一条NS记录,该记录对应包含主机名h的域;
s0中有一条A类记录,该记录提供NS记录中Value值所对应的IP地址;
DNS报文
DNS有且仅有查询,回答两种报文,且两者遵照相同的格式,格式如下:
首部区域
12byte
- 标识符字段 16bit 标识一次查询,一个请求/响应对中有相同的标识符。
- 标志字段 若干标志。 查询/回答标志位 指出报文为查询报文亦或回答报文;权威标志位 指示相应服务器是否为所查询主机名的权威服务器; 递归可用标志位 指示该DNS服务器是否支持递归查询;希望递归标志位 指示客户是否希望在服务器没有记录时执行递归查询;
- 问题数字段
- 回答RR数字段
- 权威RR数字段
- 附加RR数字段
问题区域
正在进行的查询信息
- 名字字段 所查询的主机名
- 类型字段 指示所查询的主机名类型 是否为邮件服务器地址(MX记录或A记录)
回答区域
所查询主机名相关的资源记录
若干条RR
权威区域
其他权威服务器的记录
附加区域
其他有帮助的记录
例如所查询的邮件服务器的规范主机名。
向DNS数据库中插入记录
DNS注册登记机构
商业实体,验证待注册域名的唯一性,将待注册域名输入DNS数据库,并为注册服务收取少量费用。
因特网名字和地址分配机构(Internet Corporation for Assigned Names and Numbers,ICANN)
ICANN授权注册登记机构。
http://www.internic.net
向某注册登记机构注册域名h时,需要提供域名h的基本和辅助权威DNS服务器的名字和IP地址。
对所提供的每一个权威DNS服务器的名字和地址,该注册登记机构确保将相应的NS类记录,A类记录输入对应的顶级域DNS服务器。
注册者还需确保域名h的Web服务器A类记录,邮件服务器MX类记录被输入上述权威DNS服务器中。
其它资料
https://jocent.me/2017/06/18/dns-protocol-principle.html
DNS安全性
DDos
利用僵尸网络向根域名服务器发送大量ICMP ping报文。
向顶级域名服务器发送大量DNS请求。
中间人攻击
截获来自主机的请求并向主机发送伪造的回答
DNS毒害攻击
向DNS服务器发送伪造的回答,诱使服务器在它的缓存中接收伪造的记录
DNS反射攻击
利用DNS服务攻击其它主机。
构造大量DNS请求,将请求的源伪造为待攻击的主机,精心设计请求报文使得回答报文的大小大于请求报文的大小,从而起到放大攻击流量的作用。