SO_REUSEPORT 和 SO_REUSEADDR

Posted

技术标签:

【中文标题】SO_REUSEPORT 和 SO_REUSEADDR【英文标题】:SO_REUSEPORT and SO_REUSEADDR 【发布时间】:2018-04-10 09:50:49 【问题描述】:

我正在尝试嗅探通过某个端口的帧,因此我在绑定之前使用选项 创建了套接字侦听器。但是在我启动我的应用程序时,我只在应用程序端获取我的帧,而不是在侦听器端。

有人知道我做错了什么吗?

提前致谢

【问题讨论】:

【参考方案1】:

SO_REUSEPORT / SO_REUSEADDR 表示多个进程可以在同一个端口上侦听,但是每个连接(对于 TCP)或数据包(对于 UDP/ICMP)只会转到一个进程。因此,您不能以这种方式嗅探流量,因为(a)另一个进程获取数据包而您的进程没有,或者(b)您的进程获取数据包,但另一个进程没有,因此不会响应给它。

如果您需要以编程方式捕获数据包,您可以使用 Wireshark、tcpdump 或 libpcap/WinPCAP 等方法来嗅探流量。

【讨论】:

以上是关于SO_REUSEPORT 和 SO_REUSEADDR的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rust 中设置套接字选项 SO_REUSEPORT?

Linux 最新SO_REUSEPORT特性

Linux 最新SO_REUSEPORT特性

setsockopt() 的 macOS SO_REUSEPORT

SO_REUSEPORT和SO_REUSEADDR与socket编程中那些关于内核自动分配的...

SO_REUSEADDR和SO_REUSEPORT区别