我一直在使用
构建的以太网协议(而不是IP)套接字(PF_PACKET,SOCK_RAW,ether_type)
我有一个小问题。我有一个数据包构造,其源和目标mac设置为我的本地卡mac,我也使用bind绑定套接字。
我可以从网络上收到很好的数据包。 我能够将数据包发送到我看到它们出现在wireshark中的程度。
但是,我的监听应用程序没有看到这些数据包。但它能够看到来自网络上其他来源的数据包。
我应该指出,我的mac地址似乎确实以正确的字节顺序发送。
你能把包发给自己吗?
网卡不能环回吗? linux内核是否在IP级别上做了一些特殊的环回,因为我低于那个,不理我?
答案 0 :(得分:1)
是的,IP“环回”数据包,如你所说,是专门处理的。它们在内部循环,而不是通过界面发送出去。因此,在这个意义上,以太网级环回是一种通常不需要支持的特殊情况。一些旧的10Mbit以太网卡甚至是半双工的,因此无法在该硬件上运行:)。
另一方面,您可以购买/制作环回适配器电缆来测试网卡。所以它必须是(希望所有)现代硬件。人们已经在linux下使用AF_PACKET(证据,但没有更多细节,here)。
我想下一个问题是您的开关是否支持此功能。一个愚蠢的枢纽必须支持它,但现代转换的空间让人感到困惑。或者可能因担心无限循环数据包而不允许它。