《TCP/IP详解卷1:协议》第14章 DNS:域名系统---读书笔记
1、引言
5、指针查询
DNS中一直难于理解的部分就是指针查询方式,即给定一个IP地址,返回与该地址对应的域名。
当一个组织加入Internet,并获得DNS域名空间的授权,如noao.edu,则它们也获得了对应IP地址的in-addr.arpa域名空间的授权。在noao.edu这个例子中,它的网络号是140.252的B类网络。在DNS树中结点in-addr.arpa的下一级必须是该IP地址的第一字节(例中为140),再下一级为该IP地址的下一个字节(252),以此类推。但应牢记的是DNS名字是由DNS树的底部逐步向上书写的。这意味着对于IP地址为140.252.13.33的sun主机,它的DNS名字为33.13.252.140.in-addr.arpa。
必须写出4字节的IP地址,因为授权的代表是基于网络号:A类地址是第一字节,B类地址是第一、二字节,C类地址是第一、二、三字节。IP地址的第一字节一定位于in-addr的下一级,但FQDN却是自树底往上书写的。
只有在使用host程序或者tcpdump程序直接同DNS打交道时,才会担心in-addr域和反写IP地址影响我们。从应用的角度上看,正常的名字解析器函数(gethostbyaddr)将接收一个IP地址并返回对应主机的有关信息。反转这些字节和添加in-addr.arpa域均由该函数自动实现。
6、资源记录
我们已经见到了一些不同类型的资源记录(RR,resouce record):IP地址查询为A类型,指针查询为类型PTR。也见到过由服务器返回的资源记录:回答RR、授权RR和附加信息RR。现有大约20种不同类型的资源记录,下面将介绍其中的一些常用的。
A | 一个A记录定义了一个IP地址,它存储32bit的二进制数。 |
PTR | 指针记录用于指针查询。IP地址被看作是in-addr.arpa域下一个域名(标识字符串) |
CNAME | 这表示“规范名字(canonical name)”。它用来表示一个域名(标识串),而有规范名字的域名通常被称为别名(alias)。某些FTP服务器使用它向其他的系统提供一个易于记忆的别名。 |
HINFO | 表示主机信息:包括说明主机CPU和操作系统的两个字符串。并非所有的站点均提供它们系统的HINFO记录,并且提供的信息也可能不是最新的。 |
MX | 邮件交互记录。用于一下一些场合:
|
NS | 名字服务器记录。它说明一个域的授权名字服务器。它由域名表示(符号串)。 |
为了减少Internet上的DNS的通信量,所有的名字服务器均使用高速缓存。在标准的UNIX实现中,高速缓存是由名字服务器而不是由名字解析器维护的。
8、用UDP还是TCP
DNS名字服务器使用的熟知端口53。DNS均支持UDP和TCP访问。
当名字解析器发出一个查询请求,并且返回响应中的TC(删减标志)比特被设置为1时,它就意味着响应的长度超过512字节,而仅返回前512字节。在遇到这种情况时,名字解析器通常使用TCP重发原来的查询请求,它将允许返回的响应超过512个字节。
此外,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器指向区域传送。
既然DNS主要使用UDP,无论是名字解析器还是名字服务器都必须自己处理超时和重传。DNS查询和响应通常经过广域网。分组丢失和往返时间的不确定性在广域网上比局域网更大。这样对于DNS客户程序,一个好的重传和超时程序就显得更重要了。
本文出自 “做最好的自己” 博客,请务必保留此出处http://qiaopeng688.blog.51cto.com/3572484/1889808
《TCP/IP详解卷1:协议》第14章 DNS:域名系统---读书笔记
原文:http://qiaopeng688.blog.51cto.com/3572484/1889808