檢測兩臺linux主機的時間差
在ip報文的首部和ICMP報文的首部都可以放入時間戳數據。 clockdiff 程序正是使用時間戳來測算目的主機和本地主機的系統時間差。
-o:使用IP時間戳選項來測量系統時間差。時間戳只用3個。
-o1:使用IP時間戳選項來測量系統時間差。用4個時間戳。如果-o和-o1都沒有設置,那么就是用ICMP時間戳來測試系統時間差。
lixi@lixi-desktop:~$ ping -T tsandaddr www.ustc.edu.cn -c 1
PING www.ustc.edu.cn (202.38.64.9) 56(124) bytes of data.
64 bytes from 202.38.64.9: icmp_seq=1 ttl=62 time=0.823 ms
TS: lixi-desktop.local (210.45.74.25) 12522473 absolute
210.45.74.1 -251
local-gw.ustc.edu.cn (202.38.64.126) 248
202.38.64.9 -857514
Unrecorded hops: 3
--- www.ustc.edu.cn ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.823/0.823/0.823/0.000 ms
首先由上面的得出在RRT不大的時候,幾個ICMP時間戳的關系。本地主機和202.38.64.9之間的時間差約為:-857514+248-251=-857517。分別用-o(IP選項中時間戳)和不帶選項(ICMP路由時間戳)上述路由的系統時間進行測試。得到的結果:
lixi@lixi-desktop:~# ./clockdiff -o 202.38.64.9
..................................................
host=202.38.64.9 rtt=1(0)ms/1ms delta=-857517ms/-857517ms Wed Dec 17 11:28:30 2008
lixi@lixi-desktop:~# ./clockdiff 202.38.64.9
.
host=202.38.64.9 rtt=750(187)ms/0ms delta=-857517ms/-857517ms Wed Dec 17 11:28:35 2008
兩種方法測試的都比較準確。
lixi@lixi-desktop:~#./clockdiff gigagate1.Princeton.EDU
..................................................
host=gigagate1.Princeton.EDU rtt=307(21)ms/271ms delta=-5ms/-5ms Wed Dec 17 11:50:16 2008
上面是測試一個RTT較大的目的主機和本地主機的系統時間差。不過在使用clockdiff的時候,需要一點運氣,因為很多路由會忽略ICMP或IP時間戳。