读《TCP/IP详解》第14章:DNS:域名系统

本文介绍了DNS的基本概念及其工作原理。详细解释了DNS的层次结构、查询和响应过程、资源记录等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

域名是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。从应用的角度上看,对DNS的访问是通过一个地址解析器来完成的。在Unix主机中,该解析器主要是通过两个库函数gethostbyname和gethostbyaddr来访问的。

DNS的名字空间和Unix的文件系统相似,也具有层次结构。如图所示:
DNS的层次组织

顶级域名被分为三个部分:

  1. arpa是一个用于地址到名字转换的特殊域
  2. 7个3字符长度的普通域(组织域)
  3. 所有2字符长的域均是基于ISO3116中定义的国家代码,称做国家域或地理域

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

DNS查询和应答报文格式如下:
DNS查询和应答报文
该报文由12字节长的首部和4个长度可变的字段组成。该报文的说明如下:

16字节标志字估被划分成若干字段,由客户端设置并由服务器返回结果。如下图所示:
DNSs标志字段
- QR:0表示查询报文,1表示响应报文
- opcode:通常为0(标准查询),其他值为1(反向查询)和2(服务器状态请求) - AA:表示授村回答
- TC:表示“可截断的”。使用UDP时,它表示应答的总长度超过512字节,只返回前512个字节
- RD:表示期望递归,能在一个查询中设置,并在响应中返回,告诉服务器必须处理这个查询 - RA:表示可用递归,如果名字服务器支持递归查询,则在响应中设置该字段。
- 随后3位必须为0
- rcode:通常的值为0(没有差错)和3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

随后4个16位字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他3项均为0。对于应答报文,回答数至少是1,剩下的两项可以为0或非0。

问量部分中每个问题的格式如下所示:
查询问题
查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符的计数值来说明随后标识符的字节长度,每个名字以最后0结束,长度为0的标识符是根标识符,计数字节的值必须是0~63的数。如域名gemini.tuc.noao.edu的表示如下:
gemini.tuc.noao.edu

每个问题都有一个查询类型,而每个响应也有一个类型。部分选项如下所示:
DNS查询类型
最常用的查询类型是A类型,表示期望获得查询名的IP地址。一个PTR查询则请求获得一个IP地址对应的域名,是一个指针查询。

查询类通常是1,指互联网地址。

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

  • 域名是记录中资源数据对应的名字。格式与查询名字字段格式相同。
  • 类型说明RR的类型码。它的值和查询类型的值一样,类通常为1,指互联网数据
  • 生存时间是客户端保留该资源记录的秒数,通常的生存时间为2天
  • 资源数据长度说明资源数据的数量。该数据格式依赖于类型字段,对于类型1,资源数据是4字节的IP地址

指针查询(PTR):给定一个IP地址,返回与该地址对应的域名。

当一个组织加入Internet并获得DNS域名空间授权,则它们也获得了对应IP地址的in-addr.arpa域名空间的授权。但应牢记DNS的名字是由DNS树的底部逐步向上书写的。这意味着对于IP地址为140.252.13.33的主机,它的DNS名字为33.13.252.140.in-addr.arpa。

DNS是任何与Internet相连主机必不可少的一部分。层次树是组成DNS域名空间的基本组织形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值