加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows中使用TUN驱动程序

发布时间:2020-12-14 05:28:05 所属栏目:Windows 来源:网络整理
导读:我在 Windows 7机器上安装了TAP-WIN32适配器V9.我想用 TUN从接口读取IP数据包.我跟着C#样本 http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm 我修改了下面的代码 IntPtr ptun = Marshal.AllocHGlobal(8); Marshal.WriteInt32(ptun,0x0a03
我在 Windows 7机器上安装了TAP-WIN32适配器V9.我想用
TUN从接口读取IP数据包.我跟着C#样本
http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm

我修改了下面的代码

IntPtr ptun = Marshal.AllocHGlobal(8);       
Marshal.WriteInt32(ptun,0x0a030001);
Marshal.WriteInt32(ptun,4,unchecked((int)0x00ffffFF));
bool val = DeviceIoControl (ptr,TAP_CONTROL_CODE (5,METHOD_BUFFERED) /*POINT TO POINT */,ptun,8,out len,IntPtr.Zero);

但是,我似乎仍然没有得到IP数据包.我在另一端运行了tcpdump
它抱怨“错误的链路层封装”.

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读