有个应用有点问题(闭源),看报错可能和 DNS 有关,由于没法看代码,因此对物理网卡 53 的端口通信进行抓包,应用近一两周运行正常,抓包结果虽然有点离谱,但是由于应用正常运行,而且查询结果也没啥问题,就没管。
直到今天下午,又出问题了,然后我马上分析了抓包结果,看到了一个 DNS 请求走了 TCP ,之前应用正常时,每次查询都是查本机的机器名的 A 记录和 AAAA 记录,正常的查询都走的 UDP ,然后当然响应查不到,这次和之前的区别是走了 TCP ,查询的记录是一样的。我们配的是阿里的公共 DNS ,是支持 TCP 查询 DNS 的,这次当然这次 DNS 也回复了查不到的响应,然后应用回了 DNS 响应一个 ACK 包后,就像卡死了一样,一直不挥手,这时候应用就卡死了。然后过了几分钟挥手后,估计是服务端已经断了连接了,发挥手拿不到 ACK ,一直重传了几次,连接就断了。
请大佬们给点思路吧!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.