域名系统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地址就可以进行通信。
  • 若本地域名服务器不能回答该请求,则该域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。

    这种过程直至找到能够回答该请求的域名服务器为止。

互联网的域名结构

  • 每一个域名都是由标号(label)序列组成,各标号之间使用.隔离开,例如:

    • 一级域名又称顶级域名。从右往左依次增大。
    • DNS规定,域名中的符号,都是由英文字母和数字组成,每一个标识符不能超过63个字符(为了记忆方便,不能超过12个字符)不区分大小写

      标点符号只能使用英文.号。级别最低的域名写左边,级别最高的域名写右边,由多个标号组成的完整域名不超过255个字符
    • 各级域名由上一级的域名管理机构管理,最高级的顶级域名则由ICANN进行管理。
    • 域名只是个逻辑概念,并不能代表计算机所在的物理地点
    • 互联网的名字空间是按照机构的组织来划分的,与物理的网络无关。
  • 域名服务器
    • 一个服务器所负责的范围叫做区(zone)。但在区中的所有节点都必须是能够联通的。每一个区设置相应的

      权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射,
    • 根据域名服务器的作用,可以把域名服务器划分为以下四种不同的类型:
      • 根域名服务器(root name server):根域名服务器是最高层次的域名服务器,若要对互联网上的任何一个域名进行解析(即转化为IP地址)

        只要自己无法解析,就首先要求助于根域名服务器,假如根域名服务器都瘫痪了,那么整个互联网的DNS就瘫痪了。
      • 顶级域名服务器(TLD服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询的请求的时候,就会给出相应的应答

        (可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。
      • 权限域名服务器:负责一个区的域名服务器。
      • 本地域名服务器(local name server):当一台主机发出DNS查询的时候,这个查询请求报文就发送给本地域名

        服务器,本地域名服务器距离用户比较近,一般不超过几个路由的距离。当所要查询的主机也属于同一个本地ISP时候,

        该本地域名服务器立即就能讲所查询的主机名转化为它的IP地址,而不再需要询问其他的域名服务器。
    • 为了提高域名的可靠性,DNS域名服务器把数据复制到几个域名服务器来保存,其中的一个是主域名服务器(master name server),

      其他的是域名域名服务器(secondary name server)。当主域名服务器出现故障的时候,福主域名服务器可以保证DNS查询工作不会瘫痪。

      主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,这样就保证了数据的一致性。
  • 域名的解析过程
    1. 主机向本地域名服务器的查询一般采用的是递归查询,所谓递归查询就是:如果主机所询问的本地域名服务器不知道被域名查询的IP地址,那么本地域名服务器就以DNS客户的身份

      ,向其他根域名服务器继续发出查询请求报文(替该主机继续查询),而不是让主机自己进行下一步查询,递归查询的结果就两种:

      • 查询成功,查询出IP地址。
      • 查询失败(报错),无法查询到。
    2. 本地域名服务器向根域名服务器查询采用的是迭代查询:当根域名服务器收到本地域名服务器发出的

      迭代请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器地址:"你下一步应该去哪一个域名服务器查询",然后让本地域名服务器进行后续的查询,接着如何上面的操作,直至找到IP地址。
    • 为了提高DNS查询速率,并减轻根域名服务器的负荷,在域名服务器广泛使用高速缓存(高速缓存域名服务器),高速缓存用来存放最近查询过的域名以及从何处获取到该映射。

域名系统-DNS的更多相关文章

  1. 关于域名系统DNS解析IP地址的一些总结

    关于域名系统DNS(Domain Name System) 从域名中解析出IP地址. DNS主要由3部分组成: ① 名称解析器(resolver) ② 域名空间(domain name space) ...

  2. 套接字和域名系统DNS

    套接字产生的原因: 当应用进程通过传输层进行通信时 ,TCP和 UDP将面临同时为多个应用进程提供并行通信的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据. 为了区别每 ...

  3. 域名系统DNS和FTP

    域名系统概述 域名系统DNS(Domain Name System)是英特网使用的命名系统,用于把便于人们使用机器名字转化为IP地址. 为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?IP地 ...

  4. 域名系统DNS

    一.域名系统是什么 域名系统其实就是一个把主机名解析为IP地址的名字系统. 因特网使用层次树状结构的命名方法,并使用分布式的域名系统DNS.因特网的域名系统DNS被设计成一个联机分布式数据库系统,并采 ...

  5. 计算机网络之域名系统DNS

    域名系统DNS 域名系统DNS(Domai NameSystem)是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 许多应用层软件经常直接使用域名系统,但计算机的用户只是间接而不是 ...

  6. 第9章 应用层(1)_域名系统DNS

    1. 域名系统DNS 1.1 主机名和域名的关系 (1)完全限定域名(Fully Qualified Domain Name, FQDN) = 主机名 + 域名 ①一个域名下可以有多个服务器/主机(如 ...

  7. 带你简单了解域名系统DNS

    带你简单了解域名系统DNS 一.域名简介 1.1.DNS服务的作用 负责解析域名,将域名解析成IP地址. 1.2.域名系统概述 由于32位的IP地址并不容易记忆,人们往往喜欢记忆网站的域名.所以当我们 ...

  8. 域名系统DNS简介

    域名系统(Domain Name System, DNS)是互联网的核心应用层协议之一, 它用于查询域名对应的IP地址.在使用域名访问任何网络资源时都需要先进行域名解析. www.cnblogs.co ...

  9. 域名系统DNS以及跨域问题

    域名到Ip地址解析是由分布在因特网上的许多域名服务器程序共同完成的.运行域名服务器程序的机器是域名服务器   域名到ip地址的解析过程: 当一个应用进程需要把主机名解析为ip地址时,该应用就调用解析程 ...

随机推荐

  1. commandBinding 的命令

    <Window x:Class="WpfApplication1.Window29" xmlns="http://schemas.microsoft.com/win ...

  2. 【linux】tail 命令详解

    转自:https://www.cnblogs.com/fps2tao/p/7698224.html Linux命令:显示文件结尾 Head/Tail head 与 tail 就像它的名字一样的浅显易懂 ...

  3. 【springcloud】Eureka服务注册中心搭建

    转自:https://blog.csdn.net/pengjunlee/article/details/86538997 Spring Cloud是一系列框架的集合,它利用Spring Boot的开发 ...

  4. web项目中的浏览器行为和服务器行为

    package day10.think_about_path; import java.io.IOException; import javax.servlet.ServletException; i ...

  5. unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source 解决办法

    Project -> Properties -> C/C++ -> Precompiled Headers -> Precompiled Header -> 选择Not ...

  6. ❤️用武侠小说的形式来阅读LinkedList的源码,绝了!

    一.LinkedList 的剖白 大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同.师兄练的是动态数组,我练的是链表. 问大家一个问题,知道我为什么要 ...

  7. 【良心保姆级教程】java手把手教你用swing写一个学生的增删改查模块

    很多刚入门的同学,不清楚如何用java.swing去开发出一个系统? 不清楚如何使用java代码去操作数据库进行增删改查一些列操作,不清楚java代码和数据库(mysql.sqlserver)之间怎么 ...

  8. 【数据库上】 第四讲 E-R模型基础知识

    第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...

  9. Linux - 解决使用 apt-get 安装 yum 的时耗报 E: Unable to locate package yum 的错误

    问题背景 在 Linux 系统下使用 apt-get 命令安装 yum 库报错 apt-get install yum E: Unable to locate package yum 问题解决 一行命 ...

  10. JS015. 数据存储方式与位置(堆内存、栈内存、指针)

    数据 - 基本类型 Undefined  ,  Null  ,  String  ,  Number  ,  Boolean  ,  Symbol (ES 6)  , 基本数据类型存储在栈内存中. 数 ...