dns原理介绍及实践问题总结
1 问题引入: a) 域名劫持: dns过程中某个环节被攻击/篡改,导致dns结果为劫持者的服务器。例如竞争对手将你方的app下载地址篡改为他方的app下载地址。 b) 对现网用户进行监控时,发现个别用户请求时间为几十秒,而客户端设置的connectTimeout时间为二十秒。 原因:初步判断为dns解析时间耗时过长导致整个接口请求时间远远超过了10s。 解决办法: 自定义dns,设置超时时间。 (使用的的是OkHttp,支持自定义dns) c) 测试环境dns几十秒,现网正常 原因: 旧的代码里面对url解析为host有bug,当传入一个测试环境地址,例如 10.10.10.10:6026/path,最终解析出来的host为10.10.10.10:6026, 当调用系统的InetAddress.getAllByName("10.10.10.10:6026"),耗时非常长(几十秒) 分析: 首先10.10.10.10:6026不是一个host地址也不是一个ip地址,所以dns是无法解析的。 方法内部会把它当成一个host在到不同的dns服务器上去查找它的ip,最后返回失败。 解决办法: 使用InetAddress中提供的方法来获取host,拒绝自己实现一套 d) no route to host 2 dns过程介绍 2.1 什么是dns DNS (Domain Name