
我偶爾會使用 Netcat 透過網路複製檔案或磁碟映像。雖然它完成了這項工作,但我總覺得無論使用 ssh、不使用 ssh、壓縮或不壓縮,它總是處於緩慢而緩慢的狀態。
我已經開始測試 udpcast (http://www.udpcast.linux.lu/cmd.html)並且看起來至少快了 5 倍(或更多)。使用壓縮管道的 Udpcast 有時會比不使用壓縮管道的 netcat 快很多倍。因為我的網路一般都是1gbs運行
這是我使用的幾個沒有 ssh 和沒有壓縮的範例
dd if=somedisk |pv|nc -l -p 9999
nc networkaddr 9999|pv >./disk.img
udp-sender --full-duplex --file /dev/somedisk
udp-receiver --file ./disk.img
這些是我使用的一些基本範例。當然我也使用壓縮管。在所有情況下,udpcast 的執行速度至少是 Netcat 的 5 倍,我想知道為什麼會發生這種情況。
我什至傾向於認為帶有管道的 Udpcast 是對網絡文件傳輸的良好補充。
這裡使用 tar 和 untar 管道透過網路進行 udpcast 17.5 GiB
真實 9m26.186s
用戶 0m1.247s
系統 0m23.836s
這是透過 Samba 從 Linux 到 Windows 的 cp
real 9m17.729s
user 0m0.311s
sys 0m11.044s
是否可以使用 Netcat 擷取 Udpcast 效能?
我有時會問一些發行版現在可能提供 Udpcast 的原因。
答案1
nc
預設使用 TCP。
TCP 以較低的「視窗大小」開始,並在連線過程中提高速度,因為最大視窗大小被確定為更大。此外,TCP 還發送額外的流量來維持連接,即 ACK 封包。這對於支持「連接」和可靠、有序交付的概念是必要的。
UDP 不支援連接或可靠傳輸,因此不存在任何額外的包袱,因此速度更快。
我沒有玩過udpcast
太多,但如果它沒有任何錯誤檢測機制,那麼如果您的網路決定丟棄資料包,您將面臨無法獲得傳輸內容的良好副本的風險。
nc
有一個-u
選項 IIRC 使用 UDP 而不是 TCP 發送/接收。