linux - 关于 Linux 的 RAW 套接字问题

标签 linux raw-sockets

在 Linux 中,我有 2 个进程使用 1 个 eth 接口(interface),

process1 是 socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

process2 是 socket(AF_INET, SOCK_DGRAM, 0)

process1可以接收process2发送/接收的所有包,想知道process1如何过滤process2的包

最佳答案

当套接字协议(protocol)设置为ETH_P_ALL时,它可以处理所有协议(protocol)。

man packet

第二个进程通过第一个套接字用于监听的同一接口(interface)发送 udp 数据包。首先socket的协议(protocol)设置为ETH_P_ALL,它可以看到所有的数据包;传入和传出。所有传出数据包的数据包类型均为 PACKET_OUTGOING。

关于linux - 关于 Linux 的 RAW 套接字问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168016/

相关文章:

java - 命令行编程

linux - Grep 影子文件含义

java - 如何在 Java 中使用 Linux 共享库?

c - 如何在 Linux C 中使用原始套接字接收 bpdu 流量

c++ - 在Linux原始套接字中接收完全修改的icmp数据包

c - 使用 RAW 套接字发送 SYN 后未收到 SYN/ACK

go - 使用原始套接字发送自定义以太网数据包

linux - 在 Linux 上,如何使用 POSIX shell 禁用鼠标一秒钟,而不是等待第二个并立即做一些工作?

linux - 如何在 Linux 上控制光标?

linux - 使用Linux原始套接字捕获PTP数据包