我正在测试连接到数据中心内同一交换机的两个 Red Hat 服务器之间的文件传输速度,我决定使用 netcat 尽可能地消除协议开销。
TCP 模式下的测试进展顺利,我想知道 UDP 的表现如何。
在我的接收(客户端)端,我运行了以下命令:
nc -u -l 11225 -v > myfile.out
然后在发送(服务器)端我运行了以下命令:
cat myfile.out | nc -u myserver.foo.zzz.com 11225 -v
我正在测试的文件是 38 GB,但传输似乎停止在大约15 GB(一次为 14.9,另一次为 15.6)。
我测试了一下,添加了“-w 5000”,以防超时,但没成功。添加 -v 除了确认连接已发生外,没有显示任何内容。没有错误。
那么——对于转移为何会停止,有什么建议吗?
答案1
您看到的并不是超时。您看到的是使用错误协议的结果。
TCP 将执行流量控制,这意味着它将根据网络和接收方的容量调整传输速度。此外,TCP 将重传丢失的数据包。
UDP 不会执行上述任何一项。nc
您使用的命令将以从磁盘读取数据包并将其推送到网络接口的速度传输数据包。如果网络或接收端无法跟上,它将以相同的速度继续运行,并且只会发送一次数据。
如果您看到只有一半的数据到达另一端,则可能意味着发送机器能够以系统其余部分处理速度的两倍发送数据。
如果你在接收端仔细查看文件,你会发现它不只包含原始文件的前半部分。相反,你可能会发现原始文件各处的片段。