域名系统-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地址时,该应用就调用解析程 ...
随机推荐
- Mysql---C#在cmd中使用mysqldump导出sql文件
一.概述 本文描述了在C#中利用mysqldump工具导出sql文件. 二.代码片段 CmdHelper类代码如下: public class CmdHelper { public static st ...
- T-SQL——关于跨库连接查询
目录 0. 同一台服务器不同数据库 1. 使用跨库查询函数--OpenDataSource() 2. 使用链接服务器(Linking Server) 3. 使用OpenDataSource()函数和链 ...
- Python - 面向对象编程 - 公共属性、保护属性、私有属性
公共属性 在 Python 的类里面,所有属性和方法默认都是公共的 class PoloBlog: # 公共属性 sum = 0 # 构造方法 def __init__(self, name): se ...
- canvas——动画实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaWeb中表单数据的获取及乱码问题
首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下 注:HTML < form> 标签的 action 属性,其定义和用法是: 属性值为URL,表示向何处发送表 ...
- Java clone() 方法克隆对象——深拷贝与浅拷贝
基本数据类型引用数据类型特点 1.基本数据类型的特点:直接存储在栈(stack)中的数据 2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里 引用数据类型在栈中存储了指针,该指 ...
- Dockerfile优化——supervisor服务
一.理解supervisor(supervisor服务不仅在容器中可用,在宿主机中也适用) 1.Dockerfile中的CMD可以指定启动容器后执行的第一个命令,但是当有多个服务进程需要启动的时候,就 ...
- Linux上使用设置printf显示的颜色
我们经常看到别的屏幕五颜六色的很是羡慕,看着很炫是吧.其实我们也可以自己做一个简单的修改,是我们的显示结果也呈现出不同的颜色.shell脚本可能设置的比较多,但是我们平常使用C语言却很少设置它的颜色, ...
- 常见shell脚本测试题 for/while语句
1.计算从1到100所有整数的和2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和3.求从1到100所有整数的偶数和.奇数和4.执行脚本输入用户名,若该用户存在,输出提示该用户已存 ...
- Python - poetry(3)配置项详解
config 命令 poetry 通过 config 命令进行配置 也可以直接在 config.toml 文件中进行配置,该文件将在首次运行该命令时自动创建 文件目录 macOS:~/Library/ ...