【计算机网络】DNS域名系统

DNS域名系统


域名系统(Domain Name System, DNS)是互联网使用的命名系统,用来把熟知的域名转换为IP地址。
DNS被设计为一个联机分布式数据库系统,DNs使大多数解析都在本地进行,仅有少量的解析请求需要通过互联网通信,因此DNS的效率很高。同时因为DNS是分布式的,即使单个计算机出现故障,也不会影响DNS系统的整体运行。

当某一个应用进程需要解析主机名时,就调用相应的解析程序,并成为DNS的一个客户。把带解析的域名放在DNS请求报文中,以UDP数据包的方式发送给本地域名服务器(节省开销),本地域名服务器进行解析,应用进程获得目的主机的ip地址后就可以通信了。如果本地域名服务器不能回答请求,那么就继续向其他域名服务器发出请求,直到找到能回答该请求的域名服务器为止。


互联网采用了层次树状结构的命名方法,任何一个互联网上的主机或路由器,都有一个唯一的域名。这里的域指的是一种可被管理的划分。在语法上,每个域名由标号(label)序列组成,标号之间用.隔开。DNS规定,每个标号都由数字和字母组成,每一个标号不超过63个字符,不区分大小写字母,标号中只能使用-标点符号,完整的域名长度不超过255个字符。级别最低的域名写在左边,级别最高的域名写在右边。如mail.cctv.com,从左到右依次是三级域名、二级域名、顶级域名。各级域名由上一级的域名管理机构管理,最高级的顶级域名由ICANN管理。

顶级域名共分为三大类:

(1) 国家顶级域名nTLD:如cn表示中国,us表示美国,uk表示英国等等。在国家顶级域名下注册的二级域名均由该国家自行确定。我国把二级域名划分为“类别域名”和“行政区域名”两大类。类别域名共7个,ac:科研机构,com:工商金融企业,edu中国的教育机构,gov中国的政府机构,mil中国的国防机构,net提供互联网络服务的机构,org:非营利性的组织。行政区划名共34个,适用我国的各省自治区直辖市。如bj:北京市,js:江苏省。

(2) 通用顶级域名gTLD:最先确定的通用顶级域名有7个,如com:公司企业,net:网络服务机构,org:非营利性组织,int:国际组织,edu:美国专用的教育机构,gov:美国的政府部门,mil:美国的军事部门。此后又增加了13个通用顶级域名,如aero, asia, biz, cat, coop, info, jobs, mobi, museum, name, pro, tel, travel等。

(3) 基础结构域名infrastructure domain:arpa用于反向域名解析。

一旦一个单位拥有了一个域名,就可以自己决定是否划分下一级域名,而不必经过上一级域名管理机构批准。


具体实现层次树状结构的DNS系统,则需要分布在各地的域名服务器。如果每台服务器一一对应层次树状结构的每个域名,那么域名服务器的数量就会过多。因此DNS采用分区的办法来减少域名服务器的数量。一个服务器负责管辖的范围称作区,域名服务器实际是以区为管辖范围的。每一个区设置相应的权限域名服务器,用来保存该区中所有主机域名到ip地址的映射。区可能小于或等于域,但不能大于域。例如abc公司划分了两个区,abc.com, y.abc.com,因此有两台权限域名服务器,这两个区都是隶属于abc.com域的。

在更高级的域名服务器则按照层次结构划分。根据域名服务器所起的作用,可以把域名服务器划分为几种类型:

(1) 根域名服务器:管理所有的顶级域名服务器。根域名服务器是最重要的域名服务器,如果一个本地域名服务器自己不能解析,则必须要求助于根域名服务器。全世界588个根域名服务器仅使用13个不同ip地址的域名,即a.rootservers.netb.rootservers.ne,…,m.rootservers.net。根域名服务器使用了任播(anycase)技术,因此当本地域名服务器向根域名服务器发出请求时,会找到离客户最近的根域名服务器。

(2) 顶级域名服务器:管理在该服务器注册的所有二级域名。

(3) 权限域名服务器:管理一个区的域名服务器。

(4) 本地域名服务器:本地域名服务器不属于域名服务器层次结构。当一台主机发出域名解析请求时,请求首先就发送给本地域名服务器。一个互联网服务提供者ISP,或者一个大学,一个大学里的系,都可以拥有一台本地域名服务器。

为了提高域名服务器的可靠性,采用主从结构,把数据复制到几个域名服务器来保存。当主域名服务器故障时,从域名服务器可以保证正常查询请求。主域名服务器定时把数据复制到从域名服务器中,保证了数据的一致性。

域名的解析过程:主机向本地域名服务器请求,一般是递归查询。即如果本地域名服务器不知道如何解析,那么由本地域名服务器来继续向其他域名服务器请求。本地域名服务器向其他域名服务器请求,一般是迭代查询。即如果根域名服务器给出下一步要查询的域名服务器地址,下一步由本地域名服务器继续请求。

为了提高域名解析效率,在域名服务器中使用到了“高速缓存”,用来存储最近已经解析过的域名到ip地址的映射。如果当前请求的域名已经在高速缓存中发现了,那么直接返回高速缓存中的记录。如果高速缓存中没有,但是高速缓存存储了顶级域名服务器的ip地址,那么本地域名服务器也可以不请求根,直接请求顶级域名服务器。不但本地域名服务器需要高速缓存,主机中也需要。许多主机在启动时就向本地域名服务器下载域名和ip的所有记录,并维护主机自己最近访问的高速缓存,只有在缓存查不到时才使用域名服务器。使用高速缓存的情况下,需要设置一个定期的时间用来重新从域名服务器中获取最新的记录,而大多数情况下域名到ip地址的映射是不轻易变化的,因此大多数情况下缓存,或者说域名服务器的记录都是一致的。

参考文章:

Windows查看和清楚DNS缓存

Linux使用nscd做dns缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值