# Мрежен протокол за време

**Мрежниот протокол за време** (анг: *Network Time Protocol – NTP*) е протокол за синхронизирање на часовниците кај компјутерските системи преку податочните мрежи. Мрежниот протокол за време користи протокол на кориснички датаграми на влез 123 како негов транспортен слој. Овој протокол е дизајниран да ги издржи ефектите на променливите на латентност со користење на одреден бафер. Исто така се однесува за упатување на спроведувањето на програмот која се распределува од страна на проектот за јавни услуги на мрежниот протокол за време.

Мрежниот протокол за време еден од најстарите семрежни протоколи кој уште се користи. Мрежниот протокол за време бил дизајниран од страна на Дејв Милс од универзитетот Делавер, кој сè уште го одржува протоколот со тим од волунтери.

Мрежниот протокол за време го користи алгоритмот на Марзуло (Marzullo) кој содржи функции наречени скок секунди. Овој протокол обично може да го одржува времето до 10 милисекунди преку семрежјето и може да постигне прецисност до 200 микросекунди и дури подобри резултати под идеални услови во локалната мрежа.

Мрежниот протокол за време обезбедува Координирано универзално време (анг: *Coordinated Universal Time - UTC*). Нема инфотмации за часовните појаси, но има за заштедување на времето кој се пренесува. Оваа информација е надвор од нејзиниот опсег и мора да се добие посебно. Во изолираната локална мрежа, мрежниот протокол за време може да се користи за распределба во различен временски опсег.

Оперативните делати на мрежниот протокол за време се специфивирани во RFC 778, RFC 891, RFC 956, и RFC 1305. Моменталната референтната имплементација е верзијата 4 (NTPv4) меѓутоа, почнувајќи од 2005 година, само верзиите до 3 се документирани во RFC. Работната група Семрежното инженерство ја стандардизира работата на заедницата на мрежниот протокол за време по објавувањето на RFC 1305.
Помалку сложена имплементација на мрежниот протокол за време се прави со користење на истиот протокол без складирање на состојбата во одредено време, овој протокол е уште познат како Едноставен мрежен протокол за време (Simple Network Time Protocol - SNTP). Се користи во некои вградени уреди и во апликации каде точноста на тајмингот не е битен (RFC 1361, RFC 1769, RFC 2030, и RFC 4330).

## Програмски спроведувања на мрежниот протокол за време

### Unix

За модерните Unix системи, клиентот на мрежниот протокол за време се спроведува како демон процес кој работи постојано во корисничкиот простор (ntpd). Поради чувствиделноста на тајмингот важно е да се има стандардниот часовник на мрежниот протокол за време кој се спроведува во кернеловиот простор. Сите понови верзии на Linux, BSD, Mac OS X и Solaris се споредуваат на овој начин.

### Microsoft Windows

Сите верзии почнувајќи од Windows 2000 во себе вклучуваат Windows временски сервис (Windows Time Service) која има способност да ги синхронизира компјутерските часовници на опслужувачот на мрежниот протокол за време. Иако верзијата Windows 2000 го користи Едноставниот мрежен протокол за време, исто така и не ги задоволува сите потреби на верзија 3 на мрежниот временски протокол. Но со верзијата Windows Server 2003, Microsoft документацијата тврди дека Windows временскиот сервис го спроведува целиот мрежен протокол за време на верзија 3 како што е наведено во RFC 1305.

Сепак, Windows временскиот сервис не може да го одржува системското време повеќе од 1 до 2 секунди. Microsoft не гарантира и не ја поддржува точноста на услугата W32Time помежу јазлите во мрежата. W32Time услугата не е целосното решение на мрежниот протокол за време кое треба да ги задоволува потребите на апликацијата. Повикувачкото спроведување на мрежниот временски протокол може да се користи во Microsoft Windows системите.

## Слоеви на часовникот

жолтите стрелки ознашуваат директна врска: црвените стрелки означуваат мрежна врска
Mрежниот протокол за време користи хиреархиски, полуслоевит систем на нивото на изворот од часовниците.Секое ниво од ова хиреархија се нарекува стратум (stratum), на кој му е доделен број на слојот почнувајќи од 0 (нула). Стратум нивото го дефинира растојанието од референтниот часовник и помага за спречување на цикличните зависности во хиреархијата.

Стратум 0
Во ова ниво спаѓаат уредите атомички часовниви, GPS часовници и радио часовници. Стратум 0 уредите не се приклучени во мрежата, наместо тие се локално поврзани со компјутери.
Стратум 1
Компјутерите се приклучени со Стратум 0 уредите. Обично тие служат како опслужувачи за временските барања од Стратум 2 опслужувачите на мрежниот протокол за време. Овие компјутери исто така се однесуваат и како опслужувачи за време. Повеќето од Стратум 1 опслужувачите (NTP v3 и поранешните верзии) можаат да не работат со голема прецизност. Како што се развива мрежниот протокол за време се помалку и помалку ќе можат да се користат Стратум 1 опслужувачите, бидејќи протоколот автоматски ќе може да го намали нивото на слојот од еден на друг.
Стратум 2
Овие се компјутери кој праќаат NTP барања до опслужувачите на Стратум 1. Обично, одреден компјутер од Стратум 2 ќе му биде прирачник на Стратум 1 опслужувачите кој ќе го користи алгортимот на мрежниот протокол за време за да ги собери примероците од најважните податоци и ќе изостави ако има опслужувачи од Стратум 1 кој не функционираат по потребите. Стратум 2 компјутерите се поврзуваат со други Стратум 2 компјутери за да обезбеди постабилно и рпбусно време за сите уреди во таа фрупа на компјутери. Стратум 2 компјутерите обично работаат како опслужувачи за Стратум 3 барањата од мрежниот протокол за време.
Стратум 3
Овие функции ги користат истите NTP функции за поврзување на компјутерите и собирање на примероците од информациите како и кај Стратум 2. Можаат да работат и како опслужувачви за понистките нивоа на Стратум, дури до 16-ти ниво на слоеви. Мрежниот протокол за време (во зависност од верзијата кој се користи) поддржува до 256 нивоа на Стратум слоеви.
Се претпоставува дека мрежниот протокол за време со верзија 5, којшто сè уште е во фаза на развој, ќе содржи само 8 стратуми. Бидејќи повеќето од NTP клиенти ги користат Стратум 2 опслужувачите, се очекува дека намалениот број на стратумите нема да влијае за корисниците на овој протокол.
## Маркери за време кај NTP

64 битните маркери се користат од страна на мрежниот протокол за време. Во кој, првиот дел се состои од 32 бита на секунди и вториот дел од 32 бита на фракциони секунди, кој му дава 232 секунди (136 години) и теоретска резолуција 2−32 секунди (233 пикосекунди) на NTP.

Маркерите за време кај NTP врши повторување на системот на секое 232 секунди (136 години). Ако препоставиме дека овој протокол почнало да функционира од 1 Јануари 1900 година, значи повторувањето треба да се вржи во 2036 година.

Спроведувањата треба да помогнат за полесно разбиранње на точното време на мрежниот протокол за време со користење на информациите од други извори. Мрежниот протокол за време работи само за наоѓање на разликите помеѓу маркерите за времето, а не нивните апсолутни вредности и исто така ќе е невидлив сè додека маркерите се меѓусебо поврзани за 68 години.

Ова значи дека тие можат да бидат невидливи на повеќето од работните системи бидејќи тие ќе го имаат точното време со многу мала толеранција. Сепак, системите кои почнуваат да го користат овој систем треба да знаат точно за времето за да не е повеќе од 68 години. Со оглед на дозволените големи грешки, не се очекуваат премногу големи услови. Еден од предложените методи е користење на часовници кој не ќе се наместени да работат пред датумот кој бил изграден системот. Повеќето системи користат часовници со батерии кој ќе го спречат овој проблем.

Исто така, новата верзија на мрежниот протокол за време може да содржи дури до 128 бита, кој привот дел од нив ќе има 64 бита за секунди и вториот дел 64 бита за фракциони секунди.

Според Милс, 64 битната вредност ќе е доволна на фракцијата за решавање на голем дел од проблемите со времето, кој користи фотон за да го постигне електронот со брзината на светлина. Исто така 64 битните секунди се доволни за да обезбедат време со билиони години. Тоа математички може да се прикажи, 2−64 секунди се околу 54 зептосекунди и 264 секунди се околу 585 билиони години.

## Загриженост за безбедноста

Само неколку безбедносни проблеми се пронајдни во референтното спроведување во базата на кодирање на мрежниот протокол за време во својата 25+ годишна историја.

Самиот мрежен протокол за време е во процес на ревизија и преглед на својата историја каде никогаш не биле пријавени некои безбедносни проблеми со спецификациите на NTP.

Веќе со години тековната база на кодови за референтното спроведување е во процес на ревизии од неколку извори. Каде исто така нема пропусти или проблеми со голем ризик на безбедност во објавениот софтвер.

## Наводи

## Надворешни врски

* NTP Public Services Project This is the home for the NTP (Network Time Protocol) Public Services Project which provides public support for the NTP Project and the IETF NTP Working Group. Also a Wiki with lists of NTP servers.
* NTP Overview and configuration options
* IETF NTP working group
* David Mills' NTP project page
* NTP version 4 Release Notes
* Time and NTP paper
* NTP Survey 2005 Архивирано на 4 мај 2019 г.
* Pool of public NTP Time Servers
* For a comprehensive list of NTP Servers
* HTTP Time Protocol
* NetTime client
* NTP опслужувач и клиент софтвер за Windows (комерцијални)
* NTP опслужувач испробување онлајн алатката