计算机网络——12DNS
DNS
DNS的必要性
- IP地址标识主机、路由器
- 但IP地址不好记忆,不便于人类用使用(没有意义)
- 人类一般倾向于使用一些有意义的字符串来标识Internet上的设备
- 存在着“字符串”——IP地址的转换的必要性
- 人类用户提供要访问机器的“字符串”名称
- 由DNS负责转换为二进制的网络地址
DNS系统需要解决的问题
- 问题1:如何命名设备
- 用有意义的字符串:好记,便于人类用使用
- 解决一个平面命名的重名问题:层次化命名
- 问题2:如何完成名字到IP地址的转换
- 分布式的数据库维护和响应名字查询
- 问题3:如何维护:增加或者删除一个域,需要在域名系统中做哪些工作
DNS的历史
- APRANET的名字解析解决方案
- 主机名:没有层次的一个字符串(一个平面)
- 存在着一个(集中)维护站:维护者一张主机名-IP地址的映射文件:Hosts.txt
- 每台主机定时从维护站取文件
- APRAnet解决方案的问题
- 当网络中主机数量很大时
- 没有层次的主机名称很难分配
- 文件的管理、发布、查找都很麻烦
- 当网络中主机数量很大时
DNS总体思路和目标
- DNS的主要思路
- 分层的、基于域的命名机制
- 若干分布式的数据库完成名字到IP地址的转换
- 运行在UDP之上端口号为53的应用服务
- 核心的Internet功能,但以应用层协议实现
- 在网络边缘处理复杂性
- DNS主要目的
- 实现主机名-IP地址的转换
- 其他目的
- 主机别名到规范名字的转换
- 邮件服务器别名到邮件服务器的正规名字的转换
- 负载均衡
问题1:DNS命名空间
DNS域名结构
- 一个层面命名设备会有很多重名
- DNS采用层次树状结构的命名方法
- Internet根被划为几百个顶级域
- 通用的:
- .com; .edu ; .gov ; .int ; .mil ; .net ; .org .firm ; .hsop ; .web ; .arts ; .rec ;
- 国家的:
- .cn ; .us ; .nl ; .jp
- 通用的:
- 每个(子)域下面可划分为若干子域
- 树叶是主机
DNS名字空间

域名:
- 从本域往上,直到树根
- 中间使用“.”间隔不同的级别
- 域的域名:可以用于表示一个域
- 主机的域名:一个域上的一个主机
域名的管理:
- 一个域管理其下的子域
- 创建一个新的域,必须征得它所属域的同意
域与物理网络无关
- 域遵从组织界限,而不是物理网络
- 一个域的主机可以不在一个网络
- 一个网络的主机不一定在一个域
- 域的划分是逻辑的,而不是物理的
问题2:解析问题-名字服务器
一个名字服务器的问题:
- 可靠性问题:单点故障
- 拓展性问题:通信容量
- 维护问题:远距离的集中式数据库
区域:
- 区域的划分由区域管理者自己决定
- 将DNS名字空间划分为互不相交的区域,每个区域都是树的一部分
- 名字服务器:
- 每个区域都有一个名字服务器,维护着它所管辖区域的权威信息
- 名字服务器允许被放置在区域之外,以保障可靠性
名字空间换分为若干区域:Zone

权威DNS服务器:组织机构的DNS服务器,提供组织机构服务器(如Web和mail)可访问的主机和IP之间的映射
组织机构可以选择实现自己维护或由某个服务器提供商来维护
TLD服务器
- 顶级域(TLD)服务器:负责顶级域名和所有国家级的顶级域名
- Network solutions 公司维护com TLD服务器
- Educause 公司维护edu TLD服务器
区域名字服务器维护资源记录
资源记录
- 作用:维护域名-IP地址(其他)的映射关系
- 位置:Name Server的分布式数据库中
RR格式
- Domain_name:域名
- Ttl: time to live:生存时间,就是某个资源记录插入到表当中,生存时间是多少;根据Ttl是否无穷大,记录划分为权威记录和缓冲记录
- Class类别:对于Internet,值为IN
- Value:可以是数字,域名或ASCII串
- Type类别:资源记录的类型
DNS记录
DNS保存资源记录(RR)的分布式数据库
RR 格式:(domain_name, ttl, type,class,Value)
| Type类型 | Name的含义 | Value的含义 | 举例 |
|---|---|---|---|
| A | 主机 | ip地址 | |
| CNAME | 别名 | 规范名字 | www.ibm.com的规范名字为servereast.backup2.ibm.com |
| NS | 域名(如foo.com) | 该域名的权威服务器的名字 | NAME仅仅具体到了域名,还没有到主机 |
| MX | 邮件 | name对应的邮件服务器的名字 |
TTL:生存时间,决定了资源记录应当从缓存中删除的时间
例子:

DNS
DNS大致工作过程
- 应用调用解析器
- 解析器作为客户向Name Server发出查询报文(封装在UDP段中)
- Name Server返回响应报文

本地名字服务器
- 并不严格属于层次机构
- 每个ISP(居民的ISP、公司、大学)都有一个本地DNS服务器
- 也称为“默认名字服务器”
- 当一个主机发起一个DNS查询时,查询被送到其本地DNS服务器
- 起着代理的作用,将查询结果转发到层次结构中
名字服务器
名字解析过程
- 目标名字在Local Name Server中
- 情况1:查询的名字在该区域内部
- 情况2:缓存
当本地名字服务器不能解析名字时,联系根名字服务器顺着根-TLD一直找到权威名字服务器

递归查询
递归查询
- 名字解析负担都放在当前联络的名字服务器上
- 问题:根服务器的负担太重
- 解决:迭代查询

迭代查询
- 主机cis.poly.edu 想知道主机 gaia.cs.umass.edu 的IP地址
- 根(及各级域名)服务器返回的不是查询结果,而 是下一个NS的地址
- 最后由权威名字服务器给出解析结果
- 当前联络的服务器给出可以联系的服务器的名字
- “我不知道这个名字,但可以向这个服务器请求”

DNS协议、报文
DNS协议:查询和响应报文的报文格式相同

提高性能:缓存
- 一旦名字服务器学到了一个映射,就将该映射缓存起来
- 根服务器通常都在本地服务器中缓存着
- 使得根服务器不用经常被访问
- 目的:提高效率
- 可能存在的问题:如果情况变化,缓存结果和权威资源记录不一致
- 解决方案:TTL(默认两天)
问题3:维护问题:新增一个域
- 在上级域的名字服务器中增加两条记录,指向这个新增的子域的域名和域名服务器的地址
(Type = NS、 Type = A 相当于指针) - 在新增子域的名字服务器上运行名字服务器,负责本域的名字解析:名字->IP地址
- 例子:在com域中建立一个“Network Utopia”
- 到注册登记机构注册域名networkutopia.com
- 需要向该机构提供权威DNS服务器(基本的、和辅助的)的名字和IP地址
- 登记机构在com TLD服务器中插入两条RR记录:
- (networkutopia.com,dns1.networkutopia.com,NS )
- (dns1.networkutopia.com,212.212.212.1,A)
- 在networkutopia.com的权威服务器中确保有
- 用于Web服务器的www.networkuptopia.com的类型为A的记录
- 用于邮件服务器mail.networkutopia.com的类型为MX的记录
这里以添加为例,删改查是一样的
攻击DNS
DDoS 攻击
- 对根服务器进行流量轰炸攻击:发送大量ping
- 没有成功
- 原因1:根目录服务器配置 了流量过滤器,防火墙
- 原因2:Local DNS 服务器 缓存了TLD服务器的IP地址, 因此无需查询根服务器
- 向TLD服务器流量轰炸攻击 :发送大量查询
- 可能更危险
- 效果一般,大部分DNS缓存了TLD
重定向攻击
- 中间人攻击
- 截获查询,伪造回答,从而攻击某个(DNS回答指定的IP)站点
- DNS中毒
- 发送伪造的应答给DNS服务器,希望它能够缓存这个虚假的结果
- 技术上较困难:分布式截获和伪造
利用DNS基础设施进行DDoS
- 伪造某个IP进行查询, 攻击这个目标IP
- 查询放大,响应报文比查询报文大
- 效果有限
相关文章:
计算机网络——12DNS
DNS DNS的必要性 IP地址标识主机、路由器但IP地址不好记忆,不便于人类用使用(没有意义)人类一般倾向于使用一些有意义的字符串来标识Internet上的设备存在着“字符串”——IP地址的转换的必要性人类用户提供要访问机器的“字符串”名称由DN…...
vue3-应用规模化-工具链
工具链 项目脚手架 Vite Vite 是一个轻量级的、速度极快的构建工具,对 Vue SFC 提供第一优先级支持。作者是尤雨溪,同时也是 Vue 的作者! 要使用 Vite 来创建一个 Vue 项目,非常简单: (推荐)…...
EasyExcel动态列导出
测试代码地址:https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/easyexcel/dynamiccolumn 官方文档:https://easyexcel.opensource.alibaba.com/docs/2.x/quickstart/write 一、实现方式 1、根据需要导出的列…...
JAVA面试题11
什么是Java的访问修饰符,并列出它们的作用。 Java的访问修饰符包括public、private、protected和默认。它们的作用如下: public: 可以被任何其他类访问。 private: 只能被所在类访问,其他类无法访问。 protected: 可以被所在类和同一个包中的…...
工业数据采集的时间不确定性及PLC-Recorder的通道偏移功能
目录 一、缘起 二、效果展示 三、设置方法 四、小结 一、缘起 大家都知道采集软件首先要尽可能还原数据原来的状态,给用户提供一个可以信赖的参考。但是,数据采集又有很多随机因素:Windows是一个周期不严格的系统、以太网通讯有时间波动、…...
十五、Object 类
文章目录 Object 类6.1 public Object()6.2 toString方法6.3 hashCode和equals(Object)6.4 getClass方法6.5 clone方法6.6 finalize方法 Object 类 本文为书籍《Java编程的逻辑》1和《剑指Java:核心原理与应用实践》2阅读笔记 java.lang.Object类是类层次结构的根…...
计算机网络——06分组延时、丢失和吞吐量
分组延时、丢失和吞吐量 分组丢失和延时是怎样发生的 在路由器缓冲区的分组队列 分组到达链路的速率超过了链路输出的能力分组等待排到队头、被传输 延时原因: 当当前链路有别的分组进行传输,分组没有到达队首,就会进行排队,从…...
[C#] 如何调用Python脚本程序
为什么需要C#调用python? 有以下几个原因需要C#调用Python: Python拥有丰富的生态系统:Python有很多强大的第三方库和工具,可以用于数据科学、机器学习、自然语言处理等领域。通过C#调用Python,可以利用Python的生态系…...
AlmaLinux更换鼠标样式为Windows样式
文章目录 前言先看看条件与依赖第一步:测试最终效果第二步:使用CursorXP修改鼠标样式CurosrXP安装CursorXP使用 第三步:Linux端环境搭建与命令执行UbuntuFedora其他系统均失败 第四步:应用主题 前言 只不过是突发奇想,…...
BUGKU-WEB 留言板
题目描述 题目无需登录后台!需要xss平台接收flag, http协议需要http协议的xss平台打开场景后界面如下: 解题思路 看到此类的题目,应该和存储型xss有关,也就是将恶意代码保存到服务器端即然在服务器端,那就…...
Linux之动静态库
今天我们来讲动静态库! 首先我们来粗粒度的划分一下动态库和静态库。 动态库就是只有一份库文件,所有想用该库的文件与改库文件建立链接,然后使用。这样可以提高代码复用率,避免重复拷贝产生没必要的内存消耗。 静态库…...
手机常亮屏不自动灭屏
一. 基础知识介绍 1. WakeLock(休眠锁) WakeLock用于保持设备的唤醒状态,有些情况下,即时用户不操作App,我们也需要保持屏幕处于唤醒状态,以保证用户体验,比如视频类APP和计步类APP,…...
JVM(1)基础篇
1 初始JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 Java源代码执行流程如下: 分为三个步骤: 编写Java源代码文件。 使用…...
相机图像质量研究(12)常见问题总结:光学结构对成像的影响--炫光
系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…...
[OPEN SQL] 删除数据
DELETE语句用于删除数据库表中的数据 本次操作使用的数据库表为SCUSTOM,其字段内容如下所示 航班用户(SCUSTOM) 需要删除以下数据 1.删除单条数据 语法格式 DELETE <dbtab> FROM <wa>. DELETE <dbtab> FROM TABLE <itab>. DELETE FROM &…...
C语言第二十五弹---字符函数和字符串函数(上)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…...
寒假学习记录16:Express框架(Node)
后续会补充 1.引入express 1.先下载express框架 创建一个package.json格式的文件,里面写入 {"dependencies": {"express": "~4.16.1" //express版本号} } 然后打开终端输入 npm i 2.引入express模块 const express require(&quo…...
机器学习中的10种非线性降维技术对比总结
降维意味着我们在不丢失太多信息的情况下减少数据集中的特征数量,降维算法属于无监督学习的范畴,用未标记的数据训练算法。 尽管降维方法种类繁多,但它们都可以归为两大类:线性和非线性。 线性方法将数据从高维空间线性投影到低维空间(因此…...
[ubuntu]split命令分割文件
split 命令 $ split --help Usage: split [OPTION]... [INPUT [PREFIX]] Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is x. With no INPUT, or when INPUT is -, read standard input.Mandatory argume…...
《小强升职记:时间管理故事书》阅读笔记
目录 前言 一、你的时间都去哪儿了 1.1 你真的很忙吗 1.2 如何记录和分析时间日志 1.3 如何找到自己的价值观 二、无压工作法 2.1 传说中的“四象限法则 2.2 衣柜整理法 三、行动时遇到问题怎么办? 3.1 臣服与拖延 3.2 如何做到要事第一? 3.…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
深入理解 React 样式方案
React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
