测试方法,2 台服务器之间 ping 延迟 200ms (都在国外且 ping 稳定),其中一台安装了 dns server ,另一台用 dig 命令测试。
发现不管用是 udp 还是 tcp 方式去查询,延迟都在 200ms 左右。
udp 方式在 200ms 比较好理解,就一个来回,而 tcp 方式有个三次握手的过程,正常来说肯定要远高于 200ms ,至少在 500ms 以上才对。
通过抓包发现,tcp 方式第一条数据是 sackOK ,再接收到服务器端发回的 sackOK 后,DNS 结果就出来了,后面再是 ack 包,也就是实际上也只有一个来回就获得结果了,所以延迟也是在 200ms 左右。
这是 dns 的 tcp 协议的特点? sackOK 直接查询?有大佬能解释下吗?
1
ho121 2022-02-07 21:07:46 +08:00 via Android 1
|