1、概述

域名系统 DNS 是因特网使用的命名系统,用来把便于人们使用的机器名字(即域名)转换为 ip 地址。

用户与因特网上某个主机通信时,必须要知道对方的 ip 地址,然而用户很难记住长达32位二进制主机地址,即使是点分十进制 IP 地址也并不太容易记忆。在应用层中为了便于用户记忆各种网络应用, 更多的是使用主机名字(即网站名:服务器名+域名)。

因特网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户--服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在因特网上通信, 因此DNS系统的效率很高。由于DNS是分布式系统, 即使单个计算机出了故障, 也不会妨碍整个DNS系统的正常运行。域名到 IP 地址的解析是由分布在因特网上的许多域名服务器程序(可简称为域名服务器)共同完成的。

域名到IP地址的解析过程: 当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序, 并成为DNS的一个客户, 把待解析的域名放在DNS请求报文中, 以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的田地址后即可进行通信。若本地域名服务器不能回答该请求, 则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求(且接下来都是本地域名服务器代替主机进行查询)。这种过程直至找到能够回答该请求的域名服务器为止。

2、域名结构

因特网的域名采用了层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器, 都有一个唯一的层次结构的名字, 即域名。

级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。

顶级域名可往下划分子域,即二级域名,再往下划分就是三级域名、四级域名等等。凡是在顶级域名下注册的单位都获得了一个二级域名,在某个二级域名下注册的单位就可以获得一个三级域名。一旦某个单位拥有了一个域名,它就可以自己决定是否要进一步划分其下属的子域,并且不必由其上级机构批准。

2.1、顶级域名的类别

(1)国家顶级域名nTLD: 如:cn 表示中国, us 表示美国, uk 表示英国等等。国家顶级域名又常记为ccTLD (cc 表示国家代码country-code)

(2)通用顶级域名gTLD: 最先确定的通用顶级域名有7个, 即:com (公司企业), net (网络服务机构), org(非赢利性组织), int (国际组织), edu(美国专用的教育机构), gov (美国的政府部门), mil 表示(美国的军事部门)。

(3)基础结构域名: 这种顶级域名只有一个, 即arpa, 用于反向域名解析, 因此又称为反向域名。

在国家顶级域名下注册的二级域名均由该国家自行确定。例如, 顶级域名为 jp 的日本, 将其教育和企业机构的二级域名定为 ac 和co, 而不用edu 和com。

我国把二级域名划分为“ 类别域名” 和“ 行政区域名” 两大类。“ 类别域名” 共7 个,分别为: ac(科研机构); com(工、商、金融等企业); edu(中国的教育机构); gov (中国的政府机构); mil (中国的国防机构); net (提供互联网络服务的机构); org (非营利性的组织)。“ 行政区域名” 共34 个, 适用于我国的各省、自治区、直辖市。例如: bj(北京市),js (江苏省)等等。现在我国允许直接在cn 的顶级域名下注册二级域名。这给我国的因特网用户提供了很大的方便。例如, 某公司abc 以前要注册为abc.com.cn,是个三级域名。但现在可以注册为abc.cn, 变成了二级域名。

2.3、域名服务器

实现域名系统的是使用分布在各地的域名服务器,DNS采用划分区的办法来分布域名服务器。

一个服务器所负责管辖的范围叫做区,各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。区可能等于或小于域, 但一定不可能大于域。每一个域名服务器都能够进行部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就设法找因特网上别的域名服务器进行解析。

因特网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用, 可以把域名服务器划分为以下四种不同的类型:

(1)根域名服务器: 根域名服务器是最高层次的域名服务器, 也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。根域名服务器是最重要的域名服务器, 因为不管是哪一个本地域名服务器, 若要对因特网上任何一个域名进行解析(即转换为 ip 地址),只要自己无法解析,就首先要求助于根域名服务器。假定所有的根域名服务器都瘫痪了,那么整个的DNS系统就无法工作。在因特网上共有13个不同IP地址的根域名服务器。目前根域名服务器的分布仍然是很不合理的,会导致在北美和亚洲地区上网速度差别明显。在许多情况下,根域名服务器并不直接把待查询的域名直接转换成 ip 地址( 根域名服务器也没有存放这种信息〉,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

(2)顶级域名服务器: 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS 查询请求时, 就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 ip 地址)。

(3)权限域名服务器: 这就是负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时, 就会告诉发出查询请求的DNS 客户, 下一步应当找哪一个权限域名服务器。

(4) 本地域名服务器: 本地域名服务器并不属于上图6-3 所示的域名服务器层次结构,但它对域名系统非常重要。当一个主机发出DNS 查询请求时,这个查询请求报文就发送给本地域名服务器,由此可看出本地域名服务器的重要性。每一个因特网服务提供者ISP,或-个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。当PC 使用Windows XP 操作系统时,打开“ 控制面板”---“ 网络和共享中心”---点击已连接的网络的标记---“详细信息”,就能看到DNS服务器的ip地址,这里的DNS 服务器指的就是本地域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同一个本地ISP 时,该本地域名服务器立即就能将所查询的主机名转换为它的IP 地址,而不需要再去询问其他的域名服务器。

主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询域名的 ip 地址, 那么本地域名服务器就以 DNS 客户的身份, 向根域名服务器继续发出查询请求报文(即替该主机继续查询,且接下来都是本地域名服务器替代主机进行查询直到本地域名服务器查询到ip地址或者是报错),而不是让该主机自己进行下一步的查询。因此,递归查询返回的查询结果或者是本地域名服务器查询到的 ip 地址,或者是报错,表示无法查询到所需的 ip 地址。

网络体系应用层之DNS系统的更多相关文章

  1. 网络体系应用层之万维网、http协议

    1.万维网概述 万维网以客户--服务器方式工作,万维网客户程序就是各式各样的浏览器,万维网文档所驻留的主机则运行服务器程序, 因此这个主机也称为万维网服务器.客户程序向服务器程序发出请求,服务器程序向 ...

  2. 运营商DNS系统安全解决方案

    DNS系统面临的主要风险 目前,DNS面临的安全问题主要可以分为三类:DNS欺骗攻击.拒绝服务攻击.系统漏洞,下文将分别进行介绍.  DNS欺骗攻击 当一个DNS服务器遭到欺骗攻击,使用了来自一个恶 ...

  3. TCP/IP笔记 应用层(1)——DNS

    1. DNS DNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机 ...

  4. TCP/IP笔记 四.应用层(1)——DNS

    1. DNS DNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机 ...

  5. 构建一个完整的DNS系统

    人心不同 各如其面 如之奈何 如之奈何 ——引子   我们的目标很明了——构建一个具有根的.私有的DNS(Domain Name System). 这里不会陈述太多关于DNS与BIND的基础知识,如果 ...

  6. 20145233《网络对抗》Exp7 DNS网络欺诈技术防范

    20145233<网络对抗>Exp7 DNS网络欺诈技术防范 实验问题思考 通常在什么场景下容易受到DNS spoof攻击 公共的无线局域网中,容易受到攻击者的攻击,因为这样就会连入局域网 ...

  7. 学习构建调试Linux内核网络代码的环境MenuOS系统

    构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...

  8. 网络类(IP、dns、网络连接类)

    一.centOS 7 设置DNS方法 使用全新的命令行工具 nmcli 来设置 1.显示当前网络连接 nmcli connection show   NAME UUID TYPE DEVICE eno ...

  9. linux 系统获取网络ip, mask, gateway, dns信息小程序

    net_util.c #define WIRED_DEV                   "eth0"     #define WIRELESS_DEV             ...

随机推荐

  1. JavaScript 利用 filter+正则表达式对 list进行过滤包括模糊匹配

      模糊查找 this.users.filter((item)=>{ var reg= new RegExp(this.searchText,'i'); return reg.test(item ...

  2. Spring Boot 获取 java resources 下文件

    Spring Boot 获取 java resources 下文件 Spring Boot 获取 resources 目录下的目录(例:获取 resources 目录下的 template 目录): ...

  3. 像计算机科学家一样思考python-第1章 程序之道

    1.7调试 程序是很容易出错的.因为某种古怪的原因,程序错误被称为bug,而查捕bug的过程称为调试(debugging). 一个程序中可能出现3种类型的错误:语法错误.运行时错误和语义错误.对它们加 ...

  4. 【转载】阿里入局,独角兽估值30亿美金,谈谈RPA是什么

    缩短法定工作时间,已成国际劳动立法趋势,全球政府都曾面对这样的议题,过往企业IT也在思考这件事,开发出更好的软件系统帮助员工,就是普遍作法,这也已经行之有年,而现阶段最有效的作法,则是要用AI来提供帮 ...

  5. mariadb(一)基础

    一.数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来 ...

  6. 应用安全 - Web安全 - 逻辑漏洞整理

    短信轰炸 .Fiddler抓包repeat .burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z .burpsuite手机号遍历 防御: 设置图片验证码,每次获取短信验证码 ...

  7. 06(H5*)Vue第五天、第六天 Vue常见命令

    常见的Vue命令 全局安装 1:npm i webpack -g   全局安装webpack.   保存到项目中  -S 2:npm i webpack --save-dev  安装到项目依赖中. 3 ...

  8. 学习ECMAScript标准和具体实现-JavaScript

    在NDN的JavaScript Guide里,Array和Map,Set都属于collections of data.它们的区别就是,Array是ordered by an index value,  ...

  9. SAS去空格

    data test;       x="  aaa     bbb hahaha";       x1=compress(x);       x2=left(x);       p ...

  10. python------生产者消费者模型 和 管道

    一.为什么要使用生产者和消费者? 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程,在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才 ...