我的网络编程经验相对有限,希望有人可以帮助我解决一个可能是 n00bish 的问题,在此先感谢您的帮助!:)
我有两个分别运行的 C++ 程序。一种是使用 libpcap 库编写的简单数据包嗅探器,它进行过滤,使其仅侦听在特定端口上接收到的数据包,然后解析数据包,以便将有效负载长度和有效负载内容写入二进制文件。
另一个程序是一个简单的 bsd 套接字服务器程序,它被设置为使用 recv() 函数在特定端口上接收消息,然后类似地将接收到的消息长度和消息内容写入二进制文件。
一切似乎都运行良好,所以当我检查二进制输出文件时,我希望内容是相同的......但不幸的是,我发现它们只是有点相似。似乎数据包嗅探器正在捕获与服务器正在捕获的相同数据,但它也在记录具有 6 字节长有效负载的额外数据包,这些数据显然没有被服务器程序接收。
因此,数据包嗅探器正在拾取服务器不应该知道的数据包,或者服务器程序丢失了它应该接收的数据包。但是,我对服务器程序运行正常并接收到正确的消息感到有些信心,因此数据包嗅探器检测到的这些额外数据包让我感到困惑。有谁知道这些额外的数据包可能是什么,以及我如何将它们过滤掉?
笔记:
向我正在侦听的端口发送数据的客户端是小型网络中的一台旧 Windows NT 机器,它基本上是将二进制数据传递给服务器程序进行处理。
不幸的是,由于工作场所政策,我无法上传代码。但是,可以在这里找到我的代码的示例: http : //www.tcpdump.org/pcap.html http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html
再次感谢!