**Network Time Protocol** (NTP) — сеткавы пратакол для сінхранізацыі ўнутранага гадзінніка камп’ютара з выкарыстоўваннем сетак са змяняльнай латэнтнасцю.
Выкарыстоўваецца з 1985 г. адзін з найстарэйшых пратаколаў. Быў распрацаваны Дэвідам Мілзам (англ.: David L. Mills) з Дэлавэрскага ўніверсітэту. Стваральнік пратаколу дасюль удасканальвае і абслугоўвае яго разам з камандай добраахвотнікаў.

Апісанне
--------

NTP аддае карыстальніку Ўніверсальны каардынаваны час з папраўкай на высакосную секунду. Інфармацыя пра часавыя паясы і пераход на летні час не перадаецца. Пратакол выкарыстоўвае алгарытм Марзула (англ.: Marzullo's algorithm), які дазваляе паменшыць уздзеянне змяняльнай латэнтнасці сеткі. NTP можа аддаваць час з хібнасцю ў дзесяць мілісекунд праз агульнадаступныя серверы Інтэрнэту, ці з хібнасцю да адной мілісекунды праз лакальныя сеткі ў ідэальных умовах.

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

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

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

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

Часавыя пласты
--------------

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

Нулявы пласт (*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

| ⛭Асноўныя пратаколы TCP/IP паводле ўзроўняў мадэлі OSI (спіс портаў TCP і UDP) |
| --- |
| Фізічны | 
* Ethernet
* RS-232
* EIA-422
* RS-449
* RS-485

 |
| Канальны | 
* Ethernet
* PPPoE
* PPP
* L2F
* 802.11 Wi-Fi
* 802.16 WiMax
* Token ring
* ARCNET
* FDDI
* HDLC
* SLIP
* ATM
* DTM
* X.25
* Frame relay
* SMDS
* STP

 |
| Сеткавы | 
* IPv4
* IPv6
* IPsec
* ICMP
* IGMP
* ARP
* RARP
* RIP2
* OSPF

 |
| Транспартны | 
* TCP
* UDP
* SCTP
* DCCP
* RUDP
* RTP
* GRE

 |
| Сеансавы | 
* ADSP
* H.245
* iSNS
* NetBIOS
* PAP
* RPC
* L2TP
* PPTP
* RTCP
* SMPP
* SCP
* ZIP
* SDP

 |
| Уяўленні | 
* XDR
* SSL
* TLS

 |
| Прыкладны | 
* BGP
* HTTP
* HTTPS
* DHCP
* IRC
* SNMP
* DNS
* DNSSEC
* NNTP
* XMPP
* SIP
* IPP
* NTP
* SNTP
* Электронная пошта
	+ SMTP
	+ POP3
	+ IMAP4
* Перадача выяў
	+ FTP
	+ TFTP
	+ SFTP
* Аддалены доступ
	+ rlogin
	+ Telnet
	+ SSH
	+ RDP

 |
| Іншыя прыкладныя | 
* OSCAR
* CDDB
* Multicast FTP
* Multisource FTP
* BitTorrent
* Gnutella
* Skype

 |