发送/接收数据包缓冲区是相同的预分配内存



我有一个windows应用程序消耗大量的传入udp流量并发送少量的udp数据包'keep alive'消息。我看到输入和输出都有少量下降。我很惊讶,少量的传出数据正在经历丢失,所以我使用netMon捕获数据包,看到它们都是从服务器发送的,发送了3帧,只有2帧到达linux服务器。

我想知道以下内容:1. NetMon是sock_buffer上的克隆,因此数据可能在数据包缓冲区中被丢弃,而不是实际上被发送到服务器?2. 发送和接收的数据包缓冲存储器是否相同?如果接收数据包缓冲区正在使用所有预先分配的缓冲区内存,这是否会导致少量传出流量上的数据包丢失?

第一件事:发送和接收数据包缓冲区有单独的内存。第二件事:NetMon工作在较低的网络层,而不是套接字层。第三件事:请记住,UDP是不可靠的协议,你不能确保从一端发送的所有数据包将被另一端接收。如果你需要可靠性,你应该考虑TCP或其他一些可靠的协议。

顺便说一下,发送者和接收者都在同一个局域网或互联网上??它们是如何联系在一起的?如果你可以描述它,那么也许有人可以建议其他的东西来进一步调试这个问题。

最新更新