【网络协议详解】——DNS系统协议(学习笔记)

news2025/1/15 19:52:26

目录

  • 🕒 1. DNS的作用
  • 🕒 2. 域名结构
  • 🕒 3. 域名分类
  • 🕒 4. 域名空间
  • 🕒 5. 域名服务器类型
    • 🕘 5.1 根域名服务器
    • 🕘 5.2 顶级域名服务器
    • 🕘 5.3 权限域名服务器
    • 🕘 5.4 本地域名服务器
  • 🕒 6. 域名解析的过程
    • 🕘 6.1 递归查询(较少使用)
    • 🕘 6.2 迭代查询
    • 🕘 6.3 高速缓存
  • 🕒 7. DNS的报文格式
    • 🕘 7.1 首部
      • 🕤 7.1.1 标识
      • 🕤 7.1.2 标志
      • 🕤 7.1.3 问题记录数
      • 🕤 7.1.4 回答记录数
      • 🕤 7.1.5 授权记录数
      • 🕤 7.1.6 附加记录数
    • 🕘 7.2 问题部分
    • 🕘 7.3 回答部分
    • 🕘 7.4 授权部分
    • 🕘 7.5 附加信息部分
  • 🕒 8. DNS的记录类型
    • 🕘 8.1 问题记录
    • 🕘 8.2 资源记录
  • 🕒 9. 实验:了解DNS的工作机制

🕒 1. DNS的作用

我们通过输入网址来访问网页,可实际上计算机间的通信是通过IP地址,所以网址的本质上是IP地址,将网址与IP地址映射起来就是DNS(Domain Name System)的作用

Q:因特网是否可以只适用一台DNS服务器?
A:这种做法不可取。因为因特网的规模很大,如果只有一个服务器,那么一旦其出现故障,整个因特网就会瘫痪。

因此现实中采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS。

DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。

🕒 2. 域名结构

  • 因特网采用层次树状结构的域名结构
  • 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
    … .三级域名.二级域名.顶级域名
    • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母
    • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
    • 完整的域名不超过255个字符。
  • 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
  • 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。

举例:仲恺信科院的域名
在这里插入图片描述

🕒 3. 域名分类

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

  • 国家顶级域名nTLD:采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国……
  • 通用顶级域名gTLD:最常见的通用顶级域名有七个
    • com(公司企业) 、net(网络服务机构)、org (非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门)、mil(美国军事部门)。
  • 反向域arpa:用于反向域名解析,即IP地址反向解析为域名。

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

我国则将二级域名划分为以下两类:

  • 类别域名 共七个: ac(科研机构)、com (工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org (非营利性组织)。
  • 行政区域名共34个,适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市、gd为广东省,等等。

注:名称相同的域名其等级未必相同,如.com.cn.com

🕒 4. 域名空间

在这里插入图片描述

这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。

🕒 5. 域名服务器类型

域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。

域名服务器可以划分为以下四种不同的类型:

🕘 5.1 根域名服务器

  • 根域名服务器是最高层次的域名服务器。
  • 每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。
  • 因特网上共有13个不同IP地址的根域名服务器。尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集
    • 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。
    • 这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址

🕘 5.2 顶级域名服务器

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

🕘 5.3 权限域名服务器

  • 权限域名服务器负责管理某个区的域名
  • 每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。
  • 另外,权限域名服务器还知道其下级域名服务器的地址。

🕘 5.4 本地域名服务器

  • 本地域名服务器不属于上述的域名服务器的等级结构。
  • 当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。
  • 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中
  • 每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器
  • 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

🕒 6. 域名解析的过程

🕘 6.1 递归查询(较少使用)

在这里插入图片描述

🕘 6.2 迭代查询

在这里插入图片描述
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:

  • 从请求主机到本地域名服务器的查询是递归查询;
  • 而其余的查询是迭代查询

🕘 6.3 高速缓存

  • 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
    • 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
  • 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性

🕒 7. DNS的报文格式

  • DNS报文使用运输层的UDP协议进行封装,运输层端口号为53

DNS有两种类型的报文,格式如下:

  • 查询报文  首部   问题部分  \begin{array}{|c|} \hline \text { 首部 } \\ \hline \text { 问题部分 } \\ \hline \end{array}  首部  问题部分 

  • 响应报文  首部   问题部分   回答部分   授权部分   附加部分  \begin{array}{|c|} \hline \text { 首部 } \\ \hline \text { 问题部分 } \\ \hline \text { 回答部分 } \\ \hline \text { 授权部分 } \\ \hline \text { 附加部分 } \\ \hline \end{array}  首部  问题部分  回答部分  授权部分  附加部分 

🕘 7.1 首部

首部长度为12字节。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

🕤 7.1.1 标识

标识字段长度16比特,客户使用该字段进行响应与查询的匹配工作。

🕤 7.1.2 标志

标志字段长度16比特,划分为若干子字段。

在这里插入图片描述

  • QR (查询/响应):1位子字段,定义报文类型
  • OpCode(操作码):4位子字段,定义查询或响应的类型
  • AA(授权回答):1位子字段,指示域名服务器是否为权限服务器
  • TC(截断):1位子字段,表示响应已超过512字节并已截断为512字节
  • RD(期望递归):1位子字段,表示客户是否希望得到递归回答
  • RA(递归可用):1位子字段,在响应中置位时,表示可得到递归响应。
  • 保留:3位子字段,目前置为000。
  • rCode(返回码):4位子字段,表示在响应中的差错状态
rCode的取值意义
0无差错
1格式差错
2域名服务器错误
3域参照错误
4查询类型不支持
5管理上禁止
6/15/23保留

🕤 7.1.3 问题记录数

问题记录数字段长度16比特,包含了报文的问题部分中的查询记录数

🕤 7.1.4 回答记录数

回答记录数字段长度16比特,包含了响应报文的回答部分中的回答记录数。在查询报文中值是0。

🕤 7.1.5 授权记录数

授权记录数字段长度16比特,包含了响应报文的授权部分中的授权记录数。在查询报文中值是0。

🕤 7.1.6 附加记录数

附加记录数字段长度16比特,包含了响应报文的附加部分中的附加记录数。在查询报文中值是0。

🕘 7.2 问题部分

  • 问题部分包括了一个或多个问题记录
  • 在查询报文和响应报文中都会出现
  • 其格式和记录的类型有关

在这里插入图片描述

在这里插入图片描述

🕘 7.3 回答部分

  • 回答部分包括了一个或多个资源记录
  • 只在响应报文中出现,内容是从服务器到客户(解析程序)的回答
  • 其格式和记录的类型有关

🕘 7.4 授权部分

  • 授权部分包括了一个或多个资源记录
  • 只在响应报文中出现,为该查询给出一个或多个权限服务器的相关信息(域名)
  • 其格式和记录的类型有关

🕘 7.5 附加信息部分

  • 附加信息部分包括了一个或多个资源记录
  • 只在响应报文中出现。该部分提供了辅助解析程序的附加信息
  • 其格式和记录的类型有关

🕒 8. DNS的记录类型

DNS使用两种类型的记录:

  • 问题记录:查询报文和响应报文的问题部分
  • 资源记录:响应报文的回答、授权和附加信息部分

🕘 8.1 问题记录

问题记录(question record)用于客户获取服务器上的信息。

在这里插入图片描述

  • 查询名字字段为可变长度字段,其中包含域名信息
  • 查询类型字段长度为16比特,定义查询类型。其取值如表所示:
类型助记符说明
1A地址:IPv4地址,用于将域名转换为地址
2NS名字服务器。标志了区域的权限服务器
5CNAME规范名称:定义主机的正式名字的别名
6SOA授权开始。标记一个区域的开始
11WKS熟知服务。定义主机提供的网络服务
12PTR指针:用于将IP地址转换为域名
13HINFO主机信息。指明主机使用的硬件和操作系统
15MX邮件交换。将邮件转发到一个邮件服务器
28AAAA地址:IPv6地址
252AXFR请求传送完整区域文件
255ANY请求所有记录
  • 查询类别字段长度为16比特,定义了使用DNS的特定协议。其取值如表所示:
类型助记符说明
1IN因特网
2CSNETCSNET网络
3CSCOAS网络
4HS由MIT开发的Hesoid服务器

在这里插入图片描述

🕘 8.2 资源记录

  • 每一个域名都与一条资源记录相关联
  • 服务器数据库由许多资源记录组成
  • 资源记录也是服务器向客户所返回的信息。

在这里插入图片描述

  • 域名字段包含了域名的可变长度字段
    • 内容是问题记录中的域名的副本
  • 域类型字段与问题记录的查询类型字段相同
    • 但是查询类型中的最后两个类型不允许使用。
  • 域类别字段与问题记录的查询类别字段相同
  • 生存时间字段长度为32比特,定义了回答的有效期,以为单位。
  • 资源数据长度字段长度为16比特,定义资源数据的长度。
  • 资源数据字段为可变长度字段
    • 包含了对查询的回答
    • 包含了权限服务器的域名
    • 包含了一些附加信息
    • 该字段的格式和内容取决于类型字段的值。

在这里插入图片描述

在这里插入图片描述

🕒 9. 实验:了解DNS的工作机制

实验步骤:
一、打开wireshark开始抓包

在这里插入图片描述

二、在CMD界面输入ipconfig/flushdns,并ping www.baidu.com

在这里插入图片描述

三、在wireshark 显示过滤器设置过滤条件:dns,通过观察数据包分析dns的工作机制

在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-软考总结

软考总结目录 宏观  学习感受  阶段划分 微观  1.自己看书和看视频:  2.学习的知识点和课后题进行结合  3.做往年的软考真题  4.提炼出相对来说难以攻克的问题组织分享和讨论  5.小组讨论做错的题并进行结构化 总结学习时间上学习方法上学习形式上 宏…

【Linux入门】Linux权限及管理

【Linux入门】Linux权限及管理 目录 【Linux入门】Linux权限及管理Linux权限管理文件访问者的分类文件类型和访问权限(事物属性) 文件权限值的表示方法文件访问权限的相关设置方法目录的权限实现共享目录粘滞位目录权限总结 作者:爱写代码的刚…

【iOS开发-多线程【四】pthreadNSThread

前言 多线程的最后一篇,从GCD的API到GCD的实现,学到了NSOperation和NSOperationQueue 慢慢了解了多线程的使用场景和众多原理,其中不乏涉及到了其他的知识,锁等。 这篇博客学习iOS常用的NSThread,了解pthread&#x…

DBeaver安装与使用教程

—仅供学习 侵权请联系删除– 一、DBeaver介绍 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具。 1.它支持任何具有一个JDBC驱动程序数据库,也可以处理任何的外部数据源。 DBeaver 通过 JDBC 连接到数据库,可以…

在AgilePLM项目中使用积木报表

前言 目前市面上有很多比较好的报表工具,但很多收费都比较昂贵,这次找到一个开源免费的报表工具。推荐企业内部开发使用 积木报表虽然没有FineReport那么功能强大,但是目前测试下来也可以满足大部分报表功能。也是能缩短开发周期降低开发成…

PCDViewer的常用操作

PCDViewer是一款功能强大但操作极为简单的点云可视化和编辑软件,支持对点云的渲染显示、查询、量测、建图拼接、编辑、格式转换等功能,同时支持了pose文件、矢量文件等的显示。PCDViewer目前提供了Windows、Ubuntu18.04、Ubuntu20.04等版本。 本页面总结…

Mysql之高可用方案浅析

在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的高可用等,下面聊聊典型的关系型数据库…

2023 剑桥大学博士后/访问学者项目一览

作为全球知名的高等教育机构,剑桥大学一直致力于与世界各地的学者保持紧密联系,共同探索各个学科领域的前沿问题和挑战。为了加强国际间的学术交流和合作,剑桥大学开展了博士后访问学者项目,为来自不同国家和地区的优秀学者提供机…

【Python pyqt】零基础也能轻松掌握的学习路线与参考资料

。 Python和pyqt是一对非常强大的组合,可以用于快速开发各种应用程序,包括桌面应用程序、Web应用程序、游戏等等。如果想要系统地了解如何学习Python pyqt,可以遵循以下学习路线: Python基础知识学习 在学习pyqt之前&#xff0c…

机器学习_数据升维_多项式回归代码_保险案例数据说明_补充_均匀分布_标准正太分布---人工智能工作笔记0038

然后我们再来看一下官网注意上面这个旧的,现在2023-05-26 17:26:31..我去看了新的官网, scikit-learn已经添加了很多新功能, 我们说polynomial多项式回归其实是对数据,进行 升维对吧,从更多角度去看待问题,这样 提高模型的准确度. 其实y=w0x0+w1x1.. 这里就是提高了这个x的个…

发现一个好玩的东西:Markdown 使用 Emoji 表情

Markdown 使用 Emoji 表情 玩法1、复制和粘贴表情符号2、使用表情符号简码Markdown 定义列表 玩法 有两种方法可以将表情符号添加到Markdown文件中: 将表情符号复制并粘贴到Markdown格式的文本中或者键入emoji shortcodes。 1、复制和粘贴表情符号 在大多数情况…

C++ 学习 ::【基础篇:06】:C++ (inline)内联函数的介绍及其出现的意义【对比于 C语言宏函数】

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

基于html+css的图展示94

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

SpringCloudAlibaba中篇(Sentinel,Seata)(超级无敌认真好用,万字收藏篇!!!!)

文章目录 SpringCloudAlibaba中篇(Sentinel,Seata)1 Sentinel(流量处理)1.1 分布式系统遇到的问题1.2 服务雪崩1.3 容错机制1.4 什么是Sentinel1.5 初步使用Sentinel-流控规则1.6 Sentinel- SentinelResource1.7 初步使用Sentinel-降级规则1.8 控制台部署…

计算机组成原理-指令系统-机器级语言表示(汇编)

目录 一、X86汇编语言指令基础 寄存器 常见的算数运算指令​编辑 常见逻辑运算指令 AT&T格式和 Intel格式指令 选择语句的机器级表示 循环语句的机器级表示 二、CISC和RISC 一、X86汇编语言指令基础 寄存器 常见的算数运算指令 常见逻辑运算指令 AT&T格式和 Intel格…

程序猿成长之路番外篇-如何理解牛顿迭代法及如何使用牛顿迭代法求数的平方根

小伙伴们好久不见,我又来了,这次我分享的内容是如何理解牛顿迭代法及如何使用牛顿迭代法求数的平方根 什么是牛顿迭代法? 官方话术:牛顿迭代法又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson m…

【JavaSE】Java基础语法(二十五):异常

文章目录 1. 异常2. 编译时异常和运行时异常的区别3. JVM默认处理异常的方式4. 查看异常信息5. throws方式处理异常6. throw抛出异常7 . try-catch方式处理异常8. Throwable成员方法(应用)9. 自定义异常(应用) 1. 异常 异常的概述…

算法6.堆结构、堆排序、加强堆

算法|6.堆结构、堆排序、加强堆 1.比较器的定义 题意:定义一个学生类,分别实现对学生对象数组按年龄升序、按id降序、按名字的字典序、按id排序且id相同的年龄大的排在前边。 解题思路: 定义一个学生类定义一个实现了Comparator接口的类A…

前端包管理器的简介,pnpm的使用以及和npm的区别

随着前端的不断发展,包管理工具也不断的丰富,从最开始的npm到现在cnpm,pnpm,yarn,一个新的包管理工具的出现是为了弥补之前包管理工具的一个痛点,今天我就来说一下包管理器的出现的原因和pnpm的简单使用和一些包管理工具的一些区别…

【Vue】二:Vue核心处理---事件处理

文章目录 1. 事件修饰符1.1 prevent1.2 stop1.3 capture - 添加事件侦听器时使用 capture 模式。1.4 self1.5 one1.6 passive 2.按键修饰符3.系统修饰符 1. 事件修饰符 1.1 prevent 当我们点击后,回去先执行关联的事件,然后再去执行默认行为&#xff0c…