TCP/IP协议族【第19章 域名系统DNS】

1 DNS必要性

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

当然这里dns背景,就是原来采用etc/host那种档案管理,后采用了dns.


2.名字空间

域名空间(domain name space),是一个名字被定义在顶部的倒置树结构。

标号

树上每个节点都有标号,根节点标号为空,所有子标号都不相同。所以保证了域名唯一性。

域名

域名(domain)是一个用点.分割的标号序列。域名总是从节点往上到跟,最后一级一级根是空。


完整域名Fully Qualified Domain Name, FQDN 

以点.结尾的,包含所有标号,并唯一定义了该主机的名字。

不完整域名 PQDN

没有到根。

域名空间的分布

大的原则就是分层部分划分跟授权。

根服务器(root server):授权其他一些服务器,并保持到这些服务器的引用。

主服务器(primary server):存储了它管辖的区的文件,它负责创建,维护,更新这个区的文件。存储在本地文件。

次服务器(secondary server):它的区文件都是从其他服务器同步来,自己不负责维护。

次服务器从主服务器下载信息时,称为区同步。

与主服务器都有所负责区的管理方案。设计目的是为了提供可用性。

3 因特网中DNS

域名空间被划分为三部分:类属域,国家域,反向域。


类属域:常见的有7种,书上列出了允许的14种

国家域:2字符长的。或者叫地理域

反向域:arpa是一个用于地址到名字转换的特殊域

一个IP例如192.168.11.2)所具有的DNS地址就是 2.11.168.192.in-addr.arpaip倒置)。在DNS系统里面,一个反向地址对应一个PTR纪录(对应A纪录),所以反向查询又叫 做指针(PTR)查询。

4.解析

域名到地址映射

解析过程分为递归解析和迭代解析。

高速缓存

DNS的一个基本特性是使用超高速缓存。当一个名字服务器收到有关映射请求时,它将该信息存放在高速缓存中,这样若以后再遇到相同的映射请示,就能直接使用缓存中的结果而无需通过其他服务器查询。应该告诉客户是来自缓存不是来自权威查询。

为了解决过时问题:1.权限服务器把生存时间TTL加入到映射。2.每个映射保持一个TTL计数器,定期的清除那些TTL到期的映射。

DNS服务器功能:

权威 DNS,自身具备解析能力

转发 DNS

缓存 DNS

5. 报文

DNS报文包含请求报文合响应报文,这个报文由12字节长的首部和4个长度可变的字段组成


5.1 首部

首部格式如下:


  • 标识字段:由客户程序设置并由服务器返回结果。客户程序通过他来确定响应与查询是否匹配。
  • 标志字段:16bit的标志字段被划分为若干子段,如图所示
          

        QR:0表示查询报文,1表示响应报文
opcode:0标准查询,1反向查询,2服务器状态请求。
AA:表示“授权回答”,该名字服务器是授权于该域的。
TC:表示“可截断的”,使用UDP时,它表示当应答的总长度超过512字节时, 只返回前512个字节。
RD:表示“期望递归”。这个表示告诉名字服务器必须处理这个查询,也称为一个递归查询。
RA:表示“可用递归”。如果名字服务器支持递归查询,则在相应中将该比特设置为1。
zero:3bit为0
rcode:返回码字段。0为没有差错,3名字差错。

随后4个16位字段说明最后4个变长字段中包含的条目数。对应如下

问题记录数:包含报文的问题部分的查询记录数。

回答记录数:包含响应报文的回答部分回答记录数。在查询报文情况下为0

授权记录数:包含了响应报文的授权部分授权记录数。在查询报文情况下为0

附加记录数:包含了响应报文的附加部分的附加记录数。在查询报文情况下为0

6 记录类型 

6.1问题部分:

  • 问题部分中每个问题的格式如图所示,通常只有一个问题:
  • 查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符的计数值来说明随后标识符的字节长度,每个名字以最后0结束,长度为0的标识符是根标识符,计数字节的值必须是0~63的数。如域名gemini.tuc.noao.edu的表示如下:
  • 每个问题有一个查询类型,而每个相应也有一个类型。大约有20个不同的类型只,其中有一部分已经过时,最常用的查询类型是A类型,表示期望获得查询名的IP地址。

6.2 资源记录

  • DNS报文最后三个字段:回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR的相同格式。如图所示:

  • 域名是记录中资源数据对应的名字。格式与查询名字字段格式相同。(因为使用压缩,所以有偏移的指针)
  • 类型说明RR的类型码。它的值和查询类型的值一样,类通常为1,指互联网数据
  • 生存时间是客户端保留该资源记录的秒数,通常的生存时间为2天
  • 资源数据长度说明资源数据的数量16位字段。该数据格式依赖于类型字段,对于类型1,资源数据是4字节的IP地址。
  • 资源数据:可变长度,包含如下之一:数值,域名,偏移指针,字符串。
  • 7 压缩 请参照书

  • 8 封装

DNS服务器支持TCPUDP两种协议的查询方式,而且端口都是53。而大多数的查询都是UDP查询的,一般需要TCP查询的有两种情况:

1 响应报文长度超过512字节(UDP封装限制),产生了数据截断(TC标志为1)

2.   当主(master)服务器和辅(slave)服务器之间通信,辅服务器要拿到主服务器的zone信息的时候。书上没有说,不确认此处。

9 注册机构

10. 安全

安全太多了,ddos攻击,DNS缓存污染,APR劫持等。

这里可以借鉴HTTPDNS的方式。

其他:相关命令ping,host, nslookup, dig, whois 等等;

下面以访问baidu为例,看下抓包的截图。对比上面报文结构。记录跟附加部分没有。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值