DNS作为一个运维人员是必须要掌握的东西,今天开始彻底的学习DNS。

   参考书目:《TCP/IP详解 卷一:协议》、《Linux系统管理手册》

   两本都是很经典的书,没事随手翻翻都会有很大的收获。

笔记如下:

   1. 主从域名服务器、区域传送(zone transfer)

    一个名字服务器(翻译感觉老怪了,后面统一叫域名服务器吧)负责一个或多个区域。一个区域的管理者必须为该区域提供一个主域名服务器和至少一个从域名服务器,主从服务器必须是独立和冗余的,以便当某个域名服务器发生故障时,不会影响该区域的域名服务。主从域名服务器的主要区别在于主域名服务器从磁盘调入该区域的所有信息而从域名服务器则从主域名服务器调入所有信息。 我们将从域名服务器从主域名服务器跳入信息称为区域传送

    2. 资源记录(Resource Records)

A    :A记录定义了一个IP地址,它存储32bit的二进制数,查询一个域名时就是返回的A记录,用 host -v domain 可以看到;

PTR  :指针记录用与指针查询。说实话我也没看懂啥意思,但是查询一个ip地址时,会首先返回PTR记录,这时候IP地址被看作是in-addr.arpa域下的一个域名;

 
  
  1. [root@localhost log]# host -v 202.120.223.5 
  2. Trying "5.223.120.202.in-addr.arpa" 
  3. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50429 
  4. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 
  5.  
  6. ;; QUESTION SECTION: 
  7. ;5.223.120.202.in-addr.arpa.    IN      PTR  #PTR记录
  8.  
  9. ;; ANSWER SECTION: 
  10. 5.223.120.202.in-addr.arpa. 36000 IN    PTR     dns2.usst.edu.cn. #PTR记录

CNAME:这表示”规范名字“。它用来表示一个域名(标识字符串),而有规范名字的域名通常被称为别名。某些FTP站点使用它向其他的系统提供一个易于记忆的别名。又是不怎么明白的地方。通过一个命令来说明吧:

 
  
  1. [root@localhost log]# host -v -t cname www.baidu.com 
  2. Trying "www.baidu.com" 
  3. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30392 
  4. ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 
  5.  
  6. ;; QUESTION SECTION: 
  7. ;www.baidu.com.                 IN      CNAME 
  8.  
  9. ;; ANSWER SECTION: 
  10. www.baidu.com.          752     IN      CNAME   www.a.shifen.com. #别名?
  11.  
  12. ;; AUTHORITY SECTION: 
  13. baidu.com.              68471   IN      NS      ns3.baidu.com. 
  14. baidu.com.              68471   IN      NS      ns4.baidu.com. 
  15. baidu.com.              68471   IN      NS      ns2.baidu.com. 
  16. baidu.com.              68471   IN      NS      dns.baidu.com. 

HINFO:表示主机信息:说明主机CPU和操作系统的两个字符串。并非所有的站点都提供这个两个字串,就算有也不一定是最新的。可以用命令:

host -v -t hinfo domain 看到。

MX   :邮件交换记录。用于以下一些场合:(1) 一个没有连接到Internet的站点能将一个连接到Internet的站点作为它的邮件交换器。这两个站点能够用一种交替的方式交换到达的邮件,而通常用的协议是UUCP;(2)MX主机提供了一种将无法到达主机的邮件传递到一个替代主机的方式;(3)MX记录允许机构提供他人发送邮件的虚拟主机,即使这样的主机名根本不存在。(4)防火墙网关能使用MX记录来限制外界与内部系统的连接。说明:每一个MX记录有16bit的整数值,称为优先值。如果一个主机有多个MX记录,它们按优先值从小到达的顺序使用                    MX记录可以用这种方式来查看:host -v -t mx domain ,但是一般查询不到信息。

NS    :域名服务器。它说明一个域的授权域名服务器。它由域名表示。如下:

 
  
  1. [root@localhost log]# host -v 8.8.8.8 
  2. Trying "8.8.8.8.in-addr.arpa" 
  3. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41507 
  4. ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 
  5.  
  6. ;; QUESTION SECTION: 
  7. ;8.8.8.8.in-addr.arpa.          IN      PTR 
  8.  
  9. ;; ANSWER SECTION: 
  10. 8.8.8.8.in-addr.arpa.   86400   IN      PTR     google-public-dns-a.google.com. 
  11.  
  12. ;; AUTHORITY SECTION: #授权域名服务器
  13. 8.8.8.in-addr.arpa.     3600    IN      NS      ns4.google.com. 
  14. 8.8.8.in-addr.arpa.     3600    IN      NS      ns1.google.com. 
  15. 8.8.8.in-addr.arpa.     3600    IN      NS      ns2.google.com. 
  16. 8.8.8.in-addr.arpa.     3600    IN      NS      ns3.google.com. 
  17.  
  18. ;; ADDITIONAL SECTION: 
  19. ns1.google.com.         323856  IN      A       216.239.32.10 
  20. ns2.google.com.         323856  IN      A       216.239.34.10 
  21. ns3.google.com.         323857  IN      A       216.239.36.10 
  22. ns4.google.com.         323856  IN      A       216.239.38.10 
  23.  
  24. Received 218 bytes from 202.120.223.5#53 in 604 ms 

SOA  :起始授权机构。此记录指定区域的起点。它所包含的信息有区域名,区域管理员电子邮件地址,以及指示从DNS服务器如何更新区域数据文件的设置等。

3. 高速缓存(Caching)

   高速缓存,不管是在计算机硬件系统还是软件系统中使用很频繁的结构。在域名服务中,高速缓存缓存域名服务的查询等结果,以便下次使用时能快速得到消息,不用再联网查询。这样减少了网络流量,提高了效率。

4. DNS是使用的UDP还是TCP协议呢?这也是百度电面的时候被问到的问题。

   DNS服务器使用的熟知端口不管对TCP还是UDP都是53端口。这说明了什么呢?说明了DNS实际上既使用了UDP也使用过了TCP。当域名解析器发出一个查询请求,并且返回响应中的TC(Truncated 可截断的,具体看DNS的查询报文格式里的标志字段)比特位被设置为1时,它就意味着响应的长度超过了512字节,而仅返回前512字节。(关于这一点,UDP数据报的最大长度实际为数据报长度减去IP首部的长度,但是在以太网中MTU为1500,意味着IP数据报文长度超过就得分片,而且很多程序限制了接收UDP数据报文的长度,如在DNS中不能超过512)遇到这种情况的时候,域名解析器通常用TCP重发原来的查询请求,它运行返回的响应超过512字节。 此外,区域传送也采用TCP,因为传送的数据很多。