安卓系统dns缓存策略

本文探讨了安卓系统中DNS缓存的工作原理,包括基本解析过程、缓存机制和缓存时效。分析了UnknownHostException异常的原因,指出安卓系统在DNS查询失败后的缓存策略可能导致异常频繁出现。在业务场景下,这种10秒的缓存时效可能引发问题,尤其是在接口访问密集的场景下。
摘要由CSDN通过智能技术生成

背景

安卓客户端上报出不少UnknownHostException,引起了大家的重视,于是决定深入研究一番。
UnknownHostException是个什么异常?让我们来谷歌的源代码是怎么说的:


/**
* Thrown when a hostname can not be resolved.
*/

原来就是说域名无法被解析的时候会抛这个异常啊。那我就先来大致了解一下域名解析在客户端是怎么做的吧。

基本原理

通常客户端在进行接口调用、页面访问的时候都会通过域名来定位目标主机,从而与目标主机中的服务进行通信。不过,要定位一个进程,需要的是IP+端口号。所以我们要先把域名解析成IP形式。

这个过程大致是:客户端向域名服务器发送一个UDP请求,查询域名相对应的IP。服务器收到查询请求后,向客户端返回相应的IP。好吧,没有这么简单,实际过程要复杂得多。

这里写图片描述

我们这次会把注意力集中在客户端一侧,至于如何递归查询就不深入讨论了。下面我们抓包举例,这是友盟sdk在向它的服务器上传数据的开始过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值