1. DNS是一种用于TCP/IP应用程序的分布式数据库,提供主机名字和IP地址之间的转换以及有关电子邮件的选路信息。从应用的角度来看,其实就是两个库函数gethostbyname()和gethostbyaddr()。

2. DNS 是一个分布式数据库,它利用树形目录结构将主机名称的管理权分配给各级的DNS服务器,这使得管理和修改工作可以在各层本地完成,减少了每一台服务器的数据量,使得管理数据更加容易。

  完整的域名是一个由“.”分隔的字符串,其中每个部分都代表一个域或主机名。例如www.tsinghua.edu.cn. 和www.zju.edu.cn. 这是两个完整的域名,但是他们虽然不是同一台机器,却有相同的主机名www,而在互联网中名字相同的主机非常多,怎样准确地定位某台主机呢?这需要先确定他们所属的域,这样就算有再多名字是www的主机,只要在不同的域当中,我们也能准确地找到它。

3. FQDN:全域名(FQDN,Fully Qualified Domain Name)是指主机名加上全路径,全路径中列出了序列中所有域成员(包括root)。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。

4. 指针查询(即反向查询):根据IP查询相应的域名。DNS使用另一棵树来做这个反向查询,其根节点为in-addr.arpa,下一级为该IP的第一个字节,再下一级为该IP的下一个字节,以此类推。

示例:

# host 140.252.13.34

34.13.252.140.in-addr.arpa domain name pointer pipen14.tuc.noao.edu.

# host tuc.noao.edu

tuc.noao.edu is an alias for noao.tuc.noao.edu.

noao.tuc.noao.edu has address 140.252.1.28

noao.tuc.noao.edu mail is handled by 10 barracuda-1.tuc.noao.edu.

5. 资源记录(RR)

A记录:  用于查询IP地址

PTR记录:  用于指针查询

CNAME:  表示“规范名字”,用来表示一个域名,也通常称为别名

HINFO:  表示主机信息,包括主机CPU和操作系统的两个字符串

MX:  邮件交换记录

NS:  名字服务器记录,说明一个域的授权名字服务器

6. 高速缓存

为了减少DNS的通信量,所有的名字服务器均使用高速缓存。在标准Unix是实现中,高速缓存是由名字服务器而不是名字解释器来维护的。

7. 用UDP还是TCP

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

1. 当查询数据多大以至于产生了数据截断(TC标志为1),这时,需要利用TCP的分片能力来进行数据传输(看TCP的相关章节)。

2. 当主(master)服务器和辅(slave)服务器之间通信,辅服务器要拿到主服务器的zone信息的时候。