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缓存

【计算机网络】DNS域名系统相关推荐

  1. 计算机网络——DNS域名解析服务器原理

    摘要 本博文主要介绍DNS协议和DNS服务器域名解析相关知识和原理,帮助大家在理解计算机网络中的域名解析服务原理. 计算机网络知识脑图 计算机网络--计算机网络知识脑图_庄小焱的博客-CSDN博客_计 ...

  2. 域名与DNS域名系统

    文章目录 导读 域名 域名的结构 域名再深入 顶级域名 二级域名 三级域名 四级域名 DNS域名系统 导读 全球的公网ip约有40多亿个,在没有域名的概念时,如果你要打开百度的网站请记住:39.156 ...

  3. TCP / IP学习笔记(9)-dns域名系统

    TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...

  4. DNS域名系统 - CDN内容分发网络

    目录 知识点1:什么是DNS域名系统 DNS系统的作用: DNS系统的分布式数据结构 /etc/named/named.ca 文件:13台根域名服务器存放的文件 DNS的记录类型 DNS的解析过程 D ...

  5. 计算机网络之应用层(DNS域名系统)

    应用层作为和用户直接交互的一层,它具体的内容就是规定应用进程在通信时所需要遵循的协议. 应用层的很多协议都是基于客户-服务器方式(C-S方式),即便是 P2P 的方式,本质上也只是一种特殊的客户-服务 ...

  6. 『计算机网络』域名系统(DNS)

    域名系统是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于及其处理的 IP 地址.相对于 IP 地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机.值得注意的是,D ...

  7. 计算机网络学习07(DNS域名系统详解)

    DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议.DNS 要解决的是域名和 IP 地址的映射问题. 在实际使用中,有一种情况下,浏览器是 ...

  8. DNS --域名系统

    DNS 目录: 一.原理 二.域名划分 三.域名的解析流程 四.面试题: 在浏览器输入网址后,回车后会发生什么? 五.icmp协议 六.NAT/NAPT 目录: 一.原理 域名系统(英文:Domain ...

  9. 计算机网络 DNS域名

    1 域名系统概述 许多应用层软件经常直接使用域名系统DNS(Domain Name System),但计算机的用户只是简介而不是直接使用域名系统 互联网采用层次结构的命名树作为主机的名字,并使用分布式 ...

最新文章

  1. ubuntu宽带拨号linux,Ubuntu 通过无线进行ADSL拨号
  2. 我的R之路:参数假设检验
  3. oracle 10g 手动创建scott(tiger) schema
  4. php实习生很苦吗,实习生就该被欺负做又累又苦的活吗?!
  5. 【Web】WEB项目初启动的那些糟心事
  6. Visusl Studio——包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解
  7. ffmpeg 参数_使用FFMPEG进行视频转码
  8. Oracle DG常用视图与运维护常用操作
  9. 刷爆了!程序员都在点赞的Python学习图谱安利给你!
  10. 【嵌入式】课程文章参考
  11. docker 中文目录及文件乱码_解决docker容器中文乱码,修改docker容器编码格式
  12. mysql中set names_深入理解mysql SET NAMES和mysql(i)_set_charset的区别
  13. 最小生成树-Prim + Kruskal算法
  14. ssm毕设项目基于的少儿编程学习系统2lsiy(java+VUE+Mybatis+Maven+Mysql+sprnig)
  15. 移动端web总结(一)——JDM项目总结
  16. 各种int的取值范围
  17. ENVI导出.tif格式图进ArcGIS背景去除
  18. linux运行软件代码,Linux软件安装-详细源码安装过程
  19. STM32的SWD调试方式
  20. 存款利率计算器V1.0

热门文章

  1. APB——(Advanced Peripheral Bus)
  2. Windows使用Docker出现exit 139错误
  3. ERP销售管理实施的意义
  4. 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统
  5. 在MySQL中 函数的主要目的是什么_mysql数据库函数作用是什么意思
  6. 华为联运服务登录支付签名
  7. 信贷违约风险评估预测-kaggle项目
  8. 【面经】美团算法二面
  9. IDE硬盘与SATA的表示
  10. 谁让AI走进了隐秘的角落?