后端每日一题 2:DNS 解析过程
本文首发于公众号:腐烂的橘子
本文梗概:
- DNS 是什么,有什么作用
- 一条 DNS 记录是什么样的
- DNS 域名解析原理
- DNS 服务器如何抵御攻击
DNS 是什么,有什么作用
DNS(Domain Name System)是一种应用层协议,用于映射域名和 ip 地址。
为什么要做映射呢?就像可以用身份证号来对应一个人,也可以用电话对应一个人,但打招呼时我们不会说:“138xxxxxx,早上好”,而是会用名字来打招呼。同样的道理,人们在访问网站时希望用更容易被记住的域名,比如 www.baidu.com,而不是 213.22.345.33。但是对于网络设备而言,使用 ip 地址却比域名更友好,因为 ip 地址的格式更规范,更容易被机器理解。
DNS 最重要的作用是提供域名解析服务,除此之外,它的作用还有:
- 规范主机名:www.baidu.com 可能只是一个别名,它可能会有一个规范主机名 relay1.east.baidu.com,别名比规范主机名更容易记忆,客户端可通过别名获取到规范主机名和 ip 地址
- 邮件服务器别名:邮件服务器为了让自己的域名更号机,可能也会有一个邮件服务器别名,这个别名允许和 web 服务器一致,比如你开发的邮件服务器和 web 服务器可以都使用 www.enterprise.com 这个域名
- 负载均衡:DNS 服务器可能会非常繁忙,所以一个域名可能对应若干个 ip 地址,这时会返回一个 ip 地址的集合,由于客户总是向集合里的第一个 ip 地址建立连接并传输数据,因此 DNS 服务器通过控制返回 ip 的顺序来达到负载均衡的目的
一条 DNS 记录是什么样的
与 DNS 记录相关的,最常见到的就是域名解析里的 A 记录和 CNAME 记录了,如下:
【域名解析记录图】
DNS 记录就是 DNS 服务器内保存的信息,是一个 4 元祖:
(Name, Value, Type, TTL)
这里比较好理解,Name 是域名,Value 是 ip,Type 是记录的类型,包含上图中的 A 记录和 CNAME 记录,TTL 是过期时间,代表这条记录多久后会失效。
我们可以使用 nslookup -debug www.rottenorange.cn 来查找 www.rottenorange.cn 相关的 DNS 记录:
de@MacBook-Pro ~ % nslookup -debug www.rottenorange.cn
Server: 26.26.26.53
Address: 26.26.26.53#53
------------
QUESTIONS:
www.rottenorange.cn, type = A, class = IN
ANSWERS:
-> www.rottenorange.cn
canonical name = z1ming.github.io.
ttl = 505
-> z1ming.github.io
internet address = 185.199.110.153
ttl = 3320
-> z1ming.github.io
internet address = 185.199.109.153
ttl = 3320
-> z1ming.github.io
internet address = 185.199.108.153
ttl = 3320
-> z1ming.github.io
internet address = 185.199.111.153
ttl = 3320
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
www.rottenorange.cn canonical name = z1ming.github.io.
Name: z1ming.github.io
Address: 185.199.110.153
Name: z1ming.github.io
Address: 185.199.109.153
Name: z1ming.github.io
Address: 185.199.108.153
Name: z1ming.github.io
Address: 185.199.111.153
可以看到我们搜到了多条 A 类型的记录,对应多个 ip 地址,以及一个权威 DNS 记录 z1ming.github.io.。
Type 枚举有:
- Type = A:主机名到 ip 地址,如 (relayl.bar.foo.com, 145.37.93.126, A)
- Type = CNAME:主机名到规范主机名,如 (foo.com, relay1.bai.foo.com, CNAME)
- Type = NS:域名到权威 DNS 主机名,如 (foo.com, dns.foo.con1, NS)
- Type = MX:别名为 Name 的邮件服务器的规范主机名,如 (foo.com, mail.bar.foo.com, MX)
DNS 域名解析原理
假设你输入 www.baidu.com,如果都不命中缓存,会经历如下 4 类 DNS 服务器:
- 本地 DNS 服务器:客户端会先请求本地 DNS 服务器,如果不命中缓存,则请求根服务器
- 根服务器(DNS Root Nameserver):全球共 400 多台,由 13 个不同的组织管理(大部分是老美),根服务器的列表可以在 https://www.iana.org/domains/root/servers 里查到,如下图[1]。回到正题,请求根服务器会返回顶级域名权威服务器的 ip,对于 www.baidu.com,.com 保存在顶级域名服务器,根服务器返回 .com 所在的顶级域名服务器的 ip 地址
- 顶级域名服务器(DNS TLD Nameserver):根据返回的 ip 查询顶级域名服务器,它保存了 baidu.com 所在的权威服务器的 ip
- 权威服务器(DNS Authoritative Nameserver):这里保存了 www.baidu.com 域名对应的 ip,权威服务器将这个 ip 返回给本地 DNS 服务器,本地 DNS 服务器将这个 ip 返回给客户端,至此完成了一次 DNS 查询
DNS 服务器如何抵御攻击
常见的攻击方式有 DDoS(Distributed Denial-of-Service)泛洪攻击和中间人攻击,不过由于 DNS 服务器都有自己的本地缓存,客户端也有自己的浏览器缓存,所以至今还没有大规模 DNS 服务瘫痪的情况。
分布式拒绝服务 (DDoS) 攻击是拒绝服务 (DoS) 攻击的一个子类。[2]Dos 是使用一个服务器攻击,DDoS 是利用多个服务器组成一个僵尸网络来攻击。它们的特点是发送大量需要密集资源的数据包从而使网络出现大量超时、甚至瘫痪的情况。
所以 DNS 的 DDoS 攻击就是僵尸网络向 DNS 服务器发送大规模分组,使得大部分 DNS 请求得不到回答,比如向根域名服务器、或顶级域名服务器发起攻击。
而中间人攻击就是攻击者截获到 DNS 请求,并返回伪造的回答,这样客户端无感知地访问到了被攻击者重定向的网站。通常这种方式难以实现,因为中间人攻击要求截获分组或控制住服务器。[3]
参考
- https://www.iana.org/domains/root/servers
- https://www.imperva.com/learn/ddos/denial-of-service/
- 计算机网络:自顶向下方法(原书第七版)
后端每日一题 2:DNS 解析过程的更多相关文章
- DNS解析过程
参考: http://www.maixj.net/ict/dns-chaxun-9208 http://blog.it985.com/8389.html DNS(Domain Name System) ...
- DNS解析过程和DNS挟持
1.DNS解析过程详解 1).在浏览器中输入一个域名,例如www.tmall.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析, ...
- (转)DNS解析过程详解
DNS解析过程详解 原文:http://blog.csdn.net/crazw/article/details/8986504 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的 ...
- DNS解析过程详解(转载)
DNS解析过程详解(转载) DNS Domain Name System 域名系统,它就是根据域名查出IP地址. 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址ww ...
- 浏览器与DNS解析过程
浏览器解析 1.地址栏输入地址后,浏览器检查自身DNS缓存 地址栏输入chrome://net-internals/#dns 查看. 2.浏览器缓存中未找到,那么Chrome会搜索操作系统自身的DNS ...
- DNS解析过程详解
先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点 ...
- DNS解析过程和域名收敛、域名发散、SPDY应用
前段时间项目要做域名收敛,糊里糊涂的完成了,好多原理不清晰,现在整理搜集下知识点. 域名收敛的目的是什么?简单来说就是域名解析慢.那为什么解析慢?且听下文慢慢道来. 什么是DNS? DNS( Doma ...
- 转载:DNS解析过程详解
2015-09-20 此好文是转载,如有侵权联系我,立马删掉 DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com. ...
- DNS解析过程详解【转】
转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www. ...
- DNS解析过程--笔试答题版
在运维笔试的时候,回答DNS解析的过程,不能写一大堆,一是不美观,二是浪费时间,应该怎么写呢?我觉得这样写比较好. 1.客户端:chche----hosts 2.DNS服务器:cache---递归-- ...
随机推荐
- 【论文项目复现1】漏洞检测项目复现_VulDeeLocator
复现环境 Ubuntu 20.04 CPU: 32G GPU: 11G 2080ti Source2slice: clang-6.0 + llvm + dg (dg: https://github.c ...
- 【Java基础知识】东软面试(一面)
01 面向对象的特征 封装:隐藏部分对象的属性和实现细节,以不同的访问级别来保护对象内部的数据,防止外部程序的不当访问,对外提供公开的接口.[私有的属性,共有的方法] 继承:子类自动共享父类数据和方法 ...
- .Net单元测试xUnit和集成测试指南(1)
引言 在现代化的软件开发中,单元测试和集成测试是确保代码质量和可靠性的关键部分.ASP.NET Core 社区内提供了强大的单元测试框架,xUnit 是其中之一,它提供了简单.清晰和强大的测试功能,编 ...
- #莫队,bitset#洛谷 3674 小清新人渣的本愿
题目 分析 只要做到\(O(n\sqrt{n})\)的时间复杂度就可以了 考虑莫队,首先乘号就是枚举\(x\)的约数\(d\), 判断\(d\)和\(\frac{x}{d}\)是否同时出现, 再考虑差 ...
- #dp#洛谷 5774 [JSOI2016]病毒感染
题目 分析 此题肯定不是绿题,哪有这么恶心的dp 试想这样的情形:假设当 JYY 第一次抵达村庄 \(i\),未作救治并直接前往了另一个村庄.那么由于 \(i\) 村庄的人们求生心切, 一旦当 JYY ...
- Docker学习路线1:介绍
Docker是什么? Docker是一个开源平台,通过将应用程序隔离到轻量级.可移植的容器中,自动化应用程序的部署.扩展和管理.容器是独立的可执行单元,封装了运行应用程序所需的所有必要依赖项.库和配置 ...
- 深入了解 Spring Boot 核心特性、注解和 Bean 作用域
Spring Boot 是什么? Spring Boot 是基于 Spring Framework 构建应用程序的框架,Spring Framework 是一个广泛使用的用于构建基于 Java 的企业 ...
- RabbitMQ 10 头部模式
头部模式是根据头部信息来决定的,在发送的消息中是可以携带一些头部信息的(类似于HTTP),可以根据这些头部信息来决定路由到哪一个消息队列中. 定义配置类. import org.springframe ...
- 在python中通过面向对象方式,实现烤地瓜案例
例子:烤地瓜,不同时间,反馈不同状态,并给不同状态地瓜加入不同味道 烤地瓜时间 0-3分钟,生的 4-7分钟,半生不熟的 8-12分钟,熟了 12分钟以上,已烤熟,糊了 用户可以按自己的意思添加调料 ...
- input 去除默认样式
前言 如何不自己写框架,基本用不上. 正文 input{ border: 0px; background-color: none; outline: none; } input:focus{ outl ...