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

news2024/11/28 23:46:39

文章目录

  • 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服务器发送伪造的回答,诱使服务器在它的缓存中接收伪造的记录

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

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

相关文章

网页采集工具-免费的网页采集工具

在当今数字化时代,网页采集已经成为了众多领域的必备工具。无论是市场研究、竞争情报、学术研究还是内容创作,网页采集工具都扮演着不可或缺的角色。对于许多用户来说,寻找一个高效、免费且易于使用的网页采集工具太不容易了。 147SEO工具的强…

ElasticSearch更新数据后查不到的问题

一、前言 上一篇文章还是2个星期前写的,近段时间有点懒,本来这篇也不太愿意动笔写,但这两天关注数据,发现新的一年已经收获了4个粉丝,首先感谢大家的关注,我以后还是会尽量多写一点。这篇文章讲一下今天我…

从零手搓一个【消息队列】BrokerServer 创建核心类, 数据库设计与实现

文章目录 一、创建核心类1, 交换机2, 交换机类型3, 队列4, 绑定5, 交换机转发 & 绑定规则6, 消息7, 消息属性 二、数据库设计1, 使用 SQLite2, 使用 MyBatis2.1, 创建 Interface2.2, 创建 xml 文件 三、硬盘管理 -- 数据库1, 创建 DataBaseManager 类2, init() 初始化数据库…

【ONE·Linux || 多线程(一)】

总言 多线程:进程线程基本概念、线程控制、互斥与同步。 文章目录 总言1、基本概念1.1、补充知识1.1.1、堆区细粒度划分1.1.2、虚拟地址到物理空间的转化 1.2、如何理解线程、进程1.2.1、如何理解线程?1.2.2、如何理解进程? 1.3、实践操作1.…

职业规划,什么是职业兴趣 - 我喜欢做什么?

能够在工作岗位上面做出成绩的人,都是结合自身兴趣,对职业进行合理规划的那一类。尤其是步入中年以后,能够创造出巨大价值的人,无一例外都是喜欢自己职业的人。没有将兴趣融入工作的人,只能够忍受默默无闻地活着&#…

liunx的攻击

1.场景和分析 2.病毒分析 3.解决步骤

Linux学习记录——삼십일 socket编程---TCP套接字

文章目录 TCP套接字简单通信1、服务端1、基本框架2、获取连接 2、客户端3、多进程4、多线程5、线程池6、简单的日志系统7、守护进程8、其它 TCP套接字简单通信 本篇gitee 学习完udp套接字通信后,再来看TCP套接字。 四个文件tcp_server.hpp, tcp_serve…

黑豹程序员-放大招-架构师学习路线图

文章目录 全栈软件架构师技术路线六环能力图一、开发基础二、增强软件三、海量数据四、软件智能五、并发增强六、桌面开发 全栈软件架构师技术路线 六环能力图 作为软件开发,我们的任务就是开发软件业务系统。 如果要做好一个软件系统需要的技能是非常多的。我归纳…

分布式链路追踪--SkyWalking7.0.0+es7.0.0

分布式链路追踪–SkyWalking ​ 微服务的出现,的确解决了一些业务痛点,但是也造成了新的问题比如随着调用链的拉长,如果想要知道请求为什么这么慢,这个请求到底经历了哪些环节,又依赖了哪些东西,在微服务架…

基于Java的婚纱影楼管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Bluespec SytemVerilog 握手协议接口转换

01、引言 由于接口控制信号上的差异,要实现Bluespec SystemVerilog(BSV)生成的代码和外部Verilog代码之间的正确交互是一件比较麻烦同时容易出错的事情。在BSV中, 模块之间的交互都是基于Action或ActionValue这两类method完成。下图展示了使用BSV设计的某一模块的接…

综合应用QGIS软件,实现商场选址分析

一、实验要求 ①离城市主要交通道路50米内,保证商场交通的便利性。 ②在居民区100米内,便于居民步行到商场。 ③距离停车场100米内,便于顾客停车。 ④距离其他商场500米范围之外,减少竞争压力。 二、实验数据 ①城市地区主要…

机器学习算法基础--层次聚类法

文章目录 1.层次聚类法原理简介2.层次聚类法基础算法演示2.1.Single-linkage的计算方法演示2.2.Complete-linkage的计算方法演示2.3.Group-average的计算方法演示 3.层次聚类法拓展算法介绍3.1.质心法原理介绍3.2.基于中点的质心法3.3.Ward方法 4.层次聚类法应用实战4.1.层次聚…

Java21 新特性

文章目录 1. 概述2. JDK21 安装与配置3. 新特性3.1 switch模式匹配3.2 字符串模板3.3 顺序集合3.4 记录模式(Record Patterns)3.5 未命名类和实例的main方法(预览版)3.6 虚拟线程 1. 概述 2023年9月19日 ,Oracle 发布了…

【Linux】完美解决ubuntu18.04下vi不能使用方向键和退格键

今天在刚安装完ubuntu18.04,发现在使用vi命令配置文件时使用方向键并不能移动光标,而是出现一堆奇怪的英文字母,使用退格键也不能正常地删除内容,用惯了CentOS的我已经感觉到ubuntu没有centos用着丝滑,但是没办法&…

C++ -- 学习系列 std::deque 的原理与使用

一 deque 是什么? std::deque 是 c 一种序列式容器,其与 vector 类似,其底层内存都是连续的,不同的地方在于, vector 是一端开口,在一端放入数据与扩充空间,而 deque 是双端均开口,都可以放…

lv5 嵌入式开发-10 信号机制(下)

目录 1 信号集、信号的阻塞 2 信号集操作函数 2.1 自定义信号集 2.2 清空信号集 2.3 全部置1 2.4 将一个信号添加到集合中 2.5 将一个信号从集合中移除 2.6 判断一个信号是否在集合中 2.7 设定对信号集内的信号的处理方式(阻塞或不阻塞) 2.8 使进程挂起(…

NLP 01(介绍)

一、NLP 自然语言处理 (Natural Language rrocessing,简称NLP) 是计算机科学与语言学中关注于计算机与人类语言间转换的领域。 1.1 发展 规则:基于语法 自然语言处理的应用场景: 语音助手 机器翻译 搜索引擎 智能问答

Windows下安装MySQL8详细教程

Windows下安装MySQL8详细教程 因为需要在Windows下安装MySQL8的数据库,做一个临时数据库环境。 1.准备软件 使用社区版本,下载地址如下: https://dev.mysql.com/downloads/mysql/ 使用8.0.16版本,需要在归档中查找 选择版本&a…

pysimpleGui 使用之sg.SaveAs使用

SaveAs与FileBrowse使用一样需要给指定target参数,保存路径 layout [ [ sg.FileBrowse( button_text“请选择单个文件”, # 按钮文本 target“single_path”, # 把选择后的路径保存到key为input_path的对象 # file_types((“All Files”, “.”),), # 默认筛选全部…