计算机网络自顶向下 :应用层(DNS,POP)

来源:互联网 发布:软件著作权转让合同 编辑:程序博客网 时间:2024/05/22 05:03

DNS是:

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

DNS服务器通常是运行BIND软件的Linux机器。
DNS协议运行在UDP之上使用53端口。

DNS提供的服务:

DNS除了进行主机到IP地址的转换外,还提供了一些重要的服务如下:
1. 主机别名:一个主机可以拥有多个主机名,其中一个规范主机名,DNS提供将主机别名映射到其主机名及其相关地址。
2. 邮件服务器别名:电子邮件程序也可以调DNS寻找邮件别名获得规范主机。邮件服务器可以与web服务器使用相同的主机名。
3. 负载分配:繁忙的站点被多余到多台服务器上,由于这多余的web服务器,一个IP地址集合因此与同一个规范主机名相联系。DNS数据库中存储着这些IP地址集合。当用户对映射到其地址集合的名子发一个请求;该服务器用IP集合进行响应,因为客户总是对IP在最前的服务器发送HTTP请求,所以DNS主就在这些多余的web服务器上循环分配了负载。
不考虑缓存及其它,本地服务器在请求一个站点时是一个逐层次交互的过程。

DNS的层次结构

DNS有两种设计一种是简单的集中式的设计和分布式设计,集中式设计有很多问题如单点故障、通信容量、维护等。因此DNS选择了分布式的设计。

根DNS服务器: 因特网上一共有13个根服务器,这13个服务器是冗余的,以提供安全性和可靠性。

顶级域服务器: 顶级域(DNS)服务器。这些服务器负责顶级域名如com、org、net、edu和gov,以及所有国家的顶级域名如uk、fr、ca和jp。Verisign Global Registry Services公司维护com顶级域的TLD服务器;Educause公司维护edu顶级域的TLD服务器。

权威DNS服务器: 在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。一个组织机构能够选择实现它自己的权威DNS服务器以保存这些记录;另一种方法是,该组织能够支付费用,让这些记录存储在某个服务提供商的一个权威DNS服务器中。多数大学和大公司实现和维护它们自己基本和辅助(备份)的权威DNS服务器。

DNS的两种查询过程:

DNS提供了两种查询过程:
递归查询:在该模式下DNS服务器接收客户请求,必须使用一个准确的查询结果回复客户机,如果DNS服务器没有存储DNS值,那么该服务器会询问其它服务器,并将返回一个查询结果给客户机。
送代查询:DNS服务器会向客户机提供其他能够解释查询请求的DNS服务器,当客户机发送查询时DNS并不直接回复查询结果,而是告诉客户机,另一台DNS服务器的地址,客户机再向这台DNS服务器提交请求,依次循环直接返回结果。

其中递归查询是标准的DNS查询方式。

递归查询:
这里写图片描述

迭代查询:
这里写图片描述

在计算机网络这本书中迭代查询中的DNS查询是全权交给局部DNS服务器来做的。很明显这个方式取决于当地的ISP。

DNS报文和记录

在DNS的报文和记录这里我有一部分是参照的RFC1034。

在计算机网络中给我们介绍了一个最简单的资源记录,什么是资源记录(Rs),Rs提供了主机名到IP地址的映射。每一个DNS回答报文包含了一条或多条资源记录。

资源记录是一个四元组组成的:

(Type Name Value TTL)

其中Type,它是编码的16位值,该值规定在这个资源记录中的资源的类型。类型指抽象的资源。若Type=A,则Name是主机名,Value是该主机对应的IP地址。因此一条类型为A的资源记录提供了标准的主机名到IP名的映射。若Type=NS,则Name是一个域,Value它提供了如何获取到该IP地址的主机名如果Type=CNAME,则Value是别名为Name的主机名对应的规范主机名。如果Type=MX,则Value是别名为Name邮件服务器的规范主机名。

CNAME和MX提供了前文说的主机别名和邮件服务器别名服务。

DNS报文格式:

DNS只有查询和回答报文。根据前文知道它们拥有相同的格式如下:

这里写图片描述

前12个字节是首部区域:

标识符是一个16比特的数,用于标识该查询。

标志 :

QR .. OPCODE AA TC RD RA ZERO RECODE
1……..4………… 1….1…1…. 1…..3……. 4

QR: 查询/应答OPCODE: 定义查询与应答类型。 0标识标准查询 1 标识反向查询 2 标识请求权威服务器AA: 授权应答标志, 仅应答报文使用。1表示域名服务器为权威服务器TC:截断标志 仅当DNS报文使用UDP服务时使用。因为UDP数据有长度限制,所以过长的DNS会被截断RD: 请求递归传递,仅有请求报文使用 1为请求递归,此项为标准查询。RA:允许递归标识,由应答报文使用, 1标识支持递归。Zero: 这三位未使用,必须为0Recode:4位返回码,表示应答状态,常用值为0(无错误)和3(域名不存在)

在首部中的其他八个字节用来标识首部后的四类数据区域出现的数量。

问题区域用来标识正在查询的信息。

回答区域标识这对最初的请求的名字的资源记录。

权威(授权)区域包含其他权威服务器的记录。

附加区域包含其他有帮助的记录。

wireshark

简单的DNS请求报文:

这里写图片描述

简单的DNS回答报文:

这里写图片描述

DNS请求报文:

这里写图片描述

稍微复杂一点的DNS回答报文:

这里写图片描述

在这里DNS的回答报文就回答了一个TYPE为CNAME的别名类型的资源记录。

阅读全文
0 0