Android 网络性能优化(2)DNS优化

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP
  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直连有以下的优势:

(两百九十二) Android DNS缓存学习 java层 每个缓存的有效时长就是2s(失败的结果也是) DNS缓存的最大个数为16个 c层 每个缓存的有效时长就是ttl,也就是DNS服务器返回的一个属性值,如果有多个,取最小值 DNS缓存的最大个数为#define CONFIG_MAX_ENTRIES 64 * 2 * 5 640个 DNS缓存的管理办法是,个数达到最大值,则一次性清除所有过期的缓存,如果没有过期缓存则删除最久的一个 阅读详情

相关推荐

Android 网络性能优化2DNS优化,安卓插件化开发

而连接的最初的动作是DNS解释,在第一篇中,描述DNS的状况是: 域名换ip。这一步看似简单却充满陷阱,10分钟的DNS的Cache过期时间,200~2000ms不等的DNS耗时,坑了无数应用。 解决无非有三个策略: ip直连 域名重用(收敛) HttpDNS 不过仅仅用一段话来描述DNS的疼点还是比较生硬的,所以在学习ip直连和HttpDNS之前,我需要先弄懂DNS出现问题的具体原因。 2. DNS =============================================

m0_66145114的博客 1907

dnsproxy2 --Android系统DNS修改工具优化

该工具已修改成Betbeans工程编译,我用的是Netbeans IDE8.1;该工具主要是修改可以设置两个DNS地址。

Android 网络性能优化2DNS优化(1)

找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

wang688699的博客 1369

Android客户端网络DNS优化实践

关于DNS的相关介绍:https://www.51cto.com/article/674906.html传统的DNS解析:当开始 DNS 解析的时候,如果 LocalDNS 没有缓存,那就会向 LocalDNS 服务器请求(通常就是运营商),如果还是没有,就会一级一级的,从根域名查对应的顶级域名,再从顶级域名查权威域名服务器,最后通过权威域名服务器,获取具体域名对应的 IP 地址。传统DNS缺点: 不稳定(DNS服务器被劫持或故障), 访问慢。

qq_23992393的博客 2371

Android 网络性能优化-概述和DNS优化

1. 移动App网络优化背景 对于Android来说,开发者可以轻松的打造一套 MVP + Retrofit + RxJava 的框架来处理所有的网络请求。因为 Retrofit下层封装的OkHttp是非常强大的网络库,而 RxJava又能够很好的帮我们处理线程切换的问题。 但是对于大型的App来说,仅仅是使用这些是不够的,它太机械,不能帮我们处理复杂多变的网络情况。 在我的上个公司,智能设备的网络连接是老大难问题,有时候设备连不上Wifi的情况下,开发人员去跟进,到最后总会丢出一句:“设备就是Pin

Dream It Possible 2387

Android 网络性能优化2DNS优化android中高级面试

DNS劫持又叫,是指攻击者通过某种手段篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP。这里不过多讲解,因为内容很多,而且和本章没啥关联。PS:你在看这篇文章时,左下角、右下角如果出现了广告,这很有可能能使DNS被劫持了,当然了,这也可能就是官方自己的广告= =。

2401_84150206的博客 1192
上一篇: Android 来去电监听,电话挂断
下一篇: android 获取通讯录并显示listview
Java364102
博客等级 码龄4年 12粉丝 58原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值