我已经在Windows 7计算机上安装了TAP-WIN32适配器V9。我想使用TUN从接口读取IP数据包。我遵循了来自http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm的C#示例
我修改了如下代码
IntPtr ptun = Marshal.AllocHGlobal(8);
Marshal.WriteInt32(ptun, 0, 0x0a030001);
Marshal.WriteInt32(ptun, 4, unchecked((int)0x00ffffFF));
bool val = DeviceIoControl (ptr, TAP_CONTROL_CODE (5, METHOD_BUFFERED) /*POINT TO POINT */, ptun, 8,ptun, 8, out len, IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
但是,我似乎仍然没有收到IP数据包。我在另一端运行了tcpdump,它抱怨“链接层封装错误”。
这是尝试从TUN接口中获取IP数据包的正确方法吗?
小智 5
不,这不是正确的方法。遗憾的是,点击/调整驱动程序仅在Windows的点击模式下有效。这意味着您可以接收以太网数据包,而不是IP。让我们考虑一下当您有一些用于目标地址X的IP数据包时的情况。在以太网层上发送此数据包之前,OS创建ARP查询,嘿,IP X,您的MAC是什么?在这种情况下,您必须实现ARP层。经过ARP协商后,系统将发送以太网封装的IP包。
| 归档时间: |
|
| 查看次数: |
6202 次 |
| 最近记录: |