域名系统-DNS
域名系统DNS
- 域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名转化为IP地址,域名系统就是名字系统。
很多应用层的软件经常直接使用DNS。DNS为互联网的各种网络提供了核心服务。 - 用户和主机通信的时候,通常是很难记住IP地址,但应用层为了便于用户记住各种网络应用,连接在互联网上的
主机不仅有IP地址,还有便于记忆的主机名字。域名系统就是把互联网上的主机名字转化为IP地址。 - 为什么主机在IP数据报的时候要使用IP地址而不是域名呢?这是因为IP地址的长度是固定的32位(IPV6是固定的128位),
而域名的长度并不是固定的,及其处理起来比较困难。 - 从理论上来讲,整个互联网可以只使用一个域名服务器,使它装入互联网上的所有主机名,
并回答所有对IP地址的查询,但是这种做法简直太蠢,这样的域名服务器肯定会因为过负荷工作而无法正常工作,而且一旦这个域名服务器出现故障,
整个互联网就会瘫痪。因此早在1983年就开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS
。DNS互联网标准是RFC[1034],RFC[1035]。 - 互联网的DNS被设计为成为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析(resolve)
仅有少量解析在互联网上通信,因此DNS系统的效率很高,由于DNS是分布式系统,即使是单个计算机出现了故障,也不会妨碍整个DNS系统的正常运行。 - 域名到IP地址的解析过程是由分布式在互联网上的许多域名服务程序共同完成的。域名服务程序在专设的结点上运行,
人们把运行域名服务器程序的机器称之为域名服务器。 - 域名到IP地址解析过程的要点如下:
- 当某一个用用进程需要把主机名解析为IP地址时,该用用进程就调用解析程序(resolver),
并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据包方式发给本地域名服务器
(使用UDP的好处是减少开销)。 - 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获取到目标主机的IP地址就可以进行通信。
- 当某一个用用进程需要把主机名解析为IP地址时,该用用进程就调用解析程序(resolver),
- 若本地域名服务器不能回答该请求,则该域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。
这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
- 每一个域名都是由标号(label)序列组成,各标号之间使用.隔离开,例如:

- 一级域名又称顶级域名。从右往左依次增大。
- DNS规定,域名中的符号,都是由英文字母和数字组成,每一个标识符不能超过63个字符(为了记忆方便,不能超过12个字符)不区分大小写
标点符号只能使用英文.号。级别最低的域名写左边,级别最高的域名写右边,由多个标号组成的完整域名不超过255个字符, - 各级域名由上一级的域名管理机构管理,最高级的顶级域名则由ICANN进行管理。
- 域名只是个逻辑概念,并不能代表计算机所在的物理地点,
- 互联网的名字空间是按照机构的组织来划分的,与物理的网络无关。
- 域名服务器
- 一个服务器所负责的范围叫做区(zone)。但在区中的所有节点都必须是能够联通的。每一个区设置相应的
权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射, - 根据域名服务器的作用,可以把域名服务器划分为以下四种不同的类型:
- 根域名服务器(root name server):根域名服务器是最高层次的域名服务器,若要对互联网上的任何一个域名进行解析(即转化为IP地址)
只要自己无法解析,就首先要求助于根域名服务器,假如根域名服务器都瘫痪了,那么整个互联网的DNS就瘫痪了。 - 顶级域名服务器(TLD服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询的请求的时候,就会给出相应的应答
(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。 - 权限域名服务器:负责一个区的域名服务器。
- 本地域名服务器(local name server):当一台主机发出DNS查询的时候,这个查询请求报文就发送给本地域名
服务器,本地域名服务器距离用户比较近,一般不超过几个路由的距离。当所要查询的主机也属于同一个本地ISP时候,
该本地域名服务器立即就能讲所查询的主机名转化为它的IP地址,而不再需要询问其他的域名服务器。
- 根域名服务器(root name server):根域名服务器是最高层次的域名服务器,若要对互联网上的任何一个域名进行解析(即转化为IP地址)
- 为了提高域名的可靠性,DNS域名服务器把数据复制到几个域名服务器来保存,其中的一个是主域名服务器(master name server),
其他的是域名域名服务器(secondary name server)。当主域名服务器出现故障的时候,福主域名服务器可以保证DNS查询工作不会瘫痪。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,这样就保证了数据的一致性。
- 一个服务器所负责的范围叫做区(zone)。但在区中的所有节点都必须是能够联通的。每一个区设置相应的
- 域名的解析过程
- 主机向本地域名服务器的查询一般采用的是递归查询,所谓递归查询就是:如果主机所询问的本地域名服务器不知道被域名查询的IP地址,那么本地域名服务器就以DNS客户的身份
,向其他根域名服务器继续发出查询请求报文(替该主机继续查询),而不是让主机自己进行下一步查询,递归查询的结果就两种:- 查询成功,查询出IP地址。
- 查询失败(报错),无法查询到。
- 本地域名服务器向根域名服务器查询采用的是迭代查询:当根域名服务器收到本地域名服务器发出的
迭代请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器地址:"你下一步应该去哪一个域名服务器查询",然后让本地域名服务器进行后续的查询,接着如何上面的操作,直至找到IP地址。

- 为了提高DNS查询速率,并减轻根域名服务器的负荷,在域名服务器广泛使用高速缓存(高速缓存域名服务器),高速缓存用来存放最近查询过的域名以及从何处获取到该映射。
- 主机向本地域名服务器的查询一般采用的是递归查询,所谓递归查询就是:如果主机所询问的本地域名服务器不知道被域名查询的IP地址,那么本地域名服务器就以DNS客户的身份
域名系统-DNS的更多相关文章
- 关于域名系统DNS解析IP地址的一些总结
关于域名系统DNS(Domain Name System) 从域名中解析出IP地址. DNS主要由3部分组成: ① 名称解析器(resolver) ② 域名空间(domain name space) ...
- 套接字和域名系统DNS
套接字产生的原因: 当应用进程通过传输层进行通信时 ,TCP和 UDP将面临同时为多个应用进程提供并行通信的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据. 为了区别每 ...
- 域名系统DNS和FTP
域名系统概述 域名系统DNS(Domain Name System)是英特网使用的命名系统,用于把便于人们使用机器名字转化为IP地址. 为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?IP地 ...
- 域名系统DNS
一.域名系统是什么 域名系统其实就是一个把主机名解析为IP地址的名字系统. 因特网使用层次树状结构的命名方法,并使用分布式的域名系统DNS.因特网的域名系统DNS被设计成一个联机分布式数据库系统,并采 ...
- 计算机网络之域名系统DNS
域名系统DNS 域名系统DNS(Domai NameSystem)是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 许多应用层软件经常直接使用域名系统,但计算机的用户只是间接而不是 ...
- 第9章 应用层(1)_域名系统DNS
1. 域名系统DNS 1.1 主机名和域名的关系 (1)完全限定域名(Fully Qualified Domain Name, FQDN) = 主机名 + 域名 ①一个域名下可以有多个服务器/主机(如 ...
- 带你简单了解域名系统DNS
带你简单了解域名系统DNS 一.域名简介 1.1.DNS服务的作用 负责解析域名,将域名解析成IP地址. 1.2.域名系统概述 由于32位的IP地址并不容易记忆,人们往往喜欢记忆网站的域名.所以当我们 ...
- 域名系统DNS简介
域名系统(Domain Name System, DNS)是互联网的核心应用层协议之一, 它用于查询域名对应的IP地址.在使用域名访问任何网络资源时都需要先进行域名解析. www.cnblogs.co ...
- 域名系统DNS以及跨域问题
域名到Ip地址解析是由分布在因特网上的许多域名服务器程序共同完成的.运行域名服务器程序的机器是域名服务器 域名到ip地址的解析过程: 当一个应用进程需要把主机名解析为ip地址时,该应用就调用解析程 ...
随机推荐
- 莫逸风CSDN文章目录
『Ⅱ』-----随笔 莫逸风CSDN文章目录 The Programmer's Oath程序员的誓言-- 今天突发奇想写了一个小工具,CSDN文章目录生成器 vue去掉一些烦人的校验规则 输入npm ...
- Int 2e 与 Sysenter区别
参考:张银奎<软件调试>第八章 Int 2e: Windows将2e号向量专门用作系统调用,在启动早起初始化中断描述表时便注册好了适合的服务例程.因此当NtDll中的NtReadFile发 ...
- Sparksql 日期加减函数
1.日期加减spark sql 日期加减,date_sub,date_addval dateDF=spark.range(10) .withColumn("today",curre ...
- PB代码转JAVA工具
开发了PB代码转JAVA的工具,正在做datawindow和datastore的处理.以下是目前已经能处理的功能: 1.自动从PBL中获取对象的函数或事件代码 a)可以自动获取实例变量.函数或事件的入 ...
- MyBatis学习总结(五)——关联表查询的实现
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- javascript(2)运算符
### js运算符 1.运算符 1.typeof 获取当前变量类型 运算符(特殊) 2.= 赋值运算符 3.== 简要比较运算符(忽略变量的类型) 4.=== 标准比较运算符(严格变量的类型.判断是否 ...
- 经典多级时间轮定时器(C语言版)
经典多级时间轮定时器(C语言版) 文章目录 经典多级时间轮定时器(C语言版) 1. 序言 2. 多级时间轮实现框架 2.1 多级时间轮对象 2.2 时间轮对象 2.3 定时任务对象 2.4 双向链表 ...
- Linux原始套接字抓取底层报文
1.原始套接字使用场景 我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据.收到的数据往往只包括应用层数据,原有的头部信息在传递 ...
- 前端--jstree--异步加载数据
利用回调来处理服务器返回的数据, 默认只能解析固定格式的返回值 <div class=""> <div id="div-jstree"> ...
- asp.net 工具
http://www.jb51.net/article/92465.htm 这篇文章列出了针对ASP.NET开发人员的有用工具. 工具 1.Visual Studio Visual Studio Pr ...