Networking

netcat廣播理解

  • October 14, 2021

我正在將 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 在這裡很重要。

試圖達到要點:

  • TCP 不適用於廣播。

您根本無法使用 TCP 連接到廣播 IP 地址。netcat預設使用 TCP,除非被告知使用 UDP,這樣的嘗試會出錯。

  • UDP 廣播需要設置一個標誌,但 GNU netcat 不處理它。

這就是 BSD 套接字 API 及其擴展通過setsockopt(2). 為了能夠將數據包發送到廣播 IPv4 地址(對於支持廣播的協議),SO_BROADCAST這是強制性的。否則這將觸發錯誤。GNU netcat 源不包含任何SO_BROADCAST字元串。

因此,GNU netcat 不可能發送廣播。您必須切換到其他工具。netcat的其他變體(周圍有多個)或使用socat具有更多功能的替代。這是一個關於使用socatwith (multicast and) broadcast的連結。它確實可以處理帶有套接字的兩側,例如(顯然)GNU netcat 的隧道模式。

引用自:https://unix.stackexchange.com/questions/672545