Android 网络性能优化(2)DNS优化(1),OMG学它

这里总结一下DNS的寻址过程,可以看下图:

在这里插入图片描述

  1. 客户端输入一个网址即域名,到本地DNS服务器

  2. 本地服务器DNS查找域名缓存,如果命中对应的ip地址,则返回该ip,如果没有命中,则发请求给根域名服务器请求解析

  3. 根域名解析好后,返回 顶级域名服务器的地址

  4. 本地DNS 向顶级域名服务器发送请求。

  5. 顶级域名查看缓存,有没有对应ip,如果有直接返回,如果没有,则解析该域名,查找到目标 权威域名服务器的地址

  6. 本地DNS 向 权威域名服务器发送请求

  7. 权威域名服务器在数据库中查表,返回对应的ip地址

  8. 本地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直连

=========================================================================

3.1 原理


客户端从服务器拉取配置文件,配置文件包含了域名和ip地址的映射,客户端在之后的网络请求中,在配置中根据域名找到ip,直接连接这个ip地址进行请求。

而最开始拉取配置文件这个动作是经过DNS的,而之后都是绕过DNS的。

ip直连有以下的优势:

  • 在之后的连接中,都会绕过DNS,这样可以提高连接速率

  • 可以降低DNS劫持的风险

  • 一般都能拿到多个ip地址,所以可以进跑马比较,就快连接,这样可以提高连接质量

3.2 一个Http的直连demo


举一个最简单的直连的例子。假如我们需要直连百度,那我们先在cmd中,直接获取到百度的ip:

ping www.baidu.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值