網誌統計

  • Total Stats
    • 1,107 Posts
    • 3,437 Comments

到訪統計

View My Stats
2003-8 月-24 11:15 上午

關於WIN 2000 Server 的對時問題

  What Time Is It Now On Your Windows 2000 Server? 電腦中的時鐘,其準確度甚至比不上我們的手錶或一般時鐘,想像不到吧!自從PC個人電腦問世以來,個人電腦的計時方式都沒有什麼重大改變,每部個人電腦都有兩個時鐘:”軟體”的時鐘與”硬體”的時鐘,硬體的時鐘靠電源持續運作,軟體的時鐘則只有在電腦啟動時會運作。


  軟體的時鐘是經由BIOS讀取計時晶片所產生的中斷計算出時間的,例如INTEL 8254 計時晶片每隔54.936 millisecond 就會產生一次中斷,可以藉由此頻率計算出時間來,問題是這種中斷的頻率却極容易被干擾,此外其精確度也不足。

硬體的時鐘也是靠晶片運作,每秒更新一次而來,並且在電腦電源關閉之後仍然可以靠著電池計時。自1984年以後生產的個人電腦都有內部電池的設計。但是硬體時鐘其實很容易受到各種外在環境因素的影響,大部分的電腦硬體時鐘每日誤差大約在5到15秒之間。

每當電腦的電源啟動時,軟體時鐘就會在一秒以內向硬體時鐘對時,但是因為兩者運作的原理與頻率並不相同所以其時間到最後會漸行漸遠。很顯然電腦的時鐘並不適合精確計時用,特別是在對於計時精度要求較高的領域,例如科學、財務或是生產線、儀控等地方。

早期,DOS作業系統會在系統啟動後要求使用者輸入日期與時間,電腦網路普及之後,伺服器很自然的成為最佳的對時來源,Novell Netware 就是一例,會自動的對登入的電腦做對時的動作,相對的,Microsoft 的伺服器產品似乎並不重視這個問題,至少在NT Server 3.51 到4.0 的時候都是如此。

在Windows NT 4.0 的系統上最早必須使用Resource Kit 的 TimeServ 工具來解決對時這個問題,接著因為 Y2K 的因素必須改用W32Time 來解決此一問題,所利用的是SNTP 的網路協定。

到了Windows 2000 出現之後,Windows 伺服器缺乏內建網路對時機能的情況終於有了改善,稱之為Windows Time Service的新功能終於出現了。

Windows 2000 利用Kerberos V5 當做主要的網路認證協定,依據的是RFC 1510的標準,其中的一個要求則是電腦系統對時,因此Windows 2000 設計了全新的 Windows Time Service (W32Time),來達到這個要求。

Windows 2000 不用其他的客戶端校時程式即可利用NTS (Network Time Service) 來進行對時。
Windows 2000對時的架構:

  1. 所有跑Windows 2000 的workstation 或member server 都向DC對時,通常為有其computer account 的DC或是驗證使用者logon的DC。
  2. 在每一個domain中有一部DC扮演PDC emulator FSMO的角色(通常是第一部DC),所有的DC都向其對時。
  3. 每一個domain的PDC emulator FSMO都向forest 中第一個domain (root domain)的PDC emulator FSMO對時。

對時的時機:在指定的時間、每8個小時或是有人logon 時。

只有具有PDC emulator FSMO角色的DC才能利用domain外部的時間對時,請參考MS Q243574。

如何使這唯一的一部電腦,root domain 的PDC emulator FSMO,與外部的精準時間對時?使用 net time /setsntp: <servername> 命令。

所使用的是SNTP 通訊協定,UDP Port 123, RFC 2030。

那裡有SNTP Server 呢?美國國家標準局、美國海軍天文台是在美國正式的對時機構,有一些SNTP Server 可以利用,例如tick.usno.navy.mil 或是tock.usno.navy.mil 。大部分ISP 的DNS Server 也是SNTP Server。在台灣則有時頻國家標準實驗室與中華電信研究所提供網路對時服務。

指令例:

  1. net time /setsntp:tick.usno.navy.mil
  2. net time /setsntp:”tick.usno.navy.mil 129.6.15.28”

要查詢電腦所對時的對象:net time /querysntp。(只有在具有PDC emulator FSMO角色的DC上才能使用此命令)

初次對時後會等45分鐘再對時一次,如果差距在2秒內,下次對時間隔會加倍,也就是1.5小時之後再對時。如果時間差依然在2秒內的話,對時間隔會再加倍一直到最大8小時為止。也就是說最久每8個小時會對時一次。

可以改 registry 讓 Windows 2000 server 成為 SNTP Server:從HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParamaters

找出 localNTP 這個 REG_DWORD Key,將0改成1,重新啟動Windows Time Service即可。

如果不使用AD的話可以用其他的SNTP Client來使client PC與SNTP Server 對時。

NIST 提供有NISTIME 的客戶端對時程式,中華民國時頻國家標準實驗室也提供有NTPClock客戶端對時程式。

在Windows 2000 上指定 SNTP Server 最好是用 IP Address,不要用FQDN,原因請參考MS Q285641。
  


NTP 相關網頁

  1. http://www.eecis.udel.edu/~ntp (美國德拉瓦大學)
  2. http://www.stdtime.gov.tw/ (中華民國時頻國家標準實驗室)
  3. http://www.chttl.com.tw/ (中華電信研究所)
  4. http://www.usno.navy.mil/ (美國海軍天文台, USNO)
  5. http://www.boulder.nist.gov/timefreq/ (美國國家標準局, NIST)

 


 SNTP Server List
  

FQDN

IP

Organization

tick.stdtime.gov.tw

210.59.157.40

中華民國時頻國家標準實驗室

tock.stdtime.gov.tw

210.59.157.41

中華民國時頻國家標準實驗室

time.chttl.com.tw

202.39.157.151

中華電信研究所

time.stdtime.gov.tw

210.59.157.10

中華民國時頻國家標準實驗室

clock.stdtime.gov.tw

210.59.157.30

中華民國時頻國家標準實驗室

time1.chttl.com.tw

202.39.138.193

中華電信研究所

tick.usno.navy.mil

192.5.41.40

USNO 美國海軍天文台

nist1.datum.com

63.149.208.50

NIST 美國國家標準局 (加州聖荷西)

SNTP (Simple Network Time Protocol, RFC-2030): 1985年由德拉瓦大學的 D.L. Mills 教授提出,屬於另一協定NTP的子集或是簡化的版本。


各種網路時間協定: 

通訊協定

文件

UDP Port

資料格式

精度

Day Time Protocol

RFC-867

13

ASCII

Time Protocol

RFC-868

37

32-bit Binary Number

Network Time Protocol

RFC-1305

123

64-bit Binary Number

1~50 ms

Simple Network Time Protocol

RFC-2030

123

64-bit Binary Number

>50 ms

分享或推文 !!

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料