天天看點

開啟NTP時鐘伺服器,讓電腦變成網絡時間伺服器

開啟NTP時鐘伺服器,讓電腦變成網絡時間伺服器

對Windows熟悉的人都知道,在計算機系統時間設定裡,可以設定本地計算機時間與Internet時間伺服器時間同步,這樣計算機就會定期與網絡時間進行同步,不用就擔心自己的計算機在經曆較長時間後發生時間偏差。

我們都知道,計算機的時間來源于主機闆上的晶振,别管你的電腦有多貴,幾百塊的N手貨,或者是幾萬塊的吃雞神裝,這玩意兒的時間精度和你買給孩子的電子手表精度不會有太大差異。非網際網路環境下的計算機,難道就沒有辦法自動更新時間了嗎?當然不是的!計算機通過網絡授時,是利用了一個叫NTP的網絡授時協定,NTP的伺服器通過高精度的原子鐘來維持時間(新聞裡常說的叫,叫什麼一萬年誤差不超過一秒,具體誤差有多大,還得看原子鐘的具體類型),用戶端計算機通過和NTP伺服器通信,接收高精度且可信的時間來源,計算自己的時間誤差,進而進行修正。

有人就說了,我的網絡速度特别卡,打開個網頁就要幾分鐘,量你伺服器時間再準确,傳輸到我這裡,就已經慢了十幾秒了,這怎麼辦?放心,計算機的工程師們早就考慮到這個問題,NTP的協定,肯定不會那麼簡單。為了讓更多人能了解這個NTP的協定,我說一下其中的原理算法:假設用戶端C和伺服器S在目前時刻下,各自的時鐘時間分别為C1和S1,此時刻下用戶端與伺服器進行時間同步,他們之間應該會有這樣的對話交流:用戶端對伺服器說:“我的時間是C1。”這句話經過網絡延遲t1後被伺服器聽到,伺服器說:“我在S2時刻聽到你說時刻是C1,并在S3時刻告訴你。”

這句話又經過網絡延遲t2後,在C4時刻被用戶端聽到。t1+t2=(C4-C1)-(S3-S2)

這就是兩次網絡傳輸的總共延遲時間,假定發送和接收延遲相等,那麼單次網絡傳輸延遲就是t3=(t1+t2)/2。這樣,用戶端最後一次收到伺服器發來的時刻是S3,S3-t3就是用戶端要修正的正确時間。

當然,真實的NTP協定比這個要複雜,經過多次計算後,廣域網的NTP授時精度通常能達到50ms,也就是1/20秒,對一般人的授時需求,可以說是完全能夠滿足了。如果資料區域網路、城域網,經過的路由交換少,多次傳輸間的網絡延遲比較穩定,沒有大的偏差,授時精度甚至能達到10ms。

是以,言歸正傳,在非網際網路環境下,要實作整個内部網絡的時間同步,把NTP伺服器搬到區域網路下,為其他主機授時,是一個非常不錯的辦法,這樣隻需要花精力讓一台或幾台時間伺服器的時間保持精準就行了。

假設你找了一台電腦來做NTP的伺服器,打算買一台原子鐘來給伺服器授時(铷鐘6萬、铯鐘50萬、氫鐘130萬),授時精度0.1ns至5ns,老闆看了你的預算認為太高,不同意你買原子鐘,但是要求你必須在三天之内搞定公司内部授時的問題,防止員工以時間不準為由借機提前下班,否則就要開除你。于是你花100塊錢從淘寶上買了一個GPS子產品連接配接到電腦上,通過GPS信号實作了衛星授時,授時精度50ns。接下來,就要想辦法實作公司内部區域網路的時間同步了。雖然很多人都知道Windows可以設定與伺服器同步時間,但是很少有人知道他也可以反過來被設定為時間伺服器,正如同剛才我們模拟的用戶端與伺服器的對話,隻需要讓用戶端偵聽别人的詢問,并充當伺服器的角色進行回答就可以了。

前面的關子賣得太長,下面直接說幹貨。進入Windows後,按Windows+R,調出運作對話框,輸入regedit,确定後打開“系統資料庫編輯器”,在系統資料庫左側樹清單依次選擇:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer,右側找到Enabled,輕按兩下,把數值改為1,表示将NTP伺服器設定為可用。然後,依次展開HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config,右側找到AnnounceFlags,輕按兩下修改數值為5,表示訓示自身為可靠時間源。

開啟NTP時間伺服器,讓自己的電腦變成網絡時間源

最後,要確定計算機的Windows Time服務保持運作,正常情況下,Windows的計算機這個服務都是開啟的,右鍵“我的電腦”(Win10叫此電腦,改得真蛋疼),選擇“管理”,打開“計算機管理”,左側選擇“服務和應用程式”->“服務”,右邊找到Windows Time,就能看到此服務是否在運作,這個界面下,使用者也可以設定服務是否啟動、是否禁用等等。區域網路的時間伺服器,你就已經配置完成,現在讓大家都把Internet時間伺服器的位址改為你的伺服器的IP位址吧。

文章來源:安徽京準電子科技公司

繼續閱讀