我正在使用原始套接字在eth3端口上编写以下数据包:
------------------
ETHERNET HEADER
------------------
+ IP HEADER
------------------
+UDP HEADER
------------------
+Payload
------------------
如果我使用wireshark观察来自eth3接口的数据包,我可以看到我正在发送的数据包,但是从eth3读取的应该接收这些数据包的进程在某种程度上不接收这些数据包。
如果我在eth3上发送相同的数据包,在外部使用另一台计算机并写入其eth3接口并通过lan将其连接到以前的计算机,则该过程似乎会收到这些数据包。
当我尝试在内部发送数据包时,我怀疑存在一些问题,即通过同一台机器上的进程。
你能建议一个解决方案吗?
答案 0 :(得分:0)
您的进程可能会根据消息的包类型过滤消息(它可能会/可能不会处理类型为3的包)。
这是数据包类型的列表(从文件if_packet.h
复制):
#define PACKET_HOST 0 /* To us */
#define PACKET_BROADCAST 1 /* To all */
#define PACKET_MULTICAST 2 /* To group */
#define PACKET_OTHERHOST 3 /* To someone else */
#define PACKET_OUTGOING 4 /* Outgoing of any type */
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
#define PACKET_USER 6 /* To user space */
#define PACKET_KERNEL 7 /* To kernel space */