Welcome

首页 / 软件开发 / C++ / Muduo 网络编程示例(五)测量两台机器的网络延迟

Muduo 网络编程示例(五)测量两台机器的网络延迟2014-04-03 csdn博客 陈硕本文介绍一个简单的网络程序 roundtrip,用于测量两台机器之间的网络延迟,即“往返时间 / round trip time / RTT”。这篇文章主要考察定长 TCP 消息的分包,TCP_NODELAY 的作用。

本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/roundtrip/roundtrip.cc

测量 RTT 的办法很简单:

host A 发一条消息给 host B,其中包含 host A 发送消息的本地时间

host B 收到之后立刻把消息 echo 回 host A

host A 收到消息之后,用当前时间减去消息中的时间就得到了 RTT。

NTP 协议的工作原理与之类似,不过,除了测量 RTT,NTP 还需要知道两台机器之间的时间差 (clock offset),这样才能校准时间。

以上是 NTP 协议收发消 息的协议,RTT = (T4-T1) – (T3-T2),时间差 = ((T4+T1)-(T2+T3))/2。NTP 的要求是往返路径上的 单程延迟要尽量相等,这样才能减少系统误差。偶然误差由单程延迟的不确定性决定。

在我设 计的 roundtrip 示例程序中,协议有所简化: