我想编写一个程序并在两台机器上运行它,并在以太网帧中将一些数据从一台机器发送到另一台机器。
通常,应用程序数据位于 OSI 模型的第 7 层,是否存在内核限制或 API 限制之类的东西,这会阻止我编写可以指定目标 MAC 地址并将一些数据发送到该 MAC 的程序作为以太网有效载荷?然后编写一个程序来监听传入的帧,并从指定的源 MAC 地址抓取帧,从帧中提取数据的有效载荷?
(所以我不想要任何其他开销,如 IP 或 TCP/UDP 标头,我不想高于第 2 层)。
这可以在 C++ 中完成,还是必须在 IP 层进行所有通信,这可以在 Ubuntu 上完成吗?额外的爱指向或提供示例!:D
我的问题显然是我是 C++ 网络编程的新手,据我所知,如果我想通过网络进行通信,我必须使用socket()
调用或类似的方法,它在 IP 层工作,所以我可以写一个 C++程序在 OSI 第 2 层工作,是否有用于此的 API,Linux 内核甚至允许这样做吗?