TCP/IP学习笔记(9)-DNS域名系统

前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址能够经过ARP协议获得,因此这对用户是透明的,可是IP地址就不行,不管如何用户都须要用一个指定的IP来访问一台计算机,而IP地址又很是很差记,因而就出现了DNS系统。

DNS系统介绍数据库

DNS的全称是Domain Name System。它负责把FQDN(就是以"."分隔结尾的名字)翻译成一个IP。最初的DNS系统使用的是一个巨大的hosts.txt文件(很吃惊,用 这个就好使了?),但是一段时间之后,开发这就不得不用数据库来代替hosts.txt文件,最终发展到了如今的分布式数据库。
DNS系统是一个巨大的树,最上方有一个无名树根,下一层是arpa,com,edu,gov,int,mil,us, cn。等等,其中arpa,是域名反解析树的顶端;而com,edu,等域名原本只用在美国(这就是技术特权啊),可是如今几乎全世界通用;而us, cn,等叫作国家域。这个树里面的域名并非统一管理的,网络信息中心(NIS)负责分配顶级域合委派其余制定地区域的受权机构。
一个独立管理的DNS子树叫作zone,最多见的区域就是二级域名,好比说.com.cn。咱们还能够把这个二级域名给划分红更小的区域,好比说sina.com.cn。
DNS系统是一个分布式的数据库,当一个数据库发现本身并无某查询所须要的数据的时候,它将把查询转发出去,而转发的目的地一般是根服务器,根服 务器从上至下层层转发查询,直到找到目标为止。DNS还有一个特色就是使用高速缓存,DNS把查询过的数据缓存在某处,以便于下次查询时使用。缓存

DNS协议服务器

DNS报文定义了一个既能够查询也能够响应的报文格式。对各个字段简单解释以下:
1. 最前面的16个bit惟一的标示了问题号码,用于查询端区别本身的查询。
2. 紧接着的16个bit又能够作进一步的细分,标示了报文的性质和一些细节,好比说是查询报文仍是响应报文,须要递归查询与否(通常服务器都支持递归查询,并且不须要任何设置,BIND就是这样)
3. 查询问题后面有查询类型,包括A,NS,CNAME,PTR,HINFO,MX,若是熟悉BIND的话,就知道在zong的配置文件里面,每一条记录都记载了各自的类型,好比A就是IP地址,NS就是名字服务器。
4. 响应报文能够回复多个IP,也就是说,域名能够和多个IP地址对应,而且有不少CNAME。网络

反向查询数据结构

正向查询指的是经过域名获得IP的查询,而反向查询就是经过IP获得域名。例如用host命令,host ip就能够获得服务器的域名,host domainName 就获得IP。
稍微知道一点数据结构的人都能意识到,在正向查询的域里面作反向查询,其作法只有遍历整个数据集合----对于DNS来讲,那就是遍历整个数据库, 这将带来巨大的负担,因此DNS采起了另外一种方法,使用另外一棵子树来维护IP-〉域名的对应表。这个子树的根节点是in-addr.arpa,而一个IP 例如192.168.11.2)所具备的DNS地址就是 2.11.168.192.in-addr.arpa(ip倒置)。在DNS系统里面,一个反向地址对应一个PTR纪录(对应A纪录),因此反向查询又叫 作指针(PTR)查询。dom

其余问题的讨论分布式

DNS服务器高速缓存spa

BIND9默认是做为一个高速缓存服务器,其将全部的查询都转交到根服务器去,而后获得结果并放在本地的缓冲区,以加快查询速度。若是有兴趣能够安装一个BIND9来尝试一下。而本身定义的zone则能够规定其在缓存中的时间,通常是1天(就是配置文件中的1D)。翻译

用UDP仍是TCP指针

DNS服务器支持TCP和UDP两种协议的查询方式,并且端口都是53。而大多数的查询都是UDP查询的,通常须要TCP查询的有两种状况: 1.当查询数据多大以致于产生了数据截断(TC标志为1),这时,须要利用TCP的分片能力来进行数据传输(看TCP的相关章节)。 2.当主(master)服务器和辅(slave)服务器之间通讯,辅服务器要拿到主服务器的zone信息的时候。

相关文章
相关标签/搜索