如何通过套接字估计消息的理论 RTT?

How to estimate theoretical RTT of a message over socket?

我正在做一个在 Python 中使用套接字编程的项目。现在我正在尝试通过 Internet 将此项目配置为 运行,这基本上意味着客户端脚本可以从任何地方 运行,条件是提供 public IP机器 运行 宁服务器脚本。使用端口转发,我最终让它工作,现在客户端和服务器可以 运行 在 2 台不同的机器上。但是,我想看看是否可以改进 RTT。如果我知道客户端和服务器机器上的消息大小和互联网速度,或者任何此类附加数据,是否有一种方法可以从理论上计算通过套接字发送的消息的 RTT?我基本上想用给定的套接字设置计算 RTT 的最小可能值,然后检查实际测量的时间是否接近该值。如果不是,那么我的代码中某处效率低下,影响了性能。

没有理论上的方法来计算 RTT,因为它取决于您和另一台计算机之间的硬件。但是,您可以 ping 计算机并找出答案。这里我以 8.8.8.8 为例 - 它是一个 Google 服务器。

C:\> ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=14ms TTL=118
Reply from 8.8.8.8: bytes=32 time=14ms TTL=118
Reply from 8.8.8.8: bytes=32 time=14ms TTL=118
Reply from 8.8.8.8: bytes=32 time=14ms TTL=118

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 14ms, Maximum = 14ms, Average = 14ms

此命令将数据包发送到另一台计算机,另一台计算机将数据包发回,然后测量花费的时间。 Windows 的 ping 版本重复了 4 次。其他版本可能会重复,直到您使用 Ctrl-C 停止它们。