【计算机网络】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服务器发送伪造的回答,诱使服务器在它的缓存中接收伪造的记录

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最快的包管理器--pnpm创建vue项目完整步骤

1.用npm全局安装pnpm npm install -g pnpm 2.在要创建vue项目的包下进入cmd,输入: pnpm create vue 3.输入项目名字,选择Router,Pinia,ESLint,Prettier之后点确定 4.cd到创建好的项目 ,安装依赖 cd .\刚创建好的项目名称\ p…

Redis配置和优化

Redis配置和优化 一 、Redis介绍二、关系数据库和非关系数据库2.1、关系型数据库2.2、 非关系型数据库2.3、 非关系型数据库的产生背景2.4、 关系型数据库和非关系型数据库区别2.5、 总结 三、缓存概念3.1、系统缓存3.2、 缓存保存位置及分层结构3.2.1、DNS缓存3.2.2、 应用层缓…

笔试练习day01

目录 一、选择题 1、格式化输出 2、逻辑判断--短路原则 3、赋值语句 4、左移、异或 二、编程题 1、组队竞赛 2、删除公共字符 一、选择题 1、格式化输出 知识点:格式化输出,%m.ns 2、逻辑判断--短路原则 知识点: else和最近的if匹…

第一次作业题解

第一次作业题解 P5717 【深基3.习8】三角形分类 思路 考的是if()的使用,还要给三条边判断大小 判断优先级&#xff1a; 三角形&#xff1f;直角、钝角、锐角等腰等边 判断按题给顺序来 代码 #include <stdio.h> int main() {int a 0, b 0, c 0, x 0, y 0, z 0…

排序篇(二)----选择排序

排序篇(二)----选择排序 1.直接选择排序 基本思想&#xff1a; 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 直接选择排序: ​ 在元素集合array[i]–array[…

pytorch函数reshape()和view()的区别及张量连续性

目录 1.view() 2.reshape() 3.引用和副本&#xff1a; 4.区别 5.总结 在PyTorch中&#xff0c;tensor可以使用两种方法来改变其形状&#xff1a;view()和reshape()。这两种方法的作用是相当类似的&#xff0c;但是它们在实现上有一些细微的区别。 1.view() view()方法是…

C++指针常量,常量指针以及, 引用和指针的区别

const修饰指针有三种情况 1. const修饰指针 --- 常量指针 2. const修饰常量 --- 指针常量 3. const即修饰指针&#xff0c;又修饰常量 c int main() {int a 10;int b 10;//const修饰的是指针&#xff0c;常量指针&#xff0c;指针指向可以改&#xff0c;指针指向的值不…

分享10个必备的VS Code技巧和窍门,提高你的开发效率

目录 前言 1. 时间线视图&#xff1a;本地源代码控制 2. 自动保存&#xff1a;不再需要按Ctrl S 3. 使用命令面板进行任何操作 4、快速转到文件 5. 快速跳转指定行 6. 快速删除该行 7. 享受使用流畅的光标进行打字 8. 快速格式化代码 9. 使用多光标编辑功能节省时间…

数据计算-第15届蓝桥杯第一次STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第154讲。 第15届蓝桥杯第1次STEMA测评已于2023年8月20日落下帷幕&#xff0c;编程题一共有6题&#xff0c;分别如下&a…

详解Avast Driver Updater:电脑驱动更新工具的利器还是多余的软件?

亲爱的读者朋友们&#xff0c;你是不是经常为电脑的驱动问题而烦恼&#xff1f;如果是的话&#xff0c;你可能会对这款软件——Avast Driver Updater 电脑驱动更新工具感兴趣。但在你决定尝试之前&#xff0c;不妨先和我一起深入探讨一下它的优点、缺点以及它适用的使用场景。 …

pytorch第一天(tensor数据和csv数据的预处理)lm老师版

tensor数据&#xff1a; import torch import numpyx torch.arange(12) print(x) print(x.shape) print(x.numel())X x.reshape(3, 4) print(X)zeros torch.zeros((2, 3, 4)) print(zeros)ones torch.ones((2,3,4)) print(ones)randon torch.randn(3,4) print(randon)a …

使用U3D、pico开发VR(二)——添加手柄摇杆控制移动

一、将unity 与visual studio 相关联 1.Edit->Preference->External tool 选择相应的版本 二、手柄遥控人物转向和人物移动 1.添加Locomotion System组件 选择XR Origin&#xff1b; 2.添加Continuous Move Provider&#xff08;Action-based&#xff09;组件 1>…

10.1 File类

前言&#xff1a; java.io包中的File类是唯一一个可以代表磁盘文件的对象&#xff0c;它定义了一些用于操作文件的方法。通过调用File类提供的各种方法&#xff0c;可以创建、删除或者重命名文件&#xff0c;判断硬盘上某个文件是否存在&#xff0c;查询文件最后修改时间&…

12、Kubernetes中KubeProxy实现之iptables和ipvs

目录 一、概述 二、iptables 代理模式 三、iptables案例分析 四、ipvs案例分析 一、概述 iptables和ipvs其实都是依赖的一个共同的Linux内核模块&#xff1a;Netfilter。Netfilter是Linux 2.4.x引入的一个子系统&#xff0c;它作为一个通用的、抽象的框架&#xff0c;提供…

Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法&#xff0c;不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

Java后端接口编写流程

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Java后端接口编写流程 Java后端接口编写流程&#xff0c;更具业务逻辑编写Java后端接口&#xff0c;提供给前端访问 实现逻辑流程 POJO&#xff1a;实体类编写 Data B…

黑豹程序员-架构师学习路线图-百科:Java

1、简介 Java是Sun公司推出的一门面向对象的编程语言&#xff0c;它是一种通过解释方式来执行的语言。 它出身名门&#xff0c;简化C而来&#xff0c;但并未照搬。继承了C语言各种优点&#xff0c;却摒弃了C里的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单…

CocosCreator3.8研究笔记(二十三)CocosCreator 动画系统-动画编辑器相关功能面板说明

国庆假期&#xff0c;闲着没事&#xff0c;在家研究技术~ 上一篇&#xff0c;我们介绍了动画剪辑、动画组件以及基本的使用流程&#xff0c;感兴趣的朋友可以前往阅读&#xff1a; CocosCreator 动画系统-动画剪辑和动画组件介绍。 今天&#xff0c;主要介绍动画编辑器相关功能…

【进阶C语言】动态内存分配

本章大致内容介绍&#xff1a; 1.malloc函数和free函数 2.calloc函数 3.realloc函数 4.常见错误案例 5.笔试题详解 6.柔性数组 一、malloc和free 1.malloc函数 &#xff08;1&#xff09;函数原型 函数参数&#xff1a;根据用户的需求需要开辟多大的字节空间&#xff…