我正在试验 pcap.net 并希望实现一些响应 ping 的东西作为练习。操作系统已经对它们做出响应,但我可以生成重复项。第一步显然是要知道一个 ping 数据包已经到达。我将https://pcapdotnet.codeplex.com/wikipage?title=Pcap.Net%20Tutorial%20-%20Opening%20an%20adapter%20and%20capturing%20the%20packets&referringTitle=Pcap.Net%20User%20Guide的示例修改为使用以下处理程序。
我显然不明白发生了什么,因为捕获的数据包都没有在正确的子网上。将 ping 数据包发送到目标 ip 没有任何区别,尽管使用 ping -i 0 会大大增加接收数据包的数量(但它们仍然没有合理的 IP 地址并且似乎不是回显请求数据包)。
请问我做错了什么?
private static void PacketHandler(Packet packet)
{
IpV4Address dst = packet.IpV4.Destination, src = packet.IpV4.Source;
if (dst == null || src == null) return;
if (packet.IpV4.Icmp != null)
{
Console.WriteLine(packet.Timestamp.ToString("yyyy-MM-dd hh:mm:ss.fff") + " length:" + packet.Length+" "+src+" -> "+dst);
}
}