DNS总结

一、DNS

(1)简介

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

DNS 协议也是应用层的协议,DNS 使用客户-服务器模式运行在通信的端系统之间,在通信的端系统之间通过下面的端到端运输协议来传送 DNS 报文。

DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

(2)DNS服务器

1、本地域名服务器LDNS
每个电脑里面都设置了本地DNS服务器(简称LDNS)地址,需要的时候,就向LDNS发出请求,LDNS在网上问权威域名服务器(简称权威DNS)得到答案。

2、 权威域名服务器
负责对请求作出权威的回答。权威DNS中存储着记录,最常见的3种:A记录(记录某域名和其IP的对应),NS记录(记录某域名和负责解析该域的权威DNS),CNAME记录(负责记录某域名及其别名)。权威能直接回答的,就回A记录;需要其他权威DNS回答的,就回NS记录,然后LDNS再去找其他权威DNS问;如果该记录是别名类型的,就回CNAME,LDNS就会再去解析别名。

3、顶级域名服务器(Top-Level Domain, TLD)

对于每个顶级域名比如 com、org、net、edu 和 gov 和所有的国家级域名 uk、fr、ca 和 jp 都有 TLD 服务器或服务器集群。TDL 服务器提供了权威 DNS 服务器的 IP 地址。

4、根域名服务器

全球只有13台(这13台IPv4根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国,由美国互联网机构Network Solutions运作。其余12个均为辅根服务器,其中9个在美国,2个在欧洲(位于英国和瑞典),1个在亚洲(位于日本)。

13 台根服务器无法应对全球互联网用户的查询请求,使用IP任播技术为这13台服务器部署了上千台镜像服务器,其中我国境内有F、I、J、K、L服务器的镜像。

二、 DNS工作原理

(1)DNS 工作概述

1、分布式、层次数据库

首先分布式设计首先解决的问题就是 DNS 服务器的扩展性问题,因此 DNS 使用了大量的 DNS 服务器,它们的组织模式一般是层次方式,并且分布在全世界范围内。没有一台 DNS 服务器能够拥有因特网上所有主机的映射。相反,这些映射分布在所有的 DNS 服务器上。

2、DNS 层次结构

根 DNS 服务器 、顶级域 DNS 服务器、权威 DNS 服务器

(2)DNS 查询步骤

通常情况下 DNS 会将查找的信息缓存在浏览器或者计算机本地中,如果有相同的请求到来时,就不再会进行 DNS 查找,而会直接返回结果。

通常情况下,DNS 的查找会经历下面这些步骤

1)用户在浏览器中输入网址 www.example.com 并点击回车后,查询会进入网络,并且由 DNS 解析器进行接收。

2)DNS 解析器会向根域名发起查询请求,要求返回顶级域名的地址。

3)根 DNS 服务器会注意到请求地址的前缀并向 DNS 解析器返回 com 的顶级域名服务器(TLD) 的 IP 地址列表。

4)然后,DNS 解析器会向 TLD 服务器发送查询报文TLD 服务器接收请求后,会根据域名的地址把权威 DNS 服务器的 IP 地址返回给 DNS 解析器。

5)最后,DNS 解析器将查询直接发送到权威 DNS 服务器权威 DNS 服务器将 IP 地址返回给 DNS 解析器DNS 解析器将会使用 IP 地址响应 Web 浏览器

1、DNS 解析器

DNS 解析器进行 DNS 查询的主机和软件叫做 DNS 解析器,用户所使用的工作站和个人电脑都属于解析器。一个解析器要至少注册一个以上域名服务器的 IP 地址。DNS 解析器是 DNS 查找的第一站,其负责与发出初始请求的客户端打交道。解析器启动查询序列,最终使 URL 转换为必要的 IP 地址。

DNS 递归查询和 DNS 递归解析器不同,该查询是指向需要解析该查询的 DNS 解析器发出请求。DNS 递归解析器是一种计算机,其接受递归查询并通过发出必要的请求来处理响应。

2、DNS 查询类型

DNS 查找中会出现两种类型的查询。

1)递归查询

在递归查询中,DNS 客户端要求 DNS 服务器(一般为 DNS 递归解析器)将使用所请求的资源记录响应客户端,或者如果解析器无法找到该记录,则返回错误消息。

2)迭代查询

在迭代查询中,如果所查询的 DNS 服务器与查询名称不匹配,则其将返回对较低级别域名空间具有权威性的 DNS 服务器的引用。然后,DNS 客户端将对引用地址进行查询。此过程继续使用查询链中的其他 DNS 服务器,直至发生错误或超时为止。

(3)DNS 缓存

DNS 缓存(DNS caching) 有时也叫做 DNS 解析器缓存,它是由操作系统维护的临时数据库,它包含有最近的网站和其他 Internet 域的访问记录。也就是说, DNS 缓存只是计算机为了满足快速的响应速度而把已加载过的资源缓存起来,再次访问时可以直接快速引用的一项技术和手段。

1、DNS 缓存的工作流程

在浏览器向外部发出请求之前,计算机会拦截每个请求并在 DNS 缓存数据库中查找域名,该数据库包含有最近的域名列表,以及 DNS 首次发出请求时 DNS 为它们计算的地址。

2、DNS 缓存方式

DNS 数据可缓存到各种不同的位置上,每个位置均将存储 DNS 记录,它的生存时间由 TTL(DNS 字段) 来决定。

1)浏览器缓存

现如今的 Web 浏览器设计默认将 DNS 记录缓存一段时间。因为越靠近 Web 浏览器进行 DNS 缓存,为检查缓存并向 IP 地址发出请求的次数就越少。发出对 DNS 记录的请求时,浏览器缓存是针对所请求的记录而检查的第一个位置。

2)操作系统内核缓存

在浏览器缓存查询后,会进行操作系统级 DNS 解析器的查询,操作系统级 DNS 解析器是 DNS 查询离开你的计算机前的第二站,也是本地查询的最后一个步骤。

三、DNS 记录

 DNS 分布式数据库的所有 DNS 服务器存储了资源记录(Resource Record, RR),RR 提供了主机名到 IP 地址的映射。每个 DNS 回答报文中会包含一条或多条资源记录。RR 记录用于回复客户端查询。

资源记录是一个包含了下列字段的 4 元组

(Name, Value, Type, TTL)
RR 会有不同的类型,下面是不同类型的 RR 汇总表

DNS 有两种报文,一种是查询报文,一种是响应报文,并且这两种报文有着相同的格式

四、DNS 安全

几乎所有的网络请求都会经过 DNS 查询,而且 DNS 和许多其他的 Internet 协议一样,系统设计时并未考虑到安全性,并且存在一些设计限制,这为 DNS 攻击创造了机会。

(1)DNS 攻击

1、 Dos 攻击

这种攻击的主要形式是使重要的 DNS 服务器比如 TLD 服务器或者根域名服务器过载,从而无法响应权威服务器的请求,使 DNS 查询不起作用。

2、 DNS 欺骗

通过改变 DNS 资源内容,比如伪装一个官方的 DNS 服务器,回复假的资源记录,从而导致主机在尝试与另一台机器连接时,连接至错误的 IP 地址。

3、DNS 隧道

这种攻击使用其他网络协议通过 DNS 查询和响应建立隧道。攻击者可以使用 SSH、TCP 或者 HTTP 将恶意软件或者被盗信息传递到 DNS 查询中,这种方式使防火墙无法检测到,从而形成 DNS 攻击。

4、 DNS 劫持

在 DNS 劫持中,攻击者将查询重定向到其他域名服务器。这可以通过恶意软件或未经授权的 DNS 服务器修改来完成。尽管结果类似于 DNS 欺骗,但这是完全不同的攻击,因为它的目标是名称服务器上网站的 DNS 记录,而不是解析程序的缓存。

5、DDoS 攻击

也叫做分布式拒绝服务带宽洪泛攻击,这种攻击形式相当于是 Dos 攻击的升级版

(2)防御 DNS

防御 DNS 威胁的最广为人知的方法之一就是采用 DNSSEC 协议。

1、DNSSEC

DNSSEC 又叫做 DNS 安全扩展,DNSSEC 通过对数据进行数字签名来保护其有效性,从而防止受到攻击。它是由 IETF 提供的一系列 DNS 安全认证的机制。DNSSEC 不会对数据进行加密,它只会验证你所访问的站点地址是否有效。

2、DNS 防火墙

有一些攻击是针对服务器进行的,这就需要 DNS 防火墙的登场了,DNS 防火墙是一种可以为 DNS 服务器提供许多安全和性能服务的工具。DNS 防火墙位于用户的 DNS 解析器和他们尝试访问的网站或服务的权威名称服务器之间。

防火墙提供 限速访问,以关闭试图淹没服务器的攻击者。如果服务器确实由于攻击或任何其他原因而导致停机,则 DNS 防火墙可以通过提供来自缓存的 DNS 响应来使操作员的站点或服务正常运行。

除了上述两种防御手段外,本身 DNS 区域的运营商就会采取进步一措施保护 DNS 服务器,比如配置 DNS 基础架构,来防止 DDoS 攻击。

五、问题

(1)全世界有多少根DNS?
13个,其中10个在美国,英国和瑞典各1个,日本1个。

有被问到中国大陆有没有根DNS。回答亚洲有一台,中国有F-L根镜像。

(2)根DNS的名字和IP都是什么?
在这个网址:

https://www.internic.net/domain/named.root

打开可以看到,里面有13个根的名字和IP,其名字从A.root-servers.net到M.root-servers.net。

A开头那个简称A根,是主根,其他12个(B、C、D、E、F、G、H、I、J、K、L、M)是辅根。

(3)为什么域名解析用UDP协议

因为UDP快啊!UDP的DNS协议只要一个请求、一个应答就好了。而使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手。但是UDP协议传输内容不能超过512字节。不过客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。

(4)为什么区域传送用TCP协议

因为TCP协议可靠性好啊!你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办?

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

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

相关文章

谈谈在.NET Core中使用Redis和Memcached的序列化问题

前言在使用分布式缓存的时候,都不可避免的要做这样一步操作,将数据序列化后再存储到缓存中去。序列化这一操作,或许是显式的,或许是隐式的,这个取决于使用的package是否有帮我们做这样一件事。本文会拿在.NET Core环境…

牛客练习赛52-记录

正题 比赛链接:https://ac.nowcoder.com/acm/contest/1084#question 成绩 T1:T1:T1:数数 题目大意 给出nnn,求∑i1n∑j1n(i∗j)\sum_{i1}^n \sum_{j1}^n (i*j)i1∑n​j1∑n​(i∗j) 和 ∏i1n∏j1n(i∗j)\prod_{i1}^n\prod_{j1}^n(i*j)i1∏n​j1∏n​(i∗j) 解题…

Windows Developer Day - Windows AI Platform

本次 Windows Developer Day,最值得期待的莫过于 Windows AI Platform 了,可以说是千呼万唤始出来。观看直播的开发者们,留言最多的也是 Windows AI Platform。下面结合微软提供的展示过程,文档和 Git Sample 来详细分析一下。基础…

EF Core:一统SQL和NoSQL数据库

推出EF Core的初衷之一,就是开发出一种可在很少甚至不更改代码的情况下使用SQL和NoSQL数据库的模型。Microsoft正向此目标迈出第一步,发布了用于Azure Cosmos DB的实验性EF提供程序(provider)。据EF 2.1路线图介绍:Cos…

Java 并发总结——进程与线程

一、进程与线程 (1)线程与进程 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程实体由程序段, 数据段 PCB(进程控制块)组成。 线程可以看做轻量级进程,…

.NET Core使用skiasharp文字头像生成方案(基于docker发布)

一、问题背景目前.NET Core下面针对于图像处理的库微软并没有集成,在.NET FrameWork下我们已经习惯使用System.Drawing类库做简单的图像处理,到了.NET Core下一脸懵逼的我,只能百度谷歌看看有没啥解决方案,好在网上资料也多&#…

jzoj6375-华灵「蝶妄想」【结论题】

正题 题目大意 n∗mn*mn∗m填(((或者)))。求一个方案使得最多的行和列匹配。 解题思路 我们先考虑nnn或mmm为奇数,那么显然奇数的肯定不必配,那么就只需要考虑行或列即可。 若nnn和mmm都为偶数时 我们发现在边边的行列不可能都匹配上,那就…

C# - Span 全面介绍:探索 .NET 新增的重要组成部分

假设要公开特殊化排序例程,以就地对内存数据执行操作。可能要公开需要使用数组的方法,并提供对相应 T[] 执行操作的实现。如果方法的调用方有数组,且希望对整个数组进行排序,这样做就非常合适。但如果调用方只想对部分数组进行排序…

C#中DateTime的缺陷与代替品DateTimeOffset

C#中的DateTime在逻辑上有个非常严重的缺陷:> var d DateTime.Now;> var d2 d.ToUniversalTime();> d d2false> d.Equals(d2);false在C#交互模式中输入以上代码,可以发现尽管一个是本地时间(d),一个是U…

重磅消息-Service Fabric 正式开源

微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的Service Fabric开源的情况以及当前的情况,当时开源了Service Fabric的.NET SDK部分,社区一直在期盼着Ser…

.NET Core 配置Configuration杂谈

前言.NET Core 在配置文件的操作上相对于.NET Framework做了不少改变,今天来聊一聊。关于Configuration的Package都是以Microsoft.Extensions.Configuration开头的支持多种方式的配置,包括内存、Json文件、XML文件等等,今天我们主要用Json格式…

秘密:从程序员到领导者的微妙之处

读到一篇关于程序员、领导力和领导者的好文章,翻译过来分享下。借用一句文中的话:“好吧,我只是个程序员,为什么需要领导?” ,读完你就知道了。做一个优秀的领导者可能不是大部分程序员会立即认同的东西。许…

老衣的微服务实践简要指引2017版

这是老衣在2017年5月份总结的,适用于中小团队跨平台微服务开发的实践指引(简化版)。若有有不当之处,欢迎指点更正因本文涉及到大量第三方库或工具,详细学习和了解需要参考相关官方文档。若您在使用Mac电脑,…

Entity Framework Core 之数据库迁移

前言最近打算用.NET Core写一份开源的简易CMS系统,来练练手所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到.特意整理了几个细节.正文1.数据库迁移先了解一下什么是"数据库迁移",它提供了一种方法,可以逐步将Code First…

随机挑战#4记录

正题 van♂van♂van♂成记录 题目 P2052−[NOI2011]P2052-[NOI2011]P2052−[NOI2011]道路修建【树】 博客链接:https://blog.csdn.net/Mr_wuyongcong/article/details/102249021 P2796−FacerP2796-FacerP2796−Facer的程序【dpdpdp】 博客链接:https://blog.csdn.net/Mr_wuy…

Visual Studio 2017 15.7 Preview 1 发布

上周 Visual Studio 2017 15.6 版和 Visual Studio for Mac 7.4 版已发布,今天 VS 发布了下一个次要更新的第一个预览:Visual Studio 2017 15.7。本预览的主要亮点包括:提高生产率更好的诊断额外的C 开发改进更好的Android和iOS环境管理通用 …

部署用于生产的Exceptionlees(一个强大易用的日志收集服务)

Exceptionless简介Exceptionless从翻译来看是无异常的意思,其实它收集了很多异常信息。大家可以把他看做事一个非常好用的日志收集服务。还提供了,多组织、多项目。它是一个开源项目,作者也非常的热心,项目地址https://github.com…

ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅、通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现。接下来对于事件驱动型架构的讨论,就需要结合一个实际的架构案例…

如何看待微软新开源的Service Fabric?

本人曾在Service Fabric (SF)项目中做了几年,这次很兴奋能看到它的开源。短短两天已经有1300多个关注了。我看了一下开源的代码,真是满满的干货,200多万行C代码,所有最核心的协议算法都在里面。但是,不得不承认&#x…

RabbitMQ教程C#版 “Hello World”

先决条件 本教程假定RabbitMQ已经安装,并运行在localhost标准端口(5672)。如果你使用不同的主机、端口或证书,则需要调整连接设置。从哪里获得帮助 如果您在阅读本教程时遇到困难,可以通过邮件列表联系我们。1.介绍Rab…