【问题标题】:Linux: How to simulate incoming packets on an interface?Linux:如何模拟接口上的传入数据包?
【发布时间】:2013-01-22 02:37:27
【问题描述】:

如何在特定软件界面上模拟一些传入流量?这种需求的原因是我们在以太层和 IP 层之间有几个软件接口,它们将沿着网络堆栈解析我们自己的 L2.5 标头,即

eth header -> virt_dev1 -> virt_dev2 -> IP -> TCP

我在看 TAP,它看起来可以提供帮助。但我不明白如何将此 TAP 接口链接到我们自己的软件接口,以便数据包通过预期的网络堆栈?可能我对TAP的理解不正确?

谢谢,

【问题讨论】:

  • 您使用哪种编程语言?
  • C 和 python,正在考虑使用 python 来编写脚本。
  • google linux tap,.c 示例的第 4 个链接将为您提供帮助

标签: python c linux network-programming tun


【解决方案1】:

tap 接口的作用类似于网络堆栈的第 2 层端口 - 从设备节点读取和写入数据将从网络层摄取/检索数据包。这些数据包在该点之后的去向取决于网络配置(转发、桥接等)。

【讨论】:

  • 谢谢,所以我想将这个 TAP 接口桥接到我们的私有软件接口可能是一种选择?
  • tap 接口旨在桥接到真实的物理适配器(或在系统本地使用)。您的软件接口会将其用作文件设备,并负责通过该接口处理以太网帧解码/编码。
  • hm..可能无法更改软件界面的驱动程序。那么如果我将它桥接到真正的以太网接口呢?数据包会经过TAP -> eth -> virt_dev1 -> virt_dev2 -> IP -> TCP这条路径吗?
  • 这里的virt_dev1是什么?如果您将以太网 (II) 帧内 IP 内的有效 TCP 写入tap,操作系统将使用适当的逻辑来移动它们,无论您的网络是如何配置的。这意味着如果您没有修复 MACIP 映射,您甚至可能需要在软件中实现 ARP。 tap 是低级别的,真正为合成网络或用户空间 VPN 隧道设计。
  • virt_dev1 是我们自己的软件设备,它在 Ether 标头和 IP 标头之间添加/解析额外的标头(私有)。
猜你喜欢
  • 2012-08-07
  • 1970-01-01
  • 2013-01-11
  • 2013-01-02
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多