消息大小对RTT的重要性:简单的Java Server / Client Socket程序

时间:2015-12-20 09:15:01

标签: java sockets tcp server client

我有一个简单的Java Server / Client TCP Socket程序来计算rtt。我这样做的方式是让客户端为其外发消息加上时间戳,然后服务器在收到消息时添加时间戳,最后当消息返回给客户端时,它会添加另一个时间戳。

嗯,我最终得到的结果有点奇怪。我制作了一个消息大小与往返时间的关系曲线,最后是直线而不是线性增长。

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

首先,我认为您不需要在服务器端为消息添加时间戳。您只需要在发送数据包时添加发送时间,然后您可以计算响应返回客户端时当前时间的差异(当然服务器需要在回复中复制sent_time)。

注意:如果您的服务器需要“很长”的时间来执行,那么您需要通过服务器向数据包添加某种“处理时间”信息。

RTT = (cur_clientTime_when_response_is_received - time_sent) - time_to_server_process

此公式的优点是不关心客户端和服务器时钟之间的时差。

直线是可以解释的,因为发送数据的时间差在统计上与克服网络层中引入的随机性无关,因为它是实时媒体,并且因为它与其他应用程序和主机,如果您在网络交换机上。 无论如何,不​​要费心增加字母数量,底层协议每个TCP数据包最多需要MTU(通常是1500)字节:仍然不够。