当前位置: 首页 > news >正文

【计算机网络】DNS原理介绍

文章目录

  • DNS提供的服务
  • DNS的工作机理
    • DNS查询过程
    • DNS缓存
  • DNS记录和报文
    • DNS记录
    • DNS报文
    • 针对DNS服务的攻击

DNS提供的服务

DNS,即域名系统(Domain Name System)
提供的服务

  1. 一种实现从主机名到IP地址转换的目录服务,为Internet上的用户应用程序以及其他软件而非用户提供的功能
  2. 存储主机别名,实现主机别名到规范主机名以及主机的IP地址之间的转换
  3. 存储邮件服务器别名,实现邮件服务器别名到邮件服务器的规范主机名和IP地址
  4. 实现负载平衡,DNS存储一个规范主机名到一个IP地址集合的映射

DNS是什么
一个由分层的DNS服务器(DNS server)实现的分布式数据库
一个使得主机能查询分布式数据库的应用层协议
DNS运行在UDP之上,使用主机的53端口
主机名和IP地址的引入
使用主机名(hostname)或IP地址(IP address)来标识因特网中众多的主机
hostname: 便于记忆,用户使用
IP address: 定长的的、有着层次结构,路由器使用
IP地址
由4个字节组成,每个字节都被句点分隔开
有着严格的层次结构,从左到右扫描时能得到主机在Internet中的位置信息
为什么说DNS协议是应用层协议

  1. 使用客户-服务器模式运行在通信的端系统之间
  2. DNS报文是通过端到端运输协议实现端系统之间的传输的
    举个例子
    用户在浏览器上请求URL www. someschool. edu/index. html,获得www. someschool. edu的IP地址的过程展示
    image.png

术语介绍
规范主机名(canonical hostname)、主机别名(host aliasing)、邮件服务器别名(mail server aliasing)、负载平衡(load distribution)
host aliasing相较于canonical hostname方便了用户的记忆,mail server aliasing也是同样的道理
负载平衡的实现
繁忙的站点会被冗余地分布在多台服务器上,每台服务器都会有不同的IP地址。于是一个站点会对应到一个IP地址集合,这个IP地址集合存储在DNS数据库中,在用户访问站点时,DNS客户端发出DNS请求,对应的整个IP地址集合进行响应,而在回答中DNS会循环集合中的IP地址次序。而客户只向IP地址排在最前面的服务器发送请求。从而实现了服务器的负载分配平衡

DNS的工作机理

使用带有层级结构的分布式的数据库存储主机名到IP地址的映射
集中式设计DNS的问题
DNS的集中式设计:在因特网上只使用一个DNS服务器,该服务器包含所有的映射。客户直接将所有查询直接发往单一的DNS服务器,同时该DNS服务器直接对所有的查询客户做出响应。

  1. 单点故障(a single point of failure):该DNS服务器的崩溃将带来整个Internet的瘫痪
  2. 通信容量(traffic volume):该DNS服务器的负载很重
  3. 远距离的集中式数据库(distant centralized database):距离远的网络将有巨大的时延
  4. 维护(maintenance):一个服务器需要为所有的Internet主机保留记录

DNS服务器的层次结构
image.png

没有一台DNS服务器拥有Internet上所有主机的映射

3种类型的DNS服务器:根DNS服务器、顶级域(Top-Level Domain, TLD) DNS服务器和权威DNS服务器。

  1. 根DNS服务器:提供TLD服务器的IP地址
  2. 顶级域服务器:TLD服务器提供了权威DNS服务器的IP地址。分为通用顶级域服务器和国家的顶级域服务器
  3. 权威DNS服务器:存储主机名与IP地址之间的映射记录

本地DNS服务器
local DNS server
每个ISP有一台本地DNS服务器(默认名字服务器)
主机与DNS服务器关系:当主机与某个ISP连接时,该ISP提供一台主机的IP地址(ISP给该主机分配地址),该主机具有一台或多台其本地DNS服务器的IP地址(客户端-服务器架构)
作用:本地DNS服务器可以视作一个代理,当host发起DNS请求某一域名对应IP地址时,该DNS请求将首先被发往本地DNS服务器,本地DNS服务器再将其转发到DNS服务器层次结构中

DNS查询过程

递归查询(recursive query):所有查询都以自己的名义来请求,在查询的传递过程中,本地DNS服务器、根DNS服务器、顶级域服务器、权威DNS服务器都是在做同样的事情,即查询指定域名对应的IP地址
迭代查询(iterative query):在查询过程中,每一级的服务器都在做自己所能做的,即缩小查询的范围,根DNS服务器返回查询域名对应的顶级域IP,顶级域服务器返回查询结果对应的权威域IP
举个例子
image.png
需求:主机cse. nyu. edu 想知道主机 gaia. cs. umass. edu的IP地址——共需要发送4份查询报文,4份回答报文

  1. 主机cse. nyu. edu向它的本地DNS服务器dns. nyu. edu发送一个包含被转换主机名的DNS查询报文
  2. 本地DNS服务器将该报文转发到根DNS服务器。根DNS服务器注意到其edu前缀并向本地DNS服务器返回负责edu的TLD的IP地址列表
  3. 本地DNS服务器则向这些TLD服务器之一发送查询报文。该TLD服务器注意到umass. edu前缀,并用权威DNS服务器的IP地址进行响应
  4. 本地DNS服务器直接向dns. umass. edu重发查询报文,dns. umass. edu用gaia. cs. umass. edu的IP地址进行响应
    从cse.nyu.edu到dns.nyu.edu为递归查询,后续的三个查询均为迭代查询

展示一个查询链中所有查询均为递归查询的例子
image.png

DNS缓存

DNS caching
目的:改善时延性能、减少Internet中的DNS报文数量
原理:当某DNS服务器接收到一个DNS回答时,该映射将被此DNS服务器缓存
作用:当对某主机名的查询在本地DNS服务器中已经缓存了对应的主机名/IP地址对时,则该本地DNS服务器能直接提供要求的IP地址,而不必进行任何查询。此外,本地DNS服务器也能缓存TLD服务器的IP地址,使得在大多数查询中根DNS服务器都被绕过了

DNS记录和报文

DNS记录

资源记录
Resource Record, RR
主机名到IP地址映射的存储形式
一条RR是一个四元组,形式化为(Name, Value, Type, TTL)
其中TTL是该RR的生存时间,即其多久之后会被删除
RR有四种类型,Type决定了Name和Value的值,进而决定该种RR记录的功能

  1. 若Type=A,则Name为hostname,Value为对应的IP address,即标准的hostname到IP address的映射
  2. 若Type=NS,则Name为一个域,Value为知道如何获得该域中主机IP地址的权威DNS服务器的hostname(这里的域并不局限于最小的权威域,可以是顶级域,子顶级域等等,在迭代查询的过程中,如根DNS服务器、TLD服务器返回的均一条NS RR+一条A RR)
  3. 若Type=CNAME,则Name为aliasing,Value为该主机的规范主机名
  4. 若Type=MX,则Name为邮件服务器的aliasing,Value为该邮件服务器的规范主机名。通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名

DNS报文

image.png
DNS中仅有查询和回答两种报文,且两种报文格式相同
手动发送DNS查询报文:在终端使用nslookup程序
在DNS数据库中插入记录
在注册登记机构(registrar)注册域名,如networkutopia. com,注册者需要提供基本和辅助权威DNS服务器的名字和IP地址。registrar则会把一条NS RR和一条A RR输入TLD com服务器中,将一条对应web服务的A RR和一条对应邮件服务的MX RR输入注册者的权威DNS服务器中

针对DNS服务的攻击

分布式拒绝服务(DDoS)
带宽洪泛攻击,攻击root DNS服务器,攻击TLD服务器

实现Web用户重定向到攻击者的Web站点
中间人攻击,攻击者截获来自主机的请求并返回伪造的回答
DNS毒害攻击,,攻击者向一台DNS服务器发送伪造的回答,诱使服务器在它的缓存中接收伪造的记录

相关文章:

【计算机网络】DNS原理介绍

文章目录 DNS提供的服务DNS的工作机理DNS查询过程DNS缓存 DNS记录和报文DNS记录DNS报文针对DNS服务的攻击 DNS提供的服务 DNS,即域名系统(Domain Name System) 提供的服务 一种实现从主机名到IP地址转换的目录服务,为Internet上的用户应用程序以及其他…...

Docker的基础命令

目录 一、镜像操作 1、搜索镜像 2、下载镜像 3、查看镜像 3.1 查看下载到本地的所有镜像 3.2 查看单个镜像的详细信息 4、为镜像添加新的标签 5、镜像导出和导入到本地 5.1 镜像导出到本地 5.2 导入镜像 6、删除镜像 7、批量删除镜像 8、上传镜像 8.1 官网注册登录…...

提取项目依赖包的licenses

skywalking-eyes工具可以快速提取出licenses...

Vue项目自动转换px为rem-高保真还原设计图

前端开发中还原设计图的重要性毋庸置疑,目前来说应用最多的应该也还是使用rem。然而很多人依然还是处于刀耕火种的时代,要么自己去计算rem值,要么依靠编辑器安装插件转换。 而本文的目标就是通过一系列的配置后,在开发中可以直接使…...

rman备份到远程服务器

rman备份到远程服务器磁盘 原因 业务数据量较大,数据库服务器上无足够地空间存放rman备份,磁盘扩容申请不批。无奈采取nfs远程备份 环境信息 ip操作系统备份目录远程备份服务器192.168.3.130Centos7.9rmanbak数据库服务器192.168.3.132:1521Centos7.…...

数据结构与算法

目录 数据结构与算法 为什么要学习数据结构和算法? 常见的数据结构 常用算法 插入排序 一、概念及其介绍 二、适用说明 三、过程图示 希尔排序 一、概念及其介绍 二、适用说明 三、过程图示 归并排序 一、概念及其介绍 二、适用说明 三、过程图示 …...

【Web3】DAO相关的基础知识

这里写目录标题 DAO 的基础概念为什么需要 DAO?DAO 的种类 DAO 的运作方式知名 DAO 的介绍Bankless DAOSeeDAO DAO 的生态全景图分类治理框架DAO 的工具 DAO 众筹平台介绍 - JuiceBoxDAO 投票治理介绍 - SnapshotDAO 贡献 & 激励 - POAPDAO 信息管理 - NotionDA…...

一文教你学会ArcGIS Pro地图设计与制图系列全流程(3)

ArcGIS Pro做的成果图及系列文章目录: 系列文章全集: 《一文教你学会ArcGIS Pro地图设计与制图系列全流程(1)》《一文教你学会ArcGIS Pro地图设计与制图系列全流程(2)》《一文教你学会ArcGIS Pro地图设计与…...

用于大规模 MIMO 检测的近似消息传递 (AMP)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

复杂SQL解析

文章目录 背景表SQL关键字分析具体Sql注意点补充:select的字段,也可以带有计算逻辑 背景表 1、sale_log as result: 主表,大部分字段都是取自这个表 2、sale_num as sale:需要从这个表获取真实销量sale_num字段 3、schedule as…...

js中哪些地方会用到window?

前言 Window 对象是JavaScript中的顶层对象,它代表了浏览器中打开的窗口或者标签页。浏览器中打开的每一个窗口/标签页都会有一个对应的 Window 对象。在浏览器中,全局作用域的 this 就是指向 Window 对象。 正文 在 JavaScript 中,window 对…...

KITTI raw_data数据集百度云下载

1. 百度云链接 链接:https://pan.baidu.com/s/1YNzfDoJomKOZhlVUr2eEOA?pwdtfh3 提取码:tfh3 –来自百度网盘超级会员V6的分享 2. 资料来源 https://www.cvlibs.net/datasets/kitti/raw_data.php 命令行执行./raw_data_downloader.sh #!/bin/bashfiles(2011_…...

(3) OpenCV图像处理kNN近邻算法

目录 一、介绍 1、类通过Matplotlib显示 2、Matplotlib显示效果 二、通过KNN近邻对新成员进行分类例程...

手撸RPC【gw-rpc】

文章目录 基于 Netty 的简易版 RPC需求分析简易RPC框架的整体实现协议模块 📖自定义协议 🆕序列化方式 🔢 服务工厂 🏭服务调用方 ❓前置知识——动态代理🕳️Proxy类InvocationHandler 接口 RPC服务代理类内嵌Netty客…...

【Linux】:Kafka组件介绍

目录 环境简介 一、消息 二、主题 三、分区 四、副本 五、生产者 六、消费者 七、消费者组 八、offsets【偏移量】 环境简介 Linux内核:Centos7 Kafka版本:3.5.1 执行命令的目录位置:Kafka安装目录的bin目录下:/usr/loca…...

Redis〔篇〕

redis怎么做到双写一致性呢? 这个是要分情况的 业务要是对一致性要求不是很高的话可以使用延时双删,要强一致的话需要双写一致性。 Redis数据持久化? redis是有两种数据持久化方式的,一种RDB一种AOF rdb是redis数据快照&#x…...

龙芯2K1000核心板在智能座舱行业产品方案-迅为电子

迅为2K1000核心板是一款高性能的处理器,适用于智能座舱行业。它具备多核CPU、高级图像处理和丰富的接口选项,可用于开发先进的智能座舱解决方案,提高乘坐体验、安全性和便捷性。以下是2K1000处理器在智能座舱行业中的产品方案。 高清晰度显…...

2023/9/20 -- C++/QT

时钟: widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QDateTime> #include <QLabel> #include <QTimer> #include <QDebug>QT_BEGIN_NAMESPACE namespac…...

WordPress主题DUX v8.2源码下载

新增产品分类左侧多级分类折叠显示 新增网站默认字体对 MiSans 和 HarmonyOS Sans 的支持 新增顶部左上角显示登录注册的模块开关&#xff0c;且支持原生登录方式 新增手机端导航菜单的关闭按钮 新增文章内容中标题二的强化展示 新增全站禁止复制、右键和选择的操作 新增文章内…...

c++图像的边缘检测

图像的边缘检测 cv::Canny 是 OpenCV 中用于进行边缘检测的函数&#xff0c;特别是用于检测图像中的边缘。Canny 边缘检测是一种广泛使用的技术&#xff0c;它能够识别图像中的边缘&#xff0c;这些边缘通常表示对象之间的边界或图像中的显著特征 void cv::Canny(const cv::M…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...