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