netcat广播理解

netcat广播理解

我正在使用 macOS 和 gnu netcat。我想了解如何使用 netcat 广播消息。

netcat在4555上听

netcat -l -p 4555 192.168.0.101

但当我尝试发送广播消息时

netcat 192.168.0.255 4555但我一直犯错误

Error: Couldn't create connection (err=-5): Permission denied

我收到以下错误

Error: Couldn't create connection (err=-5): Permission denied

以下帖子说可以使用netcat-traditional但我正在运行 GNU netcat 来做到这一点,这在这里很重要。

答案1

试图抓住要点:

  • TCP 不适用于广播。

    您根本无法使用 TCP 连接到广播 IP 地址。网猫除非被告知使用 UDP,否则默认使用 TCP,这样的尝试会出错。

  • UDP 广播需要设置一个标志,但 GNU netcat 不处理它。

    这就是 BSD 套接字 API 及其扩展通过setsockopt(2).SO_BROADCAST必须能够将数据包发送到广播 IPv4 地址(对于支持广播的协议) 。否则这将触发错误。这GNU netcat 源代码不要在任何地方包含 string SO_BROADCAST

因此,GNU netcat 不可能发送广播。您必须切换到其他工具。或者是其他变体网猫(周围有多个)或使用socat它有更多的功能。这是一个关于socat与(多播和)广播一起使用。它确实可以处理两侧带有套接字的情况,就像(显然)GNU netcat 的隧道模式一样。

相关内容