阿粉带你解锁 DNS 协议

简介: 大家应该都知道,当我访问一个网址的时候,实际上我是在访问一个 IP 地址。那为什么不记 IP 地址,反而要去访问一个网站名字呢,比如谷歌。阿粉想了想,现在有多少网站,数不过来对吧?就算数的过来, 直接访问那么多的 IP 地址,恐怕也是记不过来的。你如果跟我说,你能记过来,我怀疑你在吹牛,而我又没有证据。接下来有没有新的疑问?既然我在访问一个网址的时候,实际上是在访问一个 IP 地址,那浏览器怎么知道会到这个 IP 地址呢?所以这就是 DNS 协议要做的事情:根据一个名称,我就可以访问到具体的 IP 地址。

大家应该都知道,当我访问一个网址的时候,实际上我是在访问一个 IP 地址。那为什么不记 IP 地址,反而要去访问一个网站名字呢,比如谷歌。

阿粉想了想,现在有多少网站,数不过来对吧?就算数的过来, 直接访问那么多的 IP 地址,恐怕也是记不过来的。

你如果跟我说,你能记过来,我怀疑你在吹牛,而我又没有证据。

接下来有没有新的疑问?既然我在访问一个网址的时候,实际上是在访问一个 IP 地址,那浏览器怎么知道会到这个 IP 地址呢?

所以这就是 DNS 协议要做的事情:根据一个名称,我就可以访问到具体的 IP 地址。

DNS 服务器

每个人上网,都会访问网址,都会用到 DNS ,所以它是非常重要的,但这也是对它的挑战。因为只要它一旦出现了故障,那么整个互联网都几乎会瘫痪,因为你访问不到网址了嘛。

此外,上网的人分布在全世界,如果 DNS 服务器部署在一个地方,那么造成的访问时长会非常长,这样来分析的话, DNS 服务器一定得是高可用,高并发,分布式才能满足需求。

基于这样的需求,就有了树状的层次结构。

DNS 解析流程

在全世界各地,都需要 DNS 来进行解析,所以为了提高 DNS 的解析性能,很多网络都会就近部署 DNS 缓存服务器,那么它是如何解析的呢?

  • 1 ,当你想要访问 www.google.com 的时候,你的电脑就会发出一个 DNS 请求,询问 www.google.com 是什么,发给本地域名服务器(本地 DNS ).如果是通过 DHCP 来配置的话,那本地的 DNS 就是由你的网络服务商,比如电信,移动等自动分配。
  • 2 ,本地 DNS 收到来自客户端的请求之后,就开始找,看看能不能找到 www.google.com ,如果可以的话,那就直接返回这个网址对应的 IP 地址。但是如果没有呢,那它就往上一级问。但是它的老大不直接进行域名解析,而是给出一个解决方案。
  • 3 ,它的老大发现请求是 .com,就说这个网址是由 .com 区域管理的,我帮你介绍一下,你去问问它。
  • 4 ,本地 DNS 就转向老大帮忙给介绍的那位朋友,说哥们,你能告诉我 www.google.com 的 IP 地址嘛,但是这个哥们人家负责的是 .com 的所有,你问的是 google.com 的,它这里可能没有,然后就回复说,我这里没有,但是我知道谁负责 google.com 这一块的内容,你问问他可以吧。
  • 5 ,接下来,本地 DNS 就转向那位负责 google.com 的负责人,向人家询问,您好,请问 www.google.com 对应的 IP 地址是啥呀?我的小主现在想要访问这个网址。
  • 6 ,那位负责人在这里经过查询之后,就告诉本地 DNS , www.google.com 的 IP 地址是什么,此时本地 DNS 拿到 IP 地址之后,返回给客户端,这样客户端就和目标建立了连接。

62.jpg

负载均衡

在上面的介绍中,那是一次 DNS 递归查询过程,因为本地 DNS 会全权为客户端效劳,所以只需要坐着等结果就行了。其实在这个过程中, DNS 除了可以通过名称映射为 IP 地址之外,还可以做另外一件事情,就是负载均衡。

什么意思呢?举个例子哈:阿粉最喜欢吃的就是鸭血粉丝了,南京的鸭血粉丝超有名,但是因为出差的缘故,目前我在北京,那我就在北京找一家店就去吃就行了,你在杭州,那你在杭州找家店吃就行。咱们不用非要大老远跑到南京去吃。这就是负载均衡(我好像暴露了自己吃货的本性…)

投射到 DNS 上来,它也可以做成这样。

DNS 可以做内部的负载均衡:

比如一个应用想要访问数据库,其实我们应该给它配置这个数据的 IP 地址才对,但是如果这个数据库因为某种原因,宕机之后,我该怎么办?需要将所有的用到这台数据库的 IP 地址,都进行更换。

如果使用域名的话,就比较简单了,这台数据库宕机之后,没问题,我只需要在 DNS 服务器中,将域名映射为新的 IP 地址就可以了。

这个过程,极大的降低了人力和时间成本。

DNS 可以做全局负载均衡:

像淘宝, QQ ,微信这种应用,为了保证高可用,肯定会将这些应用部署在多个机房,每个地方都会有自己的 IP 地址。当用户要在淘宝上买东西的时候,那么这个 IP 地址就可以轮询访问多个数据中心。如果在广州的某个数据中心因为某种原因挂掉了,只需要在 DNS 服务器里面,将这个数据中心对应的 IP 地址删除就可以了,接下来就不会再去询问这个数据中心了。

此外,为了让客户体验比较好,访问速度比较快,肯定是希望在北京的用户访问北京的数据中心,在上海的用户,访问上海的数据中心。

这就是全局负载均衡的概念。

63.jpg

最后,总结一下:

  • DNS 是网络世界的地址簿,可以通过域名查地址,因为域名服务器是按照树状结构来组织的,所以域名查找使用的是递归方法,并且通过缓存的方式来增强性能;
  • 在域名和 IP 的映射过程中,可以给应用做简单的负载均衡,也可以根据地址来做全局的负载均衡。
相关文章
|
XML 监控 网络协议
云深处绝影四足机器人协议学习解析
本文详细介绍并解析了云深处绝影X20四足机器人的通信协议,包括TCP服务端端口号、基于Service的请求/响应通信机制、通信帧结构、消息类型、常见的通信示例如获取状态和导航请求,以及运动控制的参数和命令。文中还提出了对协议中某些未明确说明或可能存在的问题的疑惑。
540 0
云深处绝影四足机器人协议学习解析
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
593 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
885 3
|
10月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
582 14
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
635 2
|
存储 缓存 网络协议
DNS协议详解
通过本文,您可以全面了解DNS协议的各个方面,从而更好地理解和应用这一重要的互联网基础服务。
1964 44
|
11月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
608 5
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
902 3
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
588 3
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
1330 3