gpt4 book ai didi

tun - 在 Windows 中使用 TUN 驱动程序

转载 作者:行者123 更新时间:2023-12-04 19:13:38 24 4
gpt4 key购买 nike

我已经在我的 Windows 7 机器上安装了 TAP-WIN32 Adapter V9。我想用
TUN 从接口(interface)读取 IP 数据包。我遵循了 C# 示例
http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm

我修改了如下代码

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);

但是,我似乎仍然没有收到 IP 数据包。我在另一端运行 tcpdump 并
它提示“错误的链路层封装”。

这是尝试从 TUN 接口(interface)获取 IP 数据包的正确方法吗?

最佳答案

不,这不是正确的方法。
很遗憾,但是 tap/tun 驱动程序只能在 windows 的 tap 模式下工作。
这意味着您可以接收以太网数据包,而不是IP。
让我们考虑一下当你有一些目标地址 X 的 IP 数据包的情况。在以太网层发送这个数据包之前,操作系统会创建一个 ARP 查询,嘿,IP X,你的 MAC 是什么?
在这种情况下,您必须实现 ARP 层。 ARP协商完成后,系统会发送以太网封装的IP包。

关于tun - 在 Windows 中使用 TUN 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com