我一直在研究用于 DNS 解析的第 3 方程序(在嵌入式解决方案上),并且在将 DNS 查询发送到上游服务器的代码中,它将 connect() 然后 send()。
send() 返回给定的字节数(即不是 -1 或 errno 设置),但我从未在 Wireshark 中看到 DNS 查询。因此,DNS 程序认为数据包已发送,但从未收到响应,并对该数据包进行计时。不过后续的 DNS 查询不会出现任何问题。
内核是否持有该数据包,如果是,我如何才能知道它为什么要这样做?没有规则阻止此数据包的出站。
我听说内核可以保存一个数据包,如果它认为到远程目的地的路由无法到达,是否发生这种情况,如果是这样,我如何找到更多相关信息?