Skip to content

Latest commit

 

History

History
14 lines (8 loc) · 1.49 KB

im7.md

File metadata and controls

14 lines (8 loc) · 1.49 KB

7 DNS问题

使用 TCP 时不可避免会碰到 DNS 解析的问题,毕竟我们不可能一直使用 IP 作为服务器地址。在 PC 时代,DNS 解析几乎不耗时。但进入无线时代后,DNS 相关问题越来越严重。一方面,在移动网络下,DNS 解析速度无比龟速,一次 DNS 解析的时间甚至能赶上一次 TCP 连接的时间,几秒,十几秒,甚至三,四十秒的请求时间都很常见。另一方面,由于运营商的不作为和作为,移动网络下 DNS 也呈现了解析准确度低和经常被劫持的状态。

针对DNS解析问题,一般采用内置默认IP列表和默认域名的方式。然后通过短连接或者长连接推送更新IP 列表。可以根据根据网络类型和运营商将IP分类,然后根据网络类型和运营商选择不同的IP,但这种需要能够准确获得网络类型和运营商。如果不能准确判断,反而不如随机选择,避免一台服务器压力过大。如果选择的IP连接不上,则换用其他IP,如果所有IP连接不上,则使用域名。

总结,对于DNS问题可以采用以下策略:

  1. 客户端内置默认IP列表和域名;
  2. 优先使用IP建立连接,如果所有IP失败,才使用域名;
  3. 使用短连接和推送更新IP列表;
  4. 如果可以准确获取网络类型和运营商,则根据网络类型和运营商选择IP。如果不行,则随机选择IP。如果连接成功,则记录连接成功IP。优先选择上次连接成功的IP。