我正在testing连接到数据中心内同一交换机的两台红帽服务器之间的文件传输速度,并决定尽可能使用netcat来消除协议开销。
在TCP模式下testing进行得很顺利,我想知道UDP如何可能。
在我的接收(客户端),我跑这个:
nc -u -l 11225 -v > myfile.out
然后在发送(服务器)结束我跑了以下内容:
cat myfile.out | nc -u myserver.foo.zzz.com 11225 -v
我正在testing的文件是38 GB,但转移似乎停止在15 GB 左右 (一次14.9,另一个15.6)。
我已经通过添加一个“-w 5000”来testing,以防万一它超时但没有快乐。 添加-v除了确认连接发生之外不显示任何内容。 没有错误。
那么 – 对于为什么转移将停止的任何build议?
你所看到的并不是一个时间。 你所看到的是使用错误的协议来达到目的的结果。
TCP将执行stream量控制,这意味着它将根据networking和接收器的容量调整传输速度。 另外TCP会重传丢失的数据包。
UDP既不这样做。 您使用的nc命令将尽可能快地传输数据包,以便从磁盘读取数据并将其推送到networking接口。 如果networking或者接收端不能跟上,只会继续保持相同的速度,只发送一次数据。
如果只看到一半数据到达另一端,则可能意味着发送机器能够以系统其余部分能够处理的速度两倍的速度发送数据。
如果仔细查看接收端的文件,应该会发现它不包含原始文件的前半部分。 相反,你可以期望从原始文件中find片段。