域名系统(DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
DNS定义了两种报文,一种为查询报文;另一种是对查询报文的响应,称为响应报文。无论是查询报文还是响应报文,都有12个字节的头和查询问题。
图1 DNS查询报文格式 图2 DNS响应报文格式
域名和IP之间的对应关系,称为“记录”(record)。根据记录使用的目的不同,又分为不同的类型
1. A记录
A记录也称为主机记录,A记录的基本作用就是一个主机域名对应的ip地址是多少,即是域名和ip地址的对应关系。
例如:
www.baidu.com. IN A 1.1.1.2
mx1.baidu.com. IN A 1.1.1.3
mx2.baidu.com. IN A 1.1.1.3
2. NS记录
NS记录称为域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。假设baidu.com区域有两个DNS服务器负责解析,ns1.baidu.com是主服务器,ns2.baidu.com是辅助服务器,ns1.baidu.com的ip是202.99.16.1,ns2.baidu.com的ip是202.99.16.2。那么我们应该创建两条NS记录,当然,NS记录依赖A记录的解析,我们首先应该为ns1.baidu.com和ns2.baidu.com创建两条A记录
注:ns记录说明,在这个区域里,有多少个服务器承担解析的任务
例如:
baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.
3. SOA记录
起始授权记录,用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件都必须包含一个SOA记录,并且必须是其中的第一个资源记录,用以标识DNS服务器管理的起始位置,SOA说明能解析这个区域的dns服务器中哪个是主服务器
例如,NS记录说明了有两个DNS服务器负责baidu.com的域名解析,但哪个是主服务器呢?这个任务由SOA记录来完成
4. CNAME记录
又称为别名记录,其实就是让一个服务器有多个域名,大致相当于给一个人起个外号。
1. 为什么需要Cname记录呢?一方面是照顾用户的使用习惯,例如我们习惯把邮件服务器命 名为mail,把ftp服务器命名为ftp;
2. 那如果只有一台服务器,同时提供邮件服务和FTP服务,那我们究竟该么命名呢?
我们可以把服务器命名为mail.baidu.com,然后再创建一个Cname记录叫ftp.baidu.com就可以两者兼顾了。
3. 另外使用Cname记录也有安全方面的考虑因素?
例如我们不希望别人知道某个网站的真实域名,那我们可以让用户访问网站的别名,例如我们访问的百度网站的真实域名就是www.a.shifen.com,我们使用的www.baidu.com只是www.a.shifen.com的别名而已
例如:
web.sangfor.com. IN CNAME www.sangfor.com
5. MX记录
又称为邮件交换记录,MX记录用于说明哪台服务器是当前区域的邮件服务器,例如在baidu.com区域中,mail.baidu.com是邮件服务器,而且IP地址是202.99.16.125。那么我们就可以在DNS服务器中进行下列处理:
1、为邮件服务器创建A记录,我们首先为邮件服务器创建一条A记录,这是因为MX记录中描述邮件服务器时不能使用IP地址,只能使用完全合格域名
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com
2、创建MX记录
MX记录对邮件服务器来说是不可或缺的,两个互联网邮局系统在相互通讯时必须依赖DNS的MX记录才能定位出对方的邮件服务器位置。例如163.net邮局给263.net邮局发一封电子邮件,那163邮局的SMTP服务器就需要向DNS服务器发出一个查询请求,请DNS服务器查询263.net的MX记录,这样163邮局的SMTP服务器就可以定位263.net的SMTP服务器,然后就可以把邮件发送到263邮局。
注:具体创建MX记录,需要参考不同的域名注册服务商和环境的操作指南了,实在搞不懂,可以打电话找他们客服。
6. PRT记录
又称为逆向查询记录,用于从ip地址中查询域名。PRT记录是A记录的逆向记录,作用是把IP地址解析为域名
例如:
4.3.2.1.in-addr.arpa. IN PRT www.sangfor.com
资源记录类型 | 一句话说明 |
初始授权记录(SOA) | 表示一个区域的开始,指定当前区域内谁是 主DNS服务器 |
主机记录(A) | 也称Host记录,将 域名 映射到 IP地址,正向解析 AAAA 记录:IPv6地址 |
别名记录(CNAME) | 将 A记录指向的域名 映射到 另一个域名 |
名称服务器记录(NS) | 指出当前区域内有几个DNS服务器在提供服务 |
邮件交换器记录(MX) | 指定当前区域内 SMTP邮件服务器的IP, 一个MX记录对应一个邮件服务器 |
反向解析(PRT) | 指针记录,将 IP 映射为 域名,反向解析 |
域名解析方法主要有两种:递归查询和迭代查询。
①递归查询
通常,主机向本地域名服务器查询时使用。若不知道,本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文。
②迭代查询
通常在本地域名服务器向根域名服务器查询时使用。要么给出所要查询的IP地址,要么告诉下一个要查询的域名服务器的IP地址,由本地域名服务器继续后续查询。
那我们实际的域名解析过程为:
那么如何提高域名解析的效率?
设置高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
作用:大大减轻根域名服务器的负荷,使DNS查询请求和回答报文的数量大为减少。域名服务器应为每项内容设置计时器,并处理超过合理时间的项。当权限域名服务器回答一个查询请求时,在响应中指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
① nslookup:测试DNS服务器
② ipconfig/displaydns:显示windows域名缓冲区内容
③ ipconfig/flushdns:清除windows域名缓冲区内容
1、在2002年的10月21日13台服务器遭受到了有史以来最为严重的也是规模最为庞大的一次网络袭击。此次受到的攻击是DDoS攻击,超过常规数量30至40倍的数据猛烈地向这些服务器袭来并导致其中的9台不能正常运行。7台丧失了对网络通信的处理能力,另外两台也紧随其后陷于瘫痪。
2、2014年1月21日,全球大量互联网域名的DNS解析出现问题,一些知名网站及所有不存在的域名,均被错误的解析指向65.49.2.178。