我在
this (frequently cited) sample project上基于一个数据包嗅探器.在实现HTTP数据包之后,我注意到我唯一收到的HTTP数据包是请求,我没有收到任何响应.
我看了很多不同的来源,但由于使用的代码是非常常见的,所以我倾向于认为这可能是本地的.
当我查看我的日志时,我看到每个数据包都有本地IP作为SourceIP,用于HTTP数据包以及到达其他端口的数据包.
我提供了一个工作示例here,您可以将其复制粘贴到LINQPad中,并显示问题(添加System.Net和System.Net.Socket程序集).不要忘记以管理员身份执行LINQPad来访问套接字.
这导致在192.168.0范围内的数百个/数千个条目,共有3个IP地址异常引用了我的主机提供商(使用nslookup检查).
private readonly byte[] _data = new byte[4096]; private Socket _mainSocket; public void Capture() { _mainSocket = new Socket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP); _mainSocket.Bind(new IPEndPoint(GetLocalIP(),0)); var byTrue = new byte[] {1,0}; var byOut = new byte[] {1,0}; _mainSocket.IOControl(IOControlCode.ReceiveAll,byTrue,byOut); _mainSocket.EnableBroadcast = true; _mainSocket.BeginReceive(_data,_data.Length,SocketFlags.None,OnReceive,null); } private void OnReceive(IAsyncResult ar) { SocketError error; var received = _mainSocket.EndReceive(ar,out error); Parse(_data,received); _mainSocket.BeginReceive(_data,null); } private void Parse(byte[] data,int size) { var packet = new IPHeader(data,size); Console.WriteLine (packet.SourceIP.ToString()); }
> Windows 8.1
> Killer e2200千兆以太网控制器(NDIS 6.30) – 最新版本的驱动程序
>昨天安装了一个独立的网卡,没有任何改变.
A post最接近我的问题的描述已经解决了我已经有的工作代码.
为什么我只能跟踪出站数据包?
解决方法
您是否尝试查看您的操作系统/独立/路由器防火墙? 经常被忽视,但防火墙对传入和传出连接有不同的规则,这可能是您的问题的原因.