NTP

**Network Time Protocol** (NTP) — сеткавы пратакол для сінхранізацыі ўнутранага гадзінніка камп’ютара з выкарыстоўваннем сетак са змяняльнай латэнтнасцю.
Выкарыстоўваецца з 1985 г., адзін з найстарэйшых пратаколаў. Быў распрацаваны Дэвідам Мілзам () з Дэлавэрскага ўніверсітэту. Стваральнік пратаколу дасюль удасканальвае і абслугоўвае яго разам з камандай добраахвотнікаў.
## Апісанне 
NTP аддае карыстальніку Ўніверсальны каардынаваны час з папраўкай на высакосную секунду. Інфармацыя пра часавыя паясы і пераход на летні час не перадаецца. Пратакол выкарыстоўвае алгарытм Марзула (), які дазваляе паменшыць уздзеянне змяняльнай латэнтнасці сеткі. NTP можа аддаваць час з хібнасцю ў дзесяць мілісекунд праз агульнадаступныя серверы Інтэрнэту, ці з хібнасцю да адной мілісекунды праз лакальныя сеткі ў ідэальных умовах.

Паводле стану на чэрвень 2010, дзейнае апісанне пратаколу NTP чацвёртай версіі (яна з'яўляецца цяперашнім прапанаваным стандартам) задакументаванае ў RFC5905. Існуе трэцяя версія, задакументаваная ў RFC1305.

Пратакол выкарыстоўвае UDP-порт 123.

Найпрасцейшая рэалізацыя гэтага пратаколу - *SNTP* () выкарыстоўваецца ва ўбудаваных сістэмах і тых праграмах, што не патрабуюць высокай дакладнасці.

NTP ужываецца для арганізацыі сервераў дакладнага часу, перадачы часу на камп'ютары лакальных сетак і г.д. 

## Часавыя пласты 
міні|Жоўтыя стрэлкі паказваюць апаратнае злучэнне, чырвоныя — сеткавае
NTP выкарыстоўвае іерархічную сістэму крыніц часу. Кожны ўзровень гэтай іерархіі называюць пластом () і нумаруюць ад нуля ўверсе. Варта адзначыць, што нумар пласта не з'яўляецца паказчыкам якасці — крыніца трэцяга пласта можа даваць дакладнейшы час за крыніцу другога ўзроўню. Пласты ўжываюцца для размеркавання нагрузкі на сетку.

Нулявы пласт (*stratum 0*) — гэта апаратная крыніца часу: эталонны атамны, квантавы, радыёгадзіннік, GPS-прыёмнік. Звычайна гэтыя прылады не далучаныя да Інтэрнэту, але звязаныя з лакальным камп'ютарам, напр., праз COM-порт і перадаюць PPS-сігналы для сінхранізацыі.

Першы пласт (*stratum 1*) — камп'ютар, які мае непасрэднае злучэнне з апаратным гадзіннікам. Ён з'яўляецца серверам часу, адказваючы на NTP-запыты ад камп'ютараў другога ўзроўню.

Камп'ютары ў *startum 2* атрымліваюць інфармацыю праз NTP ад камп'ютараў пласта 1. Звычайна камп'ютары з пласта 2 звяртаюцца да некалькіх сервераў часу. Выкарыстоўваючы NTP-алгарытм, яны адкідаюць звесткі з відавочна няправільным часам (сервер, які не сінхранізуецца з крыніцай часу, мае статус *stratum 16*). Камп'ютары могуць параўноўваць свае значэнні часу з іншымі ЭВМ свайго пласта, каб атрымаць у выніку стабільныя звесткі. Да таго ж, камп'ютары з другога пласта з'яўляюцца серверамі часу для камп'ютараў з трэцяга пласта.

Трэці пласт (*stratum 3*) працуе гэтак жа, як і камп'ютары *startum 2*, але крыніца часу для іх — не *stratum 1*, а камп'ютары *stratum 2*. ЭВМ з трэцяга пласта могуць з'яўляцца серверамі часу для камп'ютараў з чацвёртага і г.д.

## Прыклад ужывання NTP-сінхранізацыі 
Ніжэй прыведзены просты bash-скрыпт для сінхранізацыі часу ў сістэме Linux. Выкарыстоўваецца праграма-дэман ntpd:
 :
 /etc/init.d/ntp stop
 ntpdate -q by.pool.ntp.org
 ntpdate by.pool.ntp.org
 /etc/init.d/ntp start
 exit 0

Скрыпт спыняе ntp-кліент на камп'ютары, паказвае інфармацыю пра сервер, атрымлівае дакладны час і запускае ntp. Інфармацыя ад дэмана выглядае наступным чынам:
 Stopping NTP server: ntpd.
 server 86.57.151.18, stratum 4, offset -0.012289, delay 0.08080
 server 93.84.115.2, stratum 2, offset 0.017060, delay 0.12947
 server 31.130.200.2, stratum 3, offset 0.021241, delay 0.13731
 server 82.209.245.153, stratum 3, offset -0.002228, delay 0.08522
 30 Sep 01:09:52 ntpdate[1021]: adjust time server 93.84.115.2 offset 0.017060 sec
 30 Sep 01:09:59 ntpdate[1035]: adjust time server 93.84.115.2 offset 0.017371 sec
 Starting NTP server: ntpd.

Пасля спынення ntp-кліента, мы бачым інфармацыю пра крыніцы часу (чатыры серверы з рознымі IP і пластамі ад 2 да 4). Дэман ntpd абірае крыніцу *stratum 2* са зрухам у 0,17 с ад часу на камп'ютары карыстальніка і затрымкай каля 0,13 с. У момант паказу інфармацыі ў камандным радку зрух часу складаў 0,01706 с, а ў момант сінхранізацыі — 0,017371 с.

## Бяспека 
Толькі некалькі праблем з бяспекаю пратаколу былі зафіксаваныя за яго шматгадовую гісторыю. NTP праглядаўся і аналізаваўся на працягу свайго існавання. Паводле стану на студзень 2011, пратакол не мае праблем з бяспекай. Справаздачы ад Каардынацыйнага Цэнтру CERT пра сур'ёзныя памылкі ў рэалізацыі пратаколу не зафіксаваныя. Актуальная праграмная рэалізацыя пратаколу рэгулярна зведвае аўдыт коду, які паказвае, што крытычныя памылкі, звязаныя з бяспекай, адсутнічаюць.

## Спасылкі 
* Інтэрнэт кластар сервераў NTP
* Сервер NTP Test Online Tool

 

Катэгорыя:Час
Катэгорыя:Сеткавыя пратаколы