文章转自:https://blog.csdn.net/weixin_43914604/article/details/105583806

学习课程:《2019王道考研计算机网络》

学习目的:利用最省时间的方法学习考研面试中的计算机网络。


1、DNS系统

  • 域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.BitHachi.cn)转换为便于机器处理的IP地址
  • 相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。
  • DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
  • 从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器

  • 某台主机访问网站www.bithachi.cn网站为例,DNS的大致流程

2、域名

  • 因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)
  • 域(Domain)是名字空间中一个可被管理的划分。
  • 域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。

在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。

  • 例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网(CERNET)来管理。
  • 比如我的域名bithachi.cn是一个二级域名,我可以任意分配三级域名,比如1001.bithachi.cn和1002.bithachi.cn,这两个网址是可以访问的,小项目。

域名空间的树状结构:



每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。

关于域名中的标号有以下几点需要注意:

  • 1)标号中的英文不区分大小写
  • 2)标号中除连字符(-) 外不能使用其他的标点符号。
  • 3)每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
  • 4)级别最低的域名写在最左边,级别最高的顶级域名写在最右边。

顶级域名(Top Level Domain, TLD)分为如下三大类:

  • 1)国家顶级域名(nTLD)。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,.uk”表示英国。
  • 2)通用顶级域名(gTLD)。 常见的有“.com” (公司)、“.net" (网络服务机构)、“.org”(非营利性组织)和“.gov" (国家或政府部门)等。
  • 3)基础结构域名。这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名。反向域名解析与通常的正向域名解析相反,提供IP地址到域名的对应,反向域名格式如:X.X.X.in-addr.arpa。很多网络服务提供商要求访问的IP地址具有反向域名解析的结果,否则不提供服务。

国家顶级域名下注册的二级域名均由该国家自行确定。

3、域名服务器

  • 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型
  • 域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
  • 每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
  • DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。
  • 采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。

(1)根域名服务器

  • 根域名服务器最高层次的域名服务器,所有的根域名服务器都知道所有顶级域名服务器的IP地址
  • 根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器
  • 因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。
  • 需要注意的是,根域名服务器用来管辖顶级域(如.com), 通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

(2)顶级域名服务器

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

(3)授权域名服务器(权限域名服务器)

  • 每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。
  • 实际上,许多域名服务器同时充当本地域名服务器授权域名服务器
  • 授权域名服务器总能将其管辖的主机名转换为该主机的IP地址

(4)本地域名服务器

  • 本地域名服务器对域名系统非常重要。
  • 每个因特网服务提供者(ISP), 或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。
  • 当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器
  • 事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址

4、域名解析过程

  • 域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。
  • 当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器
  • 域名解析有两种方式:递归查询递归与迭代相结合的查询。

(1)递归查询方式

  • 递归查询的过程如下图所示, 由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。

(2) 常用递归与迭代相结合的查询方式

常用递归与迭代相结合的查询方式如下图所示,该方式分为两个部分。



主机本地域名服务器的查询采用的是递归查询

  • 也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP 地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。
  • 在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[见图(a)中的步骤③~⑥]。
  • 在步骤⑦中,本地域名服务器根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉主机m.xyz.com

本地域名服务器根域名服务器的查询采用迭代查询

  • 根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。
  • 然后让本地域名服务器向这个顶级域名服务器进行后续的查询,如图(b)所示。
  • 同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。
  • 最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机

下面举例说明域名解析的过程:

假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:

  • 1️⃣客户机向其本地域名服务器发出DNS请求报文
  • 2️⃣本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。
  • 3️⃣根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器
  • 4️⃣本地域名服务器顶级域名服务器dns.com发出解析请求报文
  • 5️⃣顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器
  • 6️⃣本地域名服务器授权域名服务器dns.abc.com发起解析请求报文
  • 7️⃣授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器
  • 8️⃣本地域名服务器将查询结果保存到本地缓存,同时返回给客户机

  • 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存
  • 当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。
  • 因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息

详解DNS域名解析系统(域名、域名服务器[根、顶级、授权/权限、本地]、域名解析过程[递归与迭代])的更多相关文章

  1. <转>详解DNS的常用记录(上):DNS系列之二

    详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...

  2. nslookup详解(name server lookup)( 域名查询)

    nslookup详解(name server lookup)( 域名查询) 一.总结 1.爬虫倒是很方便拿到页面数据:a.网页的页面源码我们可以轻松获得  b.比如cnsd博客,文章的正文内容全部放在 ...

  3. Unity Jobsystem 详解实体组件系统ECS

    原文摘选自Unity Jobsystem 详解实体组件系统ECS 简介 随着ECS的加入,Unity基本上改变了软件开发方面的大部分方法.ECS的加入预示着OOP方法的结束.随着实体组件系统ECS的到 ...

  4. Tomcat详解及SNS系统的部署实现

    Tomcat详解及SNS系统的部署实现   http://jungege.blog.51cto.com/4102814/1409290

  5. 详解在Linux系统中安装Tomcat

    本文以在CentOS 7.6中安装Tomcat8.5为例进行安装,其他系统和版本都是大同小异的. 安装JDK 安装Tomcat之前,需要先安装JDK,可以参看之前的文章详解在Linux系统中安装JDK ...

  6. DNS详解: A记录,子域名,CNAME别名,PTR,MX,TXT,SRV,TTL

    DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名系统为Internet上的主机分配域名地址和IP地址.由于网络中的计算机都必 ...

  7. DNS篇(详解DNS)

    *文章来源:https://blog.egsec.cn/archives/601 *本文将主要说明:本文主要叙述什么是DNS.域名的层级.DNS 解析过程.DNS的缓存时间.DNS 的记录类型.DNS ...

  8. Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)

    |--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...

  9. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...

随机推荐

  1. [第八篇]——Docker 容器使用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. xxx@xxx:~# docker 可以通过命令  docke ...

  2. [第一篇]——Docker 教程之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 教程 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然 ...

  3. 关联数组VS索引数组

    关联数组和常规说的数组类似,它包含标量抄数据,可用索引值来单独选择这些数据,和常规数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量袭.这些标量称为百Keys,可以在以后用于检索数组中的数值 ...

  4. C# windows服务知识集锦

    最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享. 1).关于windows服务安装包的制作和自动启动服务 http://blog.csdn.net/re ...

  5. 【转】shell中的$0 $n $# $* $@ $? $$ 变量 if case for while

    shell中的$0 $n $# $* $@ $? $$  shell 编程 | shift 命令用法笔记 $0当前脚本的文件名 $n传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个 ...

  6. Maven专题4——Maven测试

    Java世界的主流测试框架是JUnit和TestNG,Maven在构建执行到特定生命周期阶段的时候,通过插件执行JUnit和TestNG的测试用例. Maven执行测试的插件是maven-surefi ...

  7. Python增强下git那长长的指令

    场景 现如今有点规模的公司都使用GitFlow模式进行分支管理.虽然插件给我们带来了非常大的方便,但切换分支.找分支.起分支还是那么的麻烦 需求 在社会主次国家,每个生活在底层的劳动人民,他们默默的工 ...

  8. elementUI 表格 table 的表头错乱问题

    页面中多组件开发时,如果页面中有表格的,table表格头出现表头错乱 // 全局设置1 body .el-table th.gutter{ 2 display: table-cell!importan ...

  9. 洛谷P1583——魔法照片(结构体排序)

    https://www.luogu.org/problem/show?pid=1583#sub 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...

  10. 使用manacher算法解决最长回文子串问题

    要解决的问题 求一个字符串最长回文子串是什么.且时间复杂度 O(N) 具体描述可参考: LeetCode_5_最长回文子串 LintCode_200_最长回文子串 暴力解法 以每个字符为中心向左右两边 ...