Networking
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 在這裡很重要。
試圖達到要點:
- TCP 不適用於廣播。
您根本無法使用 TCP 連接到廣播 IP 地址。netcat預設使用 TCP,除非被告知使用 UDP,這樣的嘗試會出錯。
- UDP 廣播需要設置一個標誌,但 GNU netcat 不處理它。
這就是 BSD 套接字 API 及其擴展通過
setsockopt(2)
. 為了能夠將數據包發送到廣播 IPv4 地址(對於支持廣播的協議),SO_BROADCAST
這是強制性的。否則這將觸發錯誤。GNU netcat 源不包含任何SO_BROADCAST
字元串。因此,GNU netcat 不可能發送廣播。您必須切換到其他工具。netcat的其他變體(周圍有多個)或使用
socat
具有更多功能的替代。這是一個關於使用socat
with (multicast and) broadcast的連結。它確實可以處理帶有套接字的兩側,例如(顯然)GNU netcat 的隧道模式。