![距离和数据包传输时间之间的关系](https://linux22.com/image/690453/%E8%B7%9D%E7%A6%BB%E5%92%8C%E6%95%B0%E6%8D%AE%E5%8C%85%E4%BC%A0%E8%BE%93%E6%97%B6%E9%97%B4%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB.png)
有没有理论上的估计方法可以估算数据包从 A 点传输到 B 点所需的时间?例如每 100 公里需要 100 毫秒?我想估算设备从不同位置向服务器发送请求所需的时间差异。
答案1
这几乎是不可能实现的,因为有很多因素会影响请求所需的时间。
- 物理边界(又称介质):例如,电磁波在铜线中的传播速度在理论上接近光速,但信号可能受到电磁波、电缆质量、距离、电阻等的干扰,从而导致必须重新发送数据包的情况
- 中间节点数:时间会增加,具体取决于源和目的地之间存在多少个节点,因为每个节点都必须处理数据包(例如,路由它们、减少 ttl 等)
- 节点的计算时间:你无法知道一个节点处理数据包的速度有多快,它转发数据包的速度也取决于当前负载
- 您无法确定数据包将采用哪条路由:您无法确定如果您通过互联网发送 2 个数据包,它们是否会采用相同的路由,因为简单地放置节点总是将数据包转发到路由上速度最快的其他节点。如果中间的节点发生故障,您的数据包将重新路由到另一个节点。
不过,您可以使用 traceroute 或 ping 等工具来大致估算所需时间。例如,您可以每 2 秒发送一次 ping,并计算最近 10 次测量的平均值。
基本上我所知道的每一个时间关键服务都只使用 ping(特别是视频游戏等)。
答案2
延迟取决于:
- 传输介质类型(玻璃、铜、空气)
- 路径上设备的数量和类型
- 网络饱和
您可以计算特定通信介质在特定距离内的最小延迟,但很难预测饱和度或了解您无法访问的设备的延迟。
答案3
延迟受光速限制。通常数据包在光纤中传输,光纤的速度约为光速的三分之二。