Revision 1173056 of "NTP" on bewiki

{{Картка пратаколу
  |Абр = NTP
  |Назва = Network Time Protocol
  |Узровень = Прикладной
  |Сямейства = [[стэк пратаколаў TCP/IP|TCP/IP]]
  |Створаны = [[1990]]
  |Порт = 123/[[UDP]]
  |Прызначэнне = Сінхранізацыя часу
  |Спецыфікацыя = RFC 5905
}}
'''Network Time Protocol''' ('''NTP''') — [[сеткавы пратакол]] прызначаны дзеля сінхранізацыі унутраных гадзіннікаў [[камп'ютар]]а з выкарыстоўваннем сетак з пераменнай латэнтнасцю.

NTP карыстаецца для сваёй работы пратаколам [[UDP]]. Сістэма NTP надзвычай устойліва да зменаў хуткасці перадачы данных.

NTP выкарыстощвае алгарытм Марзулло, (прапанован Кейтам Марзулло (Keith Marzullo) з Універсытэта Каліфорніі Сан-Дыего), уключае такую асаблівасць, як улік часу трансферу. У версіі 4 здольны дасягаць дакладнасчці ў 10 мс (1/100 с) пры працы праз [[Інтэрнэт]], і да 0,2 мс (1/5000 с) ды лепш унутры лакальных сетак.

NTP — адзін з найстарэйшых кампутарных пратаколаў. NTP распрацаваны Дэвидам Л. Міллсам (David L. Mills) з універсітэта Дэлавера ў 1985 годзе і ў сапраўдны час працягвае ўдасканаленне. Бягучая версія — NTP 4.

NTP выкарыстоўвае іерархічную сістэму «пластоў часу» (stratum). Узровень 1 сінхранізаваны з высокадакладным гадзіннікам, напрыклад з сістэмай[[GPS]], [[ГЛОНАСС]] (Агульная Дзяржащная шкала часу РФ) ці атамным эталонам часу. Узровень 2 сінхранізуецца з адной з машын узроўня 1, і гэтак далей.

Час уяўляецца ў сістэме NTP 64-бітнай лічбай (8 [[байт]]), што складаецца з 32-битнага лічыльніка секунд і 32-бітнаго лічыльніка далей секунд, дазваляючы передаваць час у дыяпазоне 2<sup>32</sup> секунд, з теаратычнай дакладнасцю 2<sup>−32</sup> секунды. Так як шкала часу NTP паўтараецца кожныя 2<sup>32</sup> секунды (136 гадоў), карыстальнік павінен хоць прыблізна ведаць бы цяперашні час(з дакладнасцю 50 гадоў).

Найбольш шырокае ўжыванне пратакол NTP знаходзіць у рэалізацыі сервероў дакладнага часу. Дзеля дасягнення максімальнай дакладнасці пераважна няспыўная праца праграмнага забеспячэння NTP у рэжыме сістэмнай службы. У сямействе аперацыйных сістэм систем [[Microsoft Windows]], — гэта служба W32Time (модуль w32time.dll, выконваючыся ў svchost.exe), [[Linux]] - сэрвіс [[Ntpd]].

Больш простая рэалізація гэтага алгарытму вядома як [[SNTP]] — просты сінхранізуючы сеткавы пратакол. Выкарыстощваецца ў устаўлёных сістэмах і прыладах, не патрабуючых высокой дакладнасці, а таксама ў карыстальніцкіх праграмах дакладнага часу.

Падрабязная рэалізацыя пратаколу цалкам апісана ў:
* RFC 778
* RFC 891
* RFC 956
* RFC 958
* RFC 1305
* RFC 2030
* RFC 4330 
* RFC 5905

NTP не варта блытать з [[daytime protocol]] RFC 867 ці [[time protocol]] RFC 868 (win праграма [http://freestone-group.com/fg-time-sync.htm FG Time Sync]).

== пласты часу ==

[[Image:Network Time Protocol servers and clients.svg|thumb|350px|right|жоўтыя стрэлкі пазначаюць апаратнае злучэнне; чырвоные пазначаюць сеткавае злучэнне.]]

NTP уяўляе сабой іерархічную, шматузроўневую сістэму крыніц часу. Кожны ўзровень той іерархіі завецца пластом, кожнаму пласту прысвойваецца нумар, пачынаючы з 0 (нуль) у вяршыні. Узровень пласта вызначае адлегласць ад эталоннага гадзінніка і існуе, каб прадухіліць цыклічные залежласці ў іерархіі. Варта адзначыць, што пласт не з'яўляецца паказальнікам якасці ды надзейнасці, гэта значыць, што крыніца ''пласту 3'' можа даць больш дакладны сігнал, чым некаторыя крыніцы ''пласту 2''. Галоўным чынам пласты належаць дзеля размеркавання нагрузкі і забеспячэння большай плошчы пакрыцця. Гэта азначэнне пласту таксама адрозніваецца ад паняцця пластоў часу, выкарыстоваемага ў  тэлекамунікацыйных сістэмах.

'''Пласт 0'''

Пласт 0 - гэта высокадакладныя прыборы, прызначаныя быць эталонам часу, такия як атамны (малекулярны, квантавы) гадзіннік, радиёгадзіннік ці іх аналагі. Звычайна гэтыя прылады не далучаны да сеткі; замест гэтага яны далучаны да лакальнага кампутара (напрыклад, праз інтерфейс [[RS-232]]) ды перадаюць сігналы  [[Pulse Per Second|PPS]] для сінхранізацыі.

'''Пласт 1'''

Гэта кампутар, да якога наўпрост далучаны эталонны гадзіннік. Ён выступае ў якасці сеткавага серверу часу і адказвае на NTP-запыты, адпраўляемыя кампутарамі пласту 2. 

'''Пласт 2'''

Это компьютеры, которые получают время от серверов первого слоя, используя для этого протокол NTP.
Обычно, компьютеры второго слоя обращаются к нескольким серверам первого слоя, и используя NTP-алгоритм, получают наилучший образец данных, отсеивая сервера с очевидно неверным временем.
Компьютеры могут сравнивать свои данные с другими компьютерами своего слоя для получения стабильных и непротиворечивых данных на всех компьютерах слоя.
Компьютеры второго слоя в свою очередь выступают в качестве серверов для компьютеров третьего слоя и отвечают на NTP-запросы.


'''Слой 3'''

Компьютеры третьего слоя работают точно так же как и компьютеры второго слоя, с той лишь разницей, что серверами для них являются компьютеры вышележащего второго слоя. Они так же могут выступать в качестве серверов для нижележащего слоя. 
NTP (в зависимости от версии) поддерживает до 256 слоев.