为什么ttcp复制我的数据的第一个字节?

我想尝试使用ttcp发送udp数据,如下所示:

echo 12345 | ttcp -tup 123 10.0.0.123 

但是当我看到wireshark实际上在第一个12345和其他1234中发送了5个数据包,为什么呢?

以下过程发生:

  1. ttcp程序发送请求的数据。

  2. echo程序closuresinputpipe道。

  3. ttcp程序closures“连接”,发送你看到的额外的数据包。

如果你这样做(echo 12345 ; sleep 10) | ttcp ... (echo 12345 ; sleep 10) | ttcp ... ,你会看到它发送数据请求,然后10秒钟后closures发送你看到的额外数据包的连接。

如果您在支持T / TCP的计算机上使用TCP,则这与您的语义基本相同。 第一个数据包发送将是一个SYN,但它也包含数据(希望它可以build立连接并将数据发送到一个数据包中)。 如果没有回复,则会重传。 (重传可能不包含尽可能多的数据,因为成功的可能性较低,所以不浪费带宽更有意义。)如果在超时之前尝试closures连接,它仍然会一直stream连,试图build立连接并发送数据。