计算机网络——应用层-域名解析服务DNS

计算机网络系列博文——目录

DNS域名解析协议

因特网主机标识

  1. 主机名 hostname
  2. IP地址 IP adress

域名系统(Domain Name System,DNS)

主要提供主机名到IP地址转换的服务
包括

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行Berkely Internet Name Domain(BIND)软件的UNIX机器

DNS协议基于UDP
端口:53
参见 [RFC 1034],[RFC 1035]

DNS服务

  1. 解析主机名为IP地址
  2. 主机别名(host aliasing) 主机可拥有一个 规范主机名 和若干主机别名。DNS提供通过主机别名获得规范主机名及主机IP的服务
  3. 邮件服务器别名 MX记录技术允许一个机构使用相同(但不同类型)的主机名。即该机构的web服务器可以和该机构的邮件服务器同名。
  4. 负载分配 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主要类型

  1. Type = A Name 为主机名,Value 是该主机名对应的IP地址。 A类RR提供规范主机名到IP地址的映射
  2. Type = NS Name 为域,Value为知晓如何获得该域中主机IP地址的权威DNS服务器的主机名。NS类RR提供沿查询链路由DNS的信息
  3. Type = CNAME Name 为主机别名,Value 为规范主机名。CNAME类RR提供别名到规范主机名的映射
  4. 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

  1. 标识符字段 16bit 标识一次查询,一个请求/响应对中有相同的标识符。
  2. 标志字段 若干标志。 查询/回答标志位 指出报文为查询报文亦或回答报文;权威标志位 指示相应服务器是否为所查询主机名的权威服务器; 递归可用标志位 指示该DNS服务器是否支持递归查询;希望递归标志位 指示客户是否希望在服务器没有记录时执行递归查询;
  3. 问题数字段
  4. 回答RR数字段
  5. 权威RR数字段
  6. 附加RR数字段

问题区域
正在进行的查询信息

  1. 名字字段 所查询的主机名
  2. 类型字段 指示所查询的主机名类型 是否为邮件服务器地址(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请求,将请求的源伪造为待攻击的主机,精心设计请求报文使得回答报文的大小大于请求报文的大小,从而起到放大攻击流量的作用。

你可能感兴趣的:(计算机网络——应用层-域名解析服务DNS)