1

我一直在玩使用构建的以太网协议(不是 IP)

套接字(PF_PACKET,SOCK_RAW,ether_type)

我有一个小问题。我已经构建了一个数据包,其中源和目标 mac 设置为我的本地卡 mac,我还使用 bind 绑定了套接字。

我可以很好地从网络接收数据包。我能够将数据包发送到我看到它们出现在wireshark中的程度。

但是,我的监听应用看不到这些数据包。但是,它能够看到来自网络上其他来源的数据包。

我应该指出,我的 mac 地址似乎是以正确的字节顺序发送的。

你可以给自己发送数据包吗?

网卡不回环吗?linux内核是否在IP级别为环回做了一些特殊的事情,因为我低于这个,忽略我?

4

1 回答 1

1

是的,正如您所说,IP“环回”数据包受到特殊处理。它们在内部环回,而不是通过接口发送出去。因此,从这个意义上说,以太网级环回是一种通常不需要支持的特殊情况。一些旧的 10Mbit 以太网卡甚至是半双工的,所以它不能在那个硬件上工作:)。

另一方面,您可以购买/制作环回适配器电缆来测试网卡。所以它必须在(希望是所有的)现代硬件上成为可能。人们已经在 linux 下通过 AF_PACKET 使用它们(证据,虽然没有更多细节,here)。

我想下一个问题是你的交换机是否支持这个。一个愚蠢的集线器必须支持它,但现代交换机有混淆的空间。或者可能因为害怕数据包无限循环而不允许它。

于 2012-08-24T09:28:55.663 回答