首页 > 其他分享 >后端每日一题 2:DNS 解析过程

后端每日一题 2:DNS 解析过程

时间:2024-04-27 23:11:54浏览次数:23  
标签:www ip 每日 域名 DNS 服务器 解析 com

本文首发于公众号:腐烂的橘子

本文梗概:

  • 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]

参考

  1. https://www.iana.org/domains/root/servers
  2. https://www.imperva.com/learn/ddos/denial-of-service/
  3. 计算机网络:自顶向下方法(原书第七版)

标签:www,ip,每日,域名,DNS,服务器,解析,com
From: https://www.cnblogs.com/rottenorange-cn/p/18162735

相关文章

  • NTLM 中继攻击的底层原理 ,SMB 中继攻击的底层原理,LDAPS中继攻击的底层原理,Kerberos 中
    NTLM中继攻击是一种利用NTLM(NTLANManager)协议的安全漏洞进行攻击的技术。NTLM是Windows系统中用于验证用户身份的一种认证协议,它在本地网络环境中广泛使用。在NTLM中继攻击中,攻击者通过中间人的方式截获NTLM认证请求,并将其转发到目标系统上。然后,攻击者可以利......
  • 初中中考阅读理解难题一网打尽!句子结构深度解析+答案揭秘,助你轻松冲刺高分!-012
    PDF格式公众号回复关键字:ZKYDT012原文1Richardfoundthebirdintheforest,didn’the?解析1Richard,found发现了,thebird这只鸟,intheforest在森林里,didn’the?不是吗理查德在森林里发现了这只鸟,不是吗?2Hesawastrangebirdinabush.他在灌木丛......
  • ndnsim协议栈faceid的规律
    face——中文译作“面”节点可能有不同的物理接口,如无线接口,有线接口。有线接口也可能有多个,例如交换机都有多个有线网口。但是无线接口大多只有一个。基站有多个天线,但是向无线信道发送信号的接口也是只有一个。在ndn中发送兴趣包可以指定faceid,可以让ndn网络层指定转发走哪个......
  • 探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
    DTD是文档类型定义(DocumentTypeDefinition)的缩写。DTD定义了XML文档的结构以及合法的元素和属性。为什么使用DTD通过使用DTD,独立的团体可以就数据交换的标准DTD达成一致。应用程序可以使用DTD来验证XML数据的有效性。内部DTD声明如果DTD在XML文件内声......
  • GIS中XYZ瓦片的加载流程解析与实现
    1.什么是XYZ瓦片XYZ瓦片是一种在线地图数据格式,常见的地图底图如Google、OpenStreetMap等互联网的瓦片地图服务,都是XYZ瓦片,严格来说是ZXY规范的地图瓦片ZXY规范的地图瓦片规则如下:将地图全幅显示时的图片从左上角开始,往下和往右进行切割,切割的大小默认为256*256像素,左上角的......
  • 后端每日一题 1:说一下三次握手
    本文首发于公众号:腐烂的橘子三次握手的流程第1步-初始连接请求SYN(Synchronize)服务端状态LISTEN,客户端向服务端发送一个SYN标志位的报文段(TCPsegment)这个报文段包含初始序列号x,以及最大报文段大小等字段客户端发送报文后,状态设置为SYN_SEND第2步-服务端回......
  • 【每日一题】爱生气的书店老板
    1052.爱生气的书店老板有一个书店老板,他的书店开了 n 分钟。每分钟都有一些顾客进入这家商店。给定一个长度为n的整数数组customers,其中customers[i]是在第i分钟开始时进入商店的顾客数量,所有这些顾客在第i分钟结束后离开。在某些时候,书店老板会生气。如果书店老......
  • dns服务器
    DNS查询方式dns服务器有两种查询方式:递归查询:在递归查询中,客户端向本地DNS服务器发送一个域名解析请求,并要求该DNS服务器负责完成整个解析过程。如果本地DNS服务器拥有所请求的域名解析信息,则它会直接回复客户端,并负责向其他DNS服务器查询所需的信息。如果本地DNS服务器没......
  • 【python】记录一次python发送json数据到go服务端,服务端解析失败问题
    【python】记录一次python发送json数据到go服务端,服务端解析失败问题背景:在做性能测试时,python把采集到的性能数据通过post回传到服务端,服务端用go实现,服务端是将接收的json通过json.Unmarshal反序列化为对应的结构体,但在实现时一直提示数据类型错误的问题问题代码python发送请......
  • 爬虫2(页面解析和数据提取)
    爬虫2(页面解析和数据提取)处理HTML文件,常用Xpath,先将HTML文件转换成XML文档,然后用Xpath查找HTML节点或元素。一、HTML与XML二、XPath1、XPath路径表达式三、Lxml库html=etree.HTML(text)#将字符串转换成HTML格式#print(etree.tostring(html))#补全HTMLres......