-
客户端输入一个网址即域名,到本地DNS服务器
-
本地服务器DNS查找域名缓存,如果命中对应的ip地址,则返回该ip,如果没有命中,则发请求给根域名服务器请求解析
-
根域名解析好后,返回 顶级域名服务器的地址
-
本地DNS 向顶级域名服务器发送请求。
-
顶级域名查看缓存,有没有对应ip,如果有直接返回,如果没有,则解析该域名,查找到目标 权威域名服务器的地址
-
本地DNS 向 权威域名服务器发送请求
-
权威域名服务器在数据库中查表,返回对应的ip地址
-
本地DNS服务器 把 ip地址 返回给 客户端,并且缓存该地址。
[](()2.4 DNS坑点
[](()2.4.1 DNS劫持
DNS劫持又叫域名劫持,是指攻击者通过某种手段篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP。
这里不过多讲解,因为内容很多,而且和本章没啥关联。
PS:你在看这篇文章时,左下角、右下角如果出现了广告,这很有可能能使DNS被劫持了,当然了,这也可能就是官方自己的广告= =。
[](()2.4.2 DNS 服务器故障
每年都会经常出现 一些DNS服务器的故障,如果你恰好遇上,体验就很不好。这是因为DNS寻址是我们访问服务器的必要过程,DNS服务器故障直接导致寻不到址,或者寻址速度降低。
[](()2.4.3 DNS 调度不准确
说不好一些DNS服务器里面的算法写的有点水,调度性能低下,这样会也会直接导致我们寻址速度变慢。
[](()2.5 小结
总的来说,DNS寻址有下面几个缺点:
- 不稳定
遭遇DNS劫持或DNS服务器宕机
- 不准确
某些小运营商没有 DNS 服务器,直接调用其他运营商的 DNS 服务器,最终直接跨网传输
- 不及时
运营商可能会修改 DNS 的 TTL(Time-To-Live,DNS 缓存时间),导致 DNS 的修改,延迟生效。
除了运营商,DNS服务器本身的索引算法也可能会有调度的问题(不过概率蛮小的)
所以看到DNS其实也有蛮多缺点的,那么我们该怎么去优化呢?
首先我们是开发App的,我们面向的问题是App在进行网络请求时,更快更稳定。那么最暴力的方法就是绕过DNS,我们使用DNS的原因是我们记不住冗长的ip地址,但在App开发中,App程序本身是可以记得住这些ip地址的,那就让它去记就行了,让它直接访问ip地址,就减少了DNS的寻址过程。
而 ip直连 就是以此为基础的实现方案。
[](()3. ip直连
=====================================================================