共计 2691 个字符,预计需要花费 7 分钟才能阅读完成。
IoT 物联网时代,如何优化你的网络 - DNS 域名解析服务
1. 域名解析服务
设施以拜访指定域名和端口形式接入 IoT 物联网平台时,遇到的第一个问题就是接入服务器域名的 DNS 解析。域名(Domain Name),是由一串用点分隔的名字组成的互联网上某台计算机或某组计算机的标识,它的目标是为了不便人们更简略便捷地拜访互联网上的服务。在理论的零碎实现中,域名通过 DNS(Domain Name System)零碎转化为服务器的 IP 地址,以不便机器通过 IP 进行寻址和通信。上述行为,咱们称之为域名解析(Domain Name System)。
- 递归查问
递归查问时如果客户端所询问的本地域名服务器不晓得被查问的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其余顶级域名服务器持续收回查问,直到查问到后果后,再层层传递回来。 - 迭代查问
迭代查问时如果客户端所询问的本地域名服务器不晓得被查问的域名的 IP 地址,那么会告知下一级域名服务器的列表,供客户端询问。 -
理论场景
实际上,在 DNS 查问过程中,本地 DNS 服务器会代理客户端做迭代查问。但本地 DNS 没有域名解析后果的决定权,仅仅代理了用户向权威 DNS 获取域名解析后果的过程。本地 DNS 上有缓存模块,当指标域名存在缓存解析后果并且 TTL 未过期时,本地 DNS 会返回缓存后果,否则,本地 DNS 会一级一级地迭代查问各个层级域名的权威 DNS 直至获取最终残缺域名的解析后果。同时客户端也会依据 TTL 值做缓存的机制,这样能够缩小查问的次数,放慢域名解析过程。咱们以拜访 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com 为例,一次残缺的域名解析流程包含:
1. 设施终端向本地 DNS 发动域名解析申请;2. 本地 DNS 在获取到域名解析申请后首先从 Root hints 获取根域名 (.) 服务器的地址;3. 获取了根域名服务器地址后本地 DNS 向根域名服务器发动 DNS 解析申请;4. 根域名服务器返回顶级域名 (.com) 服务器地址;5. 随后本地 DNS 向顶级域名 (.com) 服务器发动解析申请,并失去二级域名 (aliyuncs.com) 服务器的地址;6. 本地 DNS 向二级域名 (aliyuncs.com) 服务器发动解析申请,并最终取得 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com 的 IP 地址信息;7. 本地 DNS 将递归查问取得的 IP 地址信息依据 TTL 缓存并返回给设施终端;8. 设施终端向目标 IP 发动网络申请
2.DNS 域名解析试验
2.1 DNS 域名解析
如果你要拜访域名 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com,首先要通过 DNS 查出它的 IP 地址是 139.196.135.135。咱们能够应用 dig 命令来查看域名对应的 IP 列表,具体如下:
上图展现了以后 mac 电脑从本地 DNS 服务器获取到域名的 IP 列表,TTL 值(Time to live)是 18s。
2.2 DNS 解析残缺过程
DNS 服务器依据域名的层级进行分级查问,就是从根域名开始,顺次查问每一级域名的 NS 记录,直到查到最终的 IP 地址,过程大抵如下:
1. 从 "根域名服务器" 查到 "顶级域名服务器" 的 NS 记录和 A 记录(IP 地址)2. 从 "顶级域名服务器" 查到 "二级域名服务器" 的 NS 记录和 A 记录(IP 地址)3. 从 "二级域名服务器" 查出 "主机名" 的 IP 地址
其中,每一级域名都有本人的 NS 记录,NS 记录指向该级域名的域名服务器。这些服务器晓得下一级域名的各种记录。咱们通过 dig +trace 能理解残缺解析过程,具体如下:
上图展现了 DNS 残缺过程,
1. 首先 Mac 电脑从本地 DNS 服务器获取到根域名 (.root) 服务器列表,2. 其次从其中一台根域名服务器 (198.41.0.4) 获取到顶级域名 (.com) 服务器列表
3. 再次从其中一台顶级域名服务器 (192.48.79.30) 获取到二级域名 (aliyuncs.com) 服务器列表
4. 最初从其中一台二级域名服务器获取到了指标域名的 IP 列表,共 3 个 IP 地址
3. 物联网场景 DNS 解析
3.1 域名解析潜在问题
当咱们理解 DNS 域名解析服务残缺过程后,会发现传统域名解析存在以下问题:
- 域名劫持
域名劫持始终是困扰许多开发者的问题之一,其体现即域名 A 应该返回的 DNS 解析后果 IP1 被歹意替换为了 IP2,导致 A 的拜访失败或拜访了一个不平安的站点。 - 调度不精准
除了域名劫持问题,基于传统 Local DNS 的域名解析还会带来域名调度精准性的问题。对于相似 CDN 域名拜访这类须要按地区、运营商进行智能解析调度的场景,精准调度的诉求是非常强烈的。 - 解析失效滞后
局部业务场景下开发者对域名解析后果变更的失效工夫十分敏感(这部分变更操作是开发者在权威 DNS 上实现的),比方当业务服务器受到攻打时,咱们须要最疾速地将业务 IP 切换到另一组集群上,这样的诉求在传统域名解析体系下是无奈实现的。 - 提早大
DNS 首次查问或缓存过期后的查问,须要递归遍历多个 DNS 服务器以获取最终的解析后果,这减少了网络申请的前置延时工夫。特地是在挪动互联网场景下,挪动网络品质参差不齐,弱网环境的 RTT 工夫可能高达数百毫秒,对于一次一般的业务申请而言,上述延时是十分惨重的累赘。另一方面,弱网环境下的解析超时、解析失败等景象不足为奇,如何正当优化 DNS 解析对于整体网络拜访品质的晋升至关重要。
3.2 阿里云 HTTPDNS 服务
阿里云 HTTPDNS 服务正在这样的背景下应运而生,为咱们提供一个更平安、稳固、高效的递归 DNS 服务代理了域名解析的过程。
HTTPDNS 应用 HTTP 协定进行域名解析,代替现有基于 UDP 的 DNS 协定,域名解析申请间接发送到 HTTPDNS 服务端,从而绕过运营商的本地 DNS,将终端用户的 IP 信息间接交付给权威 DNS,防止本地 DNS 的坐标烦扰,用户在权威 DNS 变更的解析后果将疾速同步给 HTTPDNS,笼罩原有的缓存记录,帮忙用户实现秒级的域名解析切换。
3.3 物联网场景 DNS 实战
但咱们在 IoT 物联网平台控制台创立产品后,会生成对应设施接入指定域名,参考下图:
接下来咱们要在 HTTPDNS 的控制台,增加 IoT 物联网设施的接入域名解析服务,参考下图:
而后,通过间接拜访 HTTPDNS 的 IP 获取设施接入域名的 IP 列表,参考下图:
最初,IoT 设施就能够间接拜访 IP 列表中的一个 IP,建设与 IoT 物联网平台的 MQTT 长连贯通道。
物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn
阿里云物联网平台客户交换群