小编Ami*_*lay的帖子

AF_PACKET 套接字在 Linux 中如何工作?

我正在尝试为 Linux 编写一个 C 嗅探器,并了解嗅探时内核中发生的操作。

我无法找到以下问题的答案:如果我按以下方式初始化套接字:

sock_raw = socket(AF_PACKET , SOCK_RAW , htons(ETH_P_ALL));
Run Code Online (Sandbox Code Playgroud)

内核中发生了什么?我如何看到所有传入和传出的数据包,但不“劫持”它们?因为我到目前为止所理解的是,当内核接收到数据包时,它将其发送到相关的协议处理函数。因此我无法理解 - 除了我打开的套接字之外,内核是否还会克隆数据包并发送它?

c sockets linux linux-kernel

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

linux ×1

linux-kernel ×1

sockets ×1