DNS中有哪些值得学习的架构设计 (二)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: DNS中有哪些值得学习的架构设计 (二)

加入多级缓存

对于高并发读多写少的场景,加入缓存几乎就是标配。

DNS也不例外,它加了缓存,而且不止一层。

从在浏览器的搜索框中输入URL。它会先后访问浏览器缓存操作系统的缓存/etc/hosts最近的DNS服务器缓存 。如果都找不到,才是到根域,顶级(一级)域,二级域等DNS服务器进行查询请求。

加入缓存后的DNS查询顺序

于是请求过程就成了下图这样。可以看到上面提到的好几有缓存的地方我都加了个绿色的小文件图标,优先在缓存里做查询。

加入缓存后的DNS查询过程

由于缓存了上面树状结构的信息,最近的DNS服务器也不再需要每次都从根域 开始查起。比如在缓存里能找到baidu.com的服务器IP,就直接跳到二级域服务器上做查找就好了。

正因为多级缓存的存在,每一层实际接收到的请求都大大减少了。并且每个人日常访问的网站也就那么几个,所以大部分时候都能命中缓存直接返回IP地址。

简单小结下。

DNS的设计中,通过层次结构将服务进行拆分 ,流量分散到多个服务器中。

又通过加入多级缓存 ,让每个层级实际接收到的请求大大减少,因此大大提高了系统的性能。

两点 ,是我们做业务开发的过程中可以参考的优秀设计。

还有一点 ,是我们大概率学不来的,叫任播 ,它也为DNS实现高并发处理能力提供了重要支持,我会把它放到放到下一篇文章展开聊聊。

协议格式

DNS是个域名解析系统,而运行在这套系统上的协议,就叫DNS协议

和HTTP类似,DNS协议也是个应用层协议

DNS是应用层协议

下图是它的报文格式。

DNS报文

字段太多,很晕?这就对了。

我们就挑几个重点的说说。

Transsaction ID 是事务ID,对于一次请求 和这个请求对应的应答 ,他们的事务ID是一样的,类似于微服务系统中的log_id

flag字段 是指标志位,有2个Byte,16个bit,需要关注的是QROpCode, RCode

  • QR 用来标志这是个查询还是响应报文,0是查询,1是响应。
  • OpCode 用来标志操作码,正常查询都是0,不管是域名查ip,还是ip查域名,都属于正常查询 。可以粗暴的认为我们平时只会看到0
  • RCode 是响应码,类似于HTTP里的404, 502 这样的status code。用来表示这次请求的结果是否正常。0是指一切正常。1是指报文格式错误,2服务域名服务器内部错误。

Queries 字段,是指你实际查询的内容。这里其实包含三部分信息,Name, Type, Class

查询的内容分成三部分信息

  • Name 可以放域名或者IP。比如你要查的是baidu.com这个域名对应的IP,那里面放的就是域名 ,反过来通过IP查对应的域名,那Name字段里放的就是IP
  • Type 是指你想查哪种信息,比如你想查这个域名对应的IP地址是什么,那就是填A(address),如果你想查这个域名有没有其他别名,就填CNAME(Canonical Name)。如果你想查 xiaobaidebug@gmail.com对应的邮箱服务器地址是什么(比如 gmail.com),那就填MX(Mail Exchanger)。除此之外还有很多类型,下面是常见的Type表格。

  • • Class字段就比较有意思了,你可以简单的认为,我们只会看到它填INInternet)。其实DNS协议本来设计出来是考虑到可能会有更多的应用场景的,比如这里还能填CHHS。大家甚至都不需要知道它们是什么含义,因为随着时间的发展,这些都已经成化石了,我们知道这个字段的唯一作用,可能 就是可以在面试的时候可以随意装个x,深藏功与名。

Answers 字段,从名字可以看出,跟Queries对应,一问一答 。作用是返回查询结果,比如通过域名查对应的IP地址,这个字段里就会放入具体的IP信息。

抓包

原理看完了,来抓个包吧。

我们打开wireshark。然后执行

dig www.baidu.com

此时操作系统会发出DNS请求,查询 www.baidu.com对应的IP地址。

DNS_Query

上面的图里是DNS查询(request)的内容,可以看到它是应用层的协议,传输层用的是UDP协议 进行数据传输。截图里标红的部分,也就是上面提到的需要重点关注的报文字段内容。其中flag字段是按bit展示的,因此抓包里进行了分行展示。

接下来再看下响应(response)的数据包内容。

DNS_Response

可以看到事务ID (Transaction ID)跟DNS请求 报文是一致的。并且Answers字段里带有两个IP地址。试了下,两个IP地址都是可以正常访问的。

总结

  • • DNS是非常优秀的高并发分布式系统,通过层次结构将服务进行拆分 ,流量分散到多个服务器中。又通过加入多级缓存 ,让每个层级实际接收到的缓存大大减小,因此大大提高了系统的性能。这两点在做业务开发的过程中是可以借鉴的。
  • • 插上网线通网时,本机通过DHCP协议获得DNS服务器的地址。
  • • 根域服务器的IP会以配置的形式加载到每一台DNS服务器当中。因此访问任意一台DNS服务器都能轻松找到根域对应的IP地址。

最后

最后给大家留下两个问题。

DNS基于UDP协议

  • • 从抓包可以看出,DNS在传输层上使用了UDP协议,那它只用UDP吗?
  • • 上面提到,DNS的IPV4根域名 只有13个,这里面其实有不少都部署在漂亮国,那是不是意味着,只要他们不高兴了,切断我们的访问,我们的网络就得瘫痪了呢?


相关文章
|
4天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
23 6
|
4天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
13 1
|
4天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
5天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
13天前
|
边缘计算 自动驾驶 5G
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
16天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
44 10
|
13天前
|
消息中间件 编解码 开发者
深入解析 Flutter兼容鸿蒙next全体生态的横竖屏适配与多屏协作兼容架构
本文深入探讨了 Flutter 在屏幕适配、横竖屏切换及多屏协作方面的兼容架构。介绍了 Flutter 的响应式布局、逻辑像素、方向感知、LayoutBuilder 等工具,以及如何通过 StreamBuilder 和 Provider 实现多屏数据同步。结合实际应用场景,如移动办公和教育应用,展示了 Flutter 的强大功能和灵活性。
84 6
|
13天前
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
34 1
|
15天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
37 1

相关产品

  • 云解析DNS
  • 推荐镜像

    更多