ntp服(fu)(fu)(fu)務器(qi),對大多數(shu)人來說是一個陌生詞(ci)匯,但(dan)是要(yao)理解(jie)ntp服(fu)(fu)(fu)務器(qi)必須先(xian)了解(jie)什(shen)(shen)么是ntp和什(shen)(shen)么是服(fu)(fu)(fu)務器(qi)?
NTP全名“Network TimeProtocol”,即網絡時(shi)(shi)間(jian)協議,是由RFC 1305定(ding)義(yi)的時(shi)(shi)間(jian)同(tong)步協議,用來在分布式(shi)時(shi)(shi)間(jian)服務器和客戶端之間(jian)進行時(shi)(shi)間(jian)同(tong)步。
NTP基于UDP報文進行(xing)傳輸,使(shi)用的(de)(de)(de)UDP端(duan)口號為(wei)123。使(shi)用NTP的(de)(de)(de)目的(de)(de)(de)是對網絡內所(suo)有具有時鐘(zhong)的(de)(de)(de)設(she)(she)備進行(xing)時鐘(zhong)同步,使(shi)網絡內所(suo)有設(she)(she)備的(de)(de)(de)時鐘(zhong)保持一(yi)致,從而使(shi)設(she)(she)備能夠提供(gong)基于統一(yi)時間的(de)(de)(de)多種應(ying)用。對于運行(xing)NTP的(de)(de)(de)本(ben)地系統,既可(ke)以接收來自其(qi)(qi)他(ta)時鐘(zhong)源的(de)(de)(de)同步,又可(ke)以作(zuo)為(wei)時鐘(zhong)源同步其(qi)(qi)他(ta)的(de)(de)(de)時鐘(zhong),并且(qie)可(ke)以和其(qi)(qi)他(ta)設(she)(she)備互相同步。
服(fu)(fu)務(wu)(wu)器,英文(wen)名“server”也(ye)稱(cheng)伺服(fu)(fu)器,是提供計算(suan)服(fu)(fu)務(wu)(wu)的設備(bei)。由(you)于(yu)服(fu)(fu)務(wu)(wu)器需要響應服(fu)(fu)務(wu)(wu)請求,并進行處理,因此一般來說(shuo)服(fu)(fu)務(wu)(wu)器應具備(bei)承擔服(fu)(fu)務(wu)(wu)并且保(bao)障服(fu)(fu)務(wu)(wu)的能力。
服(fu)務器的構(gou)成(cheng)包括處(chu)理(li)(li)器、硬盤、內存、系統總(zong)線(xian)等,和通用的計算機架構(gou)類似,但(dan)是由于需要提供高(gao)可(ke)(ke)靠(kao)的服(fu)務,因此在處(chu)理(li)(li)能力、穩定性、可(ke)(ke)靠(kao)性、安全性、可(ke)(ke)擴展性、可(ke)(ke)管理(li)(li)性等方面要求較高(gao)。
在網絡環境下(xia),根據(ju)(ju)服務(wu)(wu)器(qi)提供的(de)服務(wu)(wu)類(lei)型不同(tong),分(fen)為文件服務(wu)(wu)器(qi),數據(ju)(ju)庫服務(wu)(wu)器(qi),應用程序服務(wu)(wu)器(qi),WEB服務(wu)(wu)器(qi)等。
前面(mian)我們分別了解(jie)到了NTP和服務(wu)(wu)(wu)器(qi),那到底是什(shen)么(me)NTP服務(wu)(wu)(wu)器(qi)呢?根(gen)據(ju)表面(mian)意思理解(jie)NTP服務(wu)(wu)(wu)器(qi),即(ji)基于NTP協議的服務(wu)(wu)(wu)器(qi),用來在分布式時間(jian)服務(wu)(wu)(wu)器(qi)和客戶端之間(jian)進行時間(jian)同步。
NTP服(fu)(fu)務(wu)(wu)(wu)器(qi)在(zai)應(ying)用(yong)(yong)于時(shi)(shi)間同步中(zhong)分為客(ke)戶端NTP服(fu)(fu)務(wu)(wu)(wu)器(qi)和服(fu)(fu)務(wu)(wu)(wu)端NTP服(fu)(fu)務(wu)(wu)(wu)器(qi)兩(liang)種。客(ke)戶端主(zhu)要應(ying)用(yong)(yong)于現有NTP網(wang)絡環境(jing)中(zhong),獲取(qu)前端NTP服(fu)(fu)務(wu)(wu)(wu)器(qi),主(zhu)要是利用(yong)(yong)已經存在(zai)的(de)(de)網(wang)絡環境(jing),搭建時(shi)(shi)間同步系(xi)統(tong),實(shi)現的(de)(de)是一個(ge)從時(shi)(shi)鐘的(de)(de)功能。服(fu)(fu)務(wu)(wu)(wu)端NTP服(fu)(fu)務(wu)(wu)(wu)器(qi)主(zhu)要是指用(yong)(yong)于后端網(wang)絡環境(jing)中(zhong)設備的(de)(de)時(shi)(shi)間同步,為網(wang)絡中(zhong)的(de)(de)服(fu)(fu)務(wu)(wu)(wu)器(qi),計算機等網(wang)絡設備提供一個(ge)時(shi)(shi)間統(tong)一的(de)(de)功能,實(shi)現主(zhu)時(shi)(shi)鐘的(de)(de)同步功能。
前面(mian),我們(men)很自(zi)然的(de)(de)了(le)解到(dao)了(le)什么(me)是(shi)ntp,也(ye)有了(le)一個大(da)概的(de)(de)認識(shi),那么(me)ntp服務(wu)器(qi)(qi)是(shi)做什么(me)的(de)(de),它到(dao)底能做什么(me),這(zhe)也(ye)是(shi)我們(men)對(dui)于ntp服務(wu)器(qi)(qi)這(zhe)個名稱屬(shu)性放在這(zhe)里,我們(men)最需要(yao)傳達的(de)(de)東西。
NTP服(fu)務器(qi)主要用來(lai)同步網絡中各(ge)個計算機(ji)的(de)時間(jian)(jian)的(de)協議。它(ta)(ta)的(de)用途(tu)是(shi)把計算機(ji)的(de)時鐘(zhong)(zhong)同步到(dao)世界協調時UTC,其精(jing)(jing)度(du)在局域網內可(ke)達0.1ms,在互(hu)聯(lian)網上絕大多數的(de)地方(fang)其精(jing)(jing)度(du)可(ke)以(yi)達到(dao)1-50ms。它(ta)(ta)可(ke)以(yi)使計算機(ji)對其服(fu)務器(qi)或時鐘(zhong)(zhong)源(如(ru)石英(ying)鐘(zhong)(zhong),GPS等(deng)等(deng))進行(xing)時間(jian)(jian)同步,它(ta)(ta)可(ke)以(yi)提供(gong)高精(jing)(jing)準(zhun)度(du)的(de)時間(jian)(jian)校正(zheng),而且可(ke)以(yi)使用加密確認(ren)的(de)方(fang)式來(lai)防止病毒的(de)協議攻擊。
很多人可能(neng)會(hui)說,我的(de)計算(suan)機(ji)(ji)每(mei)天自己(ji)走時,為何還(huan)需(xu)要用一個(ge)ntp服務器再同(tong)步時間呢?這主要是(shi)因為在計算(suan)機(ji)(ji)中芯(xin)片(pian)(pian)本身通常并(bing)不具備時鐘(zhong)信號(hao)源,因此須由專門的(de)時鐘(zhong)電(dian)(dian)路提(ti)供(gong)時鐘(zhong)信號(hao),石英晶(jing)體振(zhen)蕩器(Quartz Crystal OSC)就是(shi)一種最常用的(de)時鐘(zhong)信號(hao)振(zhen)蕩源。石英晶(jing)片(pian)(pian)之(zhi)所以能(neng)當(dang)為振(zhen)蕩器使用,是(shi)基于它的(de)壓電(dian)(dian)效應:在晶(jing)片(pian)(pian)的(de)兩(liang)個(ge)極(ji)上加(jia)一電(dian)(dian)場(chang),會(hui)使晶(jing)體產(chan)(chan)生(sheng)機(ji)(ji)械變(bian)形;在石英晶(jing)片(pian)(pian)上加(jia)上交(jiao)變(bian)電(dian)(dian)壓,晶(jing)體就會(hui)產(chan)(chan)生(sheng)機(ji)(ji)械振(zhen)動,同(tong)時機(ji)(ji)械變(bian)形振(zhen)動又(you)會(hui)產(chan)(chan)生(sheng)交(jiao)變(bian)電(dian)(dian)場(chang)。雖然(ran)這種交(jiao)變(bian)電(dian)(dian)場(chang)的(de)電(dian)(dian)壓極(ji)其微弱,但其振(zhen)動頻率是(shi)十分穩定的(de)。
從PC誕(dan)生至今,主板上(shang)一(yi)(yi)直都使用一(yi)(yi)顆14.318MHz的(de)石(shi)英晶體振蕩器(qi)作為基準(zhun)頻(pin)率源(yuan)。主板上(shang)除了(le)這顆14.318MHz的(de)晶振,還能找到(dao)一(yi)(yi)顆頻(pin)率為32.768MHz的(de)晶振,它被用于實時時鐘(RTC)電路中,顯(xian)示(shi)精(jing)確的(de)時間和日(ri)期。初(chu)始(shi)化后以(yi)每秒約(yue)18.2次發出脈(mo)沖,這些脈(mo)沖經過操作系統(tong)計(ji)算形成(cheng)BIOS日(ri)時鐘計(ji)數。通過由BIOS電池(chi)供電,關機后它仍然(ran)正(zheng)(zheng)常(chang)運(yun)行。這也就是為啥(sha)我們關了(le)電源(yuan),第二天開機依然(ran)會(hui)顯(xian)示(shi)正(zheng)(zheng)確時間的(de)原因(yin)。
每個(ge)計算機(ji)各自(zi)有了時(shi)鐘(zhong),但是(shi)一(yi)旦它們聯網后(hou),又(you)出現(xian)一(yi)個(ge)問題:各自(zi)運(yun)行的(de)(de)(de)計算機(ji)時(shi)鐘(zhong),彼此之(zhi)間(jian)(jian)日積月(yue)累的(de)(de)(de)累計誤差(cha)如何解決。這就出現(xian)了網絡(luo)時(shi)間(jian)(jian)協議NTP,它是(shi)用(yong)于互聯網中時(shi)間(jian)(jian)同步(bu)的(de)(de)(de)標準之(zhi)一(yi),它的(de)(de)(de)用(yong)途是(shi)把計算機(ji)的(de)(de)(de)時(shi)鐘(zhong)同步(bu)到世界協調(diao)時(shi)UTC,并滿足于用(yong)戶(hu)環境中的(de)(de)(de)計算機(ji)(服務器同理)設備的(de)(de)(de)時(shi)間(jian)(jian)同步(bu)。
對大多數人來說(shuo)可能會很疑問,我(wo)的(de)計(ji)算機(ji)時間已(yi)經夠我(wo)用了(le)啊,我(wo)為何需要單(dan)獨的(de)ntp服務(wu)器(qi)。那(nei)么問題來了(le),一個系(xi)統里整體運行(xing)的(de)所有計(ji)算機(ji)服務(wu)器(qi),如果都(dou)獨立運行(xing)那(nei)整個系(xi)統工作是否都(dou)亂套了(le)?
我(wo)們舉幾(ji)個(ge)(ge)(ge)簡單(dan)的(de)例子(zi):如果公共大樓遇(yu)到突發事情每(mei)個(ge)(ge)(ge)監控裝置時(shi)間(jian)不一,后(hou)期(qi)事故調(diao)查取證監控時(shi)間(jian)參(can)差(cha)不齊(qi)無法還原本質,責任誰來(lai)(lai)擔當?醫院系(xi)(xi)統各個(ge)(ge)(ge)科室職能(neng)兼受,若(ruo)(ruo)時(shi)間(jian)相(xiang)互差(cha)開,病人數據記錄與實(shi)際時(shi)間(jian)前后(hou)出(chu)入,若(ruo)(ruo)出(chu)現分歧責任甩給(gei)設(she)備(bei)(bei)(bei)原因,設(she)備(bei)(bei)(bei)是否能(neng)夠出(chu)面來(lai)(lai)協調(diao)?電力電廠系(xi)(xi)統中有很多需要(yao)互相(xiang)協調(diao)合作(zuo)的(de)設(she)備(bei)(bei)(bei),若(ruo)(ruo)出(chu)現各個(ge)(ge)(ge)系(xi)(xi)統設(she)備(bei)(bei)(bei)之間(jian)時(shi)間(jian)紊(wen)亂(luan),就會(hui)導致運行機制無法協調(diao)合作(zuo),那整個(ge)(ge)(ge)電廠的(de)運行失(shi)調(diao),所造(zao)成的(de)損失(shi)無法估(gu)量。
所(suo)以,ntp服(fu)務器在各行各業系(xi)(xi)(xi)(xi)統(tong)發揮協調作用(yong)的同時,已經(jing)成為了不可(ke)或缺的必備(bei)系(xi)(xi)(xi)(xi)統(tong),是(shi)各個(ge)系(xi)(xi)(xi)(xi)統(tong)穩定運行基(ji)(ji)于安(an)全(quan)因素中必須存(cun)在的重要(yao)設備(bei)。ntp服(fu)務器服(fu)務器應用(yong)于不同行業系(xi)(xi)(xi)(xi)統(tong)中,為網絡內(nei)設備(bei)提(ti)供標準(zhun)的時間基(ji)(ji)準(zhun),使得各個(ge)獨(du)立又相(xiang)互關聯的設備(bei)有(you)了可(ke)參考的維度標準(zhun)。
NTP提(ti)供準(zhun)確(que)時(shi)(shi)間(jian)(jian),首(shou)先(xian)要有(you)(you)準(zhun)確(que)的(de)時(shi)(shi)間(jian)(jian)來源,這(zhe)一(yi)時(shi)(shi)間(jian)(jian)應該是國際標準(zhun)時(shi)(shi)間(jian)(jian)UTC。 NTP獲得UTC的(de)時(shi)(shi)間(jian)(jian)來源可(ke)以(yi)(yi)是原子鐘、天文臺、衛星(xing),也可(ke)以(yi)(yi)從Internet上獲取。這(zhe)樣就有(you)(you)了準(zhun)確(que)而(er)可(ke)靠的(de)時(shi)(shi)間(jian)(jian)源。時(shi)(shi)間(jian)(jian)按NTP服務器的(de)等級(ji)傳播。按照離外部UTC 源的(de)遠近將所有(you)(you)服務器歸入(ru)(ru)不同的(de)Stratum(層(ceng))中。Stratum-1在(zai)頂層(ceng),有(you)(you)外部UTC接入(ru)(ru),而(er)Stratum-2則從Stratum-1獲取時(shi)(shi)間(jian)(jian),Stratum-3從Stratum-2獲取時(shi)(shi)間(jian)(jian),以(yi)(yi)此類推,但Stratum層(ceng)的(de)總(zong)數(shu)限(xian)制在(zai)15以(yi)(yi)內。所有(you)(you)這(zhe)些服務器在(zai)邏輯上形成階(jie)梯(ti)式(shi)的(de)架(jia)構相互連接,而(er)Stratum-1的(de)時(shi)(shi)間(jian)(jian)服務器是整個系統的(de)基(ji)礎。
計算機主機一般同多個時間服務器連接, 利用統計學的(de)(de)算法(fa)過濾來(lai)自不同(tong)服(fu)務器的(de)(de)時(shi)間(jian)(jian),以選(xuan)擇最佳的(de)(de)路徑和來(lai)源(yuan)來(lai)校正主機時(shi)間(jian)(jian)。即使主機在長時(shi)間(jian)(jian)無(wu)法(fa)與某一時(shi)間(jian)(jian)服(fu)務器相聯系的(de)(de)情況下,NTP服(fu)務依然有效運轉。
為防止對時間服務器(qi)的惡意破壞,NTP使(shi)用了(le)識(shi)別(Authentication)機制,檢查(cha)來對時的信(xin)息是(shi)否(fou)是(shi)真正來自所宣稱的服務器(qi)并檢查(cha)資料的返回路徑,以提供對抗干擾的保護機制。