首页 文章

无法使用PF_PACKET将原始数据包发送到本地mac?

提问于
浏览
1

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

socket(PF_PACKET,SOCK_RAW,ether_type)

我有一个小问题 . 我有一个数据包构造,源和目标mac设置为我的本地卡mac,我也绑定到套接字绑定 .

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

但是,我的监听应用程序没有看到这些数据包 . 但是它能够看到来自网络上其他来源的数据包 .

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

你能把包发给自己吗?

网卡不会环回吗? Linux内核是否在IP级别上做了一些特殊的环回,因为我低于那个,不理我?

1 回答

  • 1

    是的,IP“环回”数据包,如你所说,是专门处理的 . 它们在内部循环,而不是通过界面发送出去 . 因此,在这个意义上,以太网级环回是一种通常不需要支持的特殊情况 . 一些旧的10Mbit以太网卡甚至是半双工的,所以它无法在那个硬件上运行:) .

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

    我想下一个问题是你的交换机是否支持这个 . 一个愚蠢的枢纽必须支持它,但现代转换的空间让人感到困惑 . 或者可能因担心无限循环的数据包而不允许它 .

相关问题