阿粉带你解锁 DNS 协议

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 大家应该都知道,当我访问一个网址的时候,实际上我是在访问一个 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 的映射过程中,可以给应用做简单的负载均衡,也可以根据地址来做全局的负载均衡。
相关文章
|
2月前
|
XML 监控 网络协议
云深处绝影四足机器人协议学习解析
本文详细介绍并解析了云深处绝影X20四足机器人的通信协议,包括TCP服务端端口号、基于Service的请求/响应通信机制、通信帧结构、消息类型、常见的通信示例如获取状态和导航请求,以及运动控制的参数和命令。文中还提出了对协议中某些未明确说明或可能存在的问题的疑惑。
29 0
云深处绝影四足机器人协议学习解析
|
9天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
46 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
2月前
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
74 2
|
3月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
72 4
|
5天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
13 0
深入解析 http 协议
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
|
19天前
|
消息中间件 安全 Kafka
Kafka支持SSL/TLS协议技术深度解析
SSL(Secure Socket Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。这些协议在传输层对网络连接进行加密,确保数据在传输过程中不被窃取或篡改。
38 0
|
2月前
|
域名解析 监控 网络协议
利用DNS协议的弱点
【8月更文挑战第17天】
41 1
|
2月前
|
安全 数据库连接 数据库
Python深度解析:上下文协议设计与应用技巧
在Python编程中,资源管理是一个常见且重要的问题。无论是文件操作、网络连接还是数据库事务,都需要确保资源在使用后能够正确地释放或恢复到初始状态。Python通过上下文管理器提供了一种优雅的方式来处理资源的获取与释放,使得代码更加简洁、安全。
|
2月前
|
域名解析 缓存 网络协议
揭秘DNS协议:从'http://www.example.com'到IP地址的奇幻旅程,你不可不知的互联网幕后英雄!
【8月更文挑战第4天】在互联网的广袤空间里,每台设备都有唯一的IP地址,但记忆这些数字组合并不直观。因此,DNS(域名系统)作为关键桥梁出现,将易记的域名转换为IP地址。DNS协议工作于应用层,支持用户通过域名访问资源。DNS系统包含多级服务器,从根服务器到权威服务器,共同完成域名解析。查询过程始于客户端,经过递归或迭代查询,最终由权威服务器返回IP地址,使浏览器能加载目标网页。
87 12

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    下一篇
    无影云桌面