NTP

NTP
Nume Network Time Protocol
Nivel (conform modelului OSI ) Aplicat
Familie TCP/IP
Creat în 1985
Port/ID 123/ UDP
Scopul protocolului Sincronizarea ceasului
Specificație RFC 5905

NTP ( Network Time Protocol  ) este un  protocol de rețea pentru sincronizarea ceasului intern al computerului folosind rețele cu latență variabilă . Protocolul a fost dezvoltat de David L. Mills , profesor la Universitatea din Delaware , în 1985. Versiunea pentru 2015  este NTPv4 [1] .

NTP, bazat pe algoritmul Marzullo , folosește protocolul UDP pentru funcționarea sa și ia în considerare timpul de transfer. Sistemul NTP este extrem de robust la modificările latenței media . În versiunea 4, este capabil să obțină o precizie de 10 ms (1/100 s) atunci când lucrează pe Internet și până la 0,2 ms (1/5000 s) și mai bine în rețelele locale [2] .

Protocolul NTP este cel mai utilizat pentru sincronizarea serverelor de timp exacte. Pentru o precizie maximă, este de preferat să rulați întotdeauna software-ul NTP în modul de service de sistem . În familia de sisteme de operare Microsoft Windows  , acesta este serviciul W32Time [3] , Linux  este demonul Ntpd [ 4] sau chronyd.

O implementare mai simplă a acestui algoritm este cunoscută sub numele de SNTP  , Protocolul de timp al rețelei simple. Este utilizat în sisteme și dispozitive încorporate care nu necesită o precizie ridicată, precum și în programele de timp personalizate [5] .

Structura pachetului

Structura pachetului este descrisă în RFC 5905 [1] . Un pachet este format dintr-un număr întreg de cuvinte de 32 de biți.

Datele din antet vor fi diferite pentru diferite moduri de operare. De exemplu, clientul în câmpurile stratul oră , identificatorul sursei , ora de începere și ora recepției ar trebui să scrie zerouri.

Titlu

Antet NTP
indentare Octet 0 unu 2 3
Octet Pic 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 IR Versiune Modul stratul orar Interval de sondare Precizie
patru 32 Întârziere
opt 64 Dispersia
12 96 ID sursă
16 128 Timpul de actualizare
douăzeci 160
24 192 Timpul de începere
28 224
32 256 Ora primirii
36 288
40 320 Timp de expediere
44 352
Indicator de corecție Lungime - 2 biți, din engleză.  Indicator de salt . Un număr întreg care reprezintă avertismentul secund intercalat .
Sens Descriere
0 Nici un avertisment
unu Ultimul minut al zilei conține 61 de secunde
2 Ultimul minut al zilei conține 59 de secunde
3 Necunoscut (timpul nesincronizat)
Numărul versiunii Lungime - 3 biți, din engleză.  versiuneNumăr . Un număr întreg care reprezintă versiunea protocolului. Mod Lungime - 3 biți, din engleză.  modul . Un număr întreg care reprezintă modul. Valorile sunt prezentate în tabelul de mai jos.
Sens Descriere
0 rezervat
unu Mod activ simetric
2 Mod pasiv simetric
3 Client
patru Server
5 Modul de difuzare
6 Mesaj de control NTP
7 Rezervat pentru uz privat
Strat oră Lungime - 8 biți, din engleză.  Strat . Un număr întreg reprezentând stratul orar .
Sens Descriere
0 Nu este definit sau nevalid
unu Server primar
2-15 Server secundar folosind NTP
16 Desincronizat
17-255 rezervat
Interval de sondaj Lungime - 8 biți, din engleză.  Sondaj . Un număr întreg cu semn care reprezintă intervalul maxim dintre mesajele consecutive. Valoarea este egală cu logaritmul binar al secundelor. Limitele implicite pentru sondajele minime și maxime sunt 6 și, respectiv, 10. Precizie Lungime - 8 biți, din engleză.  precizie . Un număr întreg cu semn care reprezintă acuratețea ceasului sistemului. Valoarea este egală cu logaritmul binar al secundelor. De exemplu, o valoare de -18 ar fi precisă la aproximativ 1 µs. Întârziere Lungime - 32 de biți, din engleză.  Întârziere la rădăcină . Timp total de propagare dus-întors în format NTP scurt . Dispersie Lungime - 32 de biți, din engleză.  Dispersia rădăcină . Varianta totală pentru sursa de timp în format NTP scurt . ID sursă Lungime - 32 de biți, din engleză.  ID de referință . Cod sursă de sincronizare. Depinde de valoarea din câmpul Stratul Ora . Pentru stratul 0  , acestea sunt patru caractere ASCII , numite „cod sărut”, utilizate pentru depanare și monitorizare. vezi mai jos Pentru stratul 1  , este vorba de patru octeți de caractere ASCII, completate în stânga cu zerouri, alocate timpului de referință. Tabelul de mai jos oferă o listă întreținută de IANA [6] .
ID Sursă
MERGE Satelitul geostaționar al sistemului de monitorizare și observare a mediului
GPS Sistem de poziționare globală
fată Sistem de pozitionare "Galileo"
PPS Semnal radio general cu durata impulsului egală cu 1 secundă
IRIG Telemetry Standards Group , SUA
WWVB Transmițător radio de joasă frecvență, 60 kHz, Fort Collins Colorado, SUA
DCF Transmițător radio de joasă frecvență, 77,5 kHz, DCF77 , Mainflingen, Germania
HBG Transmițător radio de joasă frecvență, 75 kHz, Prangins , Elveția
MSF Transmițător radio de joasă frecvență, 60 kHz, Anthorn , Marea Britanie
JJY Transmițător radio de joasă frecvență, 40 kHz, Fukushima, 60 kHz , Saga, Japonia
LORC Transmițător radio de frecvență medie, 100 kHz, navigație radio, LORAN-C
TDF Transmițător radio de frecvență medie, 162 kHz, Allouis Franța
CHU Transmițător HF, Ottawa, Ontario Canada
WWV Transmițător radio de înaltă frecvență, Fort Collins, Colorado , SUA
WWVH Transmițător radio de înaltă frecvență, Kauai, Hawaii , SUA
NIST Modem telefonic al Institutului Național de Standarde și Tehnologie din SUA
ACTE Modem telefonic al Institutului Național de Standarde și Tehnologie din SUA
USNO Modem telefonic al Observatorului Național al SUA
PTB Modem telefonic al Institutului Național de Metrologie din Germania
Pentru nivelul 2 și mai sus, acesta este ID-ul serverului și poate fi folosit pentru a remedia buclele de timp. Dacă se utilizează IPv4 , atunci identificatorul este de patru octeți ai adresei IP. Dacă se folosește IPv6 , aceștia sunt primii patru octeți ai hash-ului MD5 al adresei. Când se utilizează adrese IPv6 pentru un server cu NTPv4 și un client cu NTPv3, identificatorul poate lua o valoare aleatorie, din cauza căreia buclele de timp pot să nu fie fixate. Ora actualizării Lungime - 64 de biți, din engleză.  Marca temporală de referință . Ora la care sistemul a setat sau a corectat ultima dată ora. format NTP . Ora de începere Lungime - 64 de biți, din engleză.  Marca temporală a originii . Ora clientului la care cererea este trimisă la server. format NTP . Ora de recepție Lungime - 64 de biți, din engleză.  Primire marcaj temporal . Ora serverului la care solicitarea vine de la client. format NTP . Ora de plecare Lungime - 64 de biți, din engleză.  Timp de transmitere . Ora serverului la care cererea este trimisă către client. format NTP .

Mesaj NTP „Kiss-o'-Death”

Pentru stratul 0 , care este considerat nedefinit sau invalid, câmpul Identificator sursă poate fi utilizat pentru a livra mesaje care acționează ca date de stare a sistemului și control al accesului. Astfel de mesaje se numesc „Kiss-o'-Death” [Nota 1] (KoD), iar datele ASCII pe care le furnizează se numesc „kiss codes” (coduri de ajutor). Lista codurilor de „ajutor” acceptate în prezent este prezentată în tabelul de mai jos [6] .

Destinatarii mesajelor KoD trebuie să le verifice și să efectueze următoarele acțiuni [1] :

  • La primirea combinațiilor de coduri DENY și RSTR , clientul este obligat să întrerupă conexiunile virtuale cu acest server de timp și să nu mai trimită mesaje către acest server.
  • La primirea cuvântului de cod RATE , clientul trebuie să-și reducă imediat intervalul de interogare pentru acest server și să continue să-l micșoreze de fiecare dată când primește acest cuvânt de cod.
  • Când se primește un cuvânt de cod care începe cu caracterul ASCII X , destinat cercetării experimentale și îmbunătățirilor ulterioare, acesta trebuie ignorat dacă nu este recunoscut.
  • Toate celelalte combinații de coduri și mesaje KoD care nu sunt definite de acest protocol sunt distruse după ce au fost verificate.
Coduri de ajutor
Codul Descriere
ACST Conexiune virtuală stabilită de serverul unicast
AUTH Autentificarea serverului a eșuat
AUTO Secvența tastelor automate este incorectă
BCST Conexiune virtuală stabilită de serverul de difuzare
CRYP Autentificarea sau identificarea criptografică a eșuat
NEGA Accesul la server la distanță a fost interzis
CĂDERE BRUSCA Pierderea serverului de timp la distanță în modul simetric
RSTR Acces interzis din cauza politicii locale de securitate
INIT Conexiunea virtuală a eșuat prima dată
MCST Conexiune de sincronizare virtuală stabilită de serverul descoperit dinamic
NKEY Cheia nu a fost găsită (fie nu a fost încărcată niciodată înainte, fie nu este de încredere)
RATĂ Viteza depășită. Serverul a refuzat temporar accesul deoarece clientul a depășit pragul de rată
RMOT Schimbarea conexiunii virtuale de la o gazdă IP la distanță utilizând direct protocolul NTP
ETAPA A avut loc o iterație de schimbare a orei sistemului, conexiunea de sincronizare virtuală nu a fost stabilită

Straturi orare

NTP folosește o rețea ierarhică, unde fiecare nivel are propriul său număr, numit strat ( ing.  strat ). Nivelul 1  - Servere primare care sunt sincronizate direct cu serviciile naționale de timp prin satelit, radio sau modem telefonic. Nivelul 2  - servere secundare, sincronizare cu serverele primare etc. De obicei, clienții NTP și serverele cu relativ puțini clienți nu sunt sincronizate cu serverele primare. Există câteva sute de servere publice secundare care rulează pe straturile superioare. Sunt alegerea preferată [7] .

Format oră

Timpul este reprezentat în sistemul NTP printr-un număr de 64 de biți (8 octeți ) format dintr-un numărător de secunde de 32 de biți și un numărător de secunde fracționale de 32 de biți, permițând transmiterea timpului în intervalul 2-32 de secunde, cu un precizie teoretică de 2-32 secunde. Deoarece scala de timp NTP se repetă la fiecare 232 de secunde (136 de ani), destinatarul trebuie să cunoască cel puțin timpul curent (în termen de 68 de ani [8] ). De asemenea, trebuie menționat că ora se numără de la miezul nopții de 1 ianuarie 1900, și nu din 1970, deci 70 de ani (inclusiv anii bisecti) trebuie scăzuți din timpul NTP pentru a alinia corect ora cu sistemele Windows sau Unix. [7] [9] .

Format de timp scurt
Pic 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 secunde Fracțiuni de secunde

Format orar normal
Pic 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 secunde
patru Fracțiuni de secunde

Formatul datei
Pic 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 Numărul epocii
patru liniuță epocă
opt Acțiuni
12

Vezi și

Note

  1. Din „Kiss of Death”, care înseamnă „lovitură finală” sau „ultima încercare”.

Note

  1. 123 RFC 5905 _
  2. Întrebări frecvente NTP . Proiectul NTP. Preluat la 25 octombrie 2015. Arhivat din original la 6 septembrie 2011.
  3. Referință tehnică Windows Time Service . technet.microsoft.com (17 august 2011). Consultat la 19 septembrie 2011. Arhivat din original pe 6 septembrie 2011.
  4. David L. Mills. Sincronizarea oră a rețelei de computere: protocolul de timp  al rețelei . — Taylor & Francis , 2010. — ISBN 978-0-8493-5805-0 . Arhivat pe 18 iulie 2014 la Wayback Machine
  5. RFC 4330
  6. 1 2 Setări NTP . IANA (22 iunie 2010). Preluat la 23 octombrie 2015. Arhivat din original la 4 martie 2016.
  7. 12 Cum funcționează NTP . Preluat la 10 martie 2014. Arhivat din original la 20 iunie 2014.
  8. Calcule NTP Timestamp . www.eecis.udel.edu. Consultat la 12 aprilie 2016. Arhivat din original la 26 octombrie 2015.
  9. Scala de timp NTP și secundele bisecte . Preluat la 12 mai 2012. Arhivat din original la 15 mai 2012.

Literatură

  • Semenov Yu.A. Network time protocol NTP  // Telecommunication technologies - Telecommunication technologies. — 2014.
  • Mills, David L. Comparația timpului în rețelele de calculatoare. Protocolul de timp al rețelei pe Pământ și în spațiu. - Kiev: Wircom, 2011. - P. 464. - ISBN 978-966-97191-0-2 .
  • Alte versiuni de RFC: RFC 778 , RFC 891 , RFC 956 , RFC 958 , RFC 1305 , RFC 2030 , RFC 4330

Link -uri

  • NTP:  Protocolul de timp al rețelei . Network Time Foundation. - Un proiect comunitar pentru dezvoltarea protocolului și serviciilor NTP. Consultat la 29 septembrie 2008. Arhivat din original pe 5 septembrie 2017.
  •  Bine ați venit pe site-ul web NTP.Servers . Network Time Foundation (18 aprilie 2013). — Public NTP Server Project și IETF NTP Working Group . Data accesului: 6 decembrie 2010. Arhivat din original pe 8 decembrie 2010.
  • Proiect Pool NTP . - Resursă publică - un cluster de servere NTP publice întreținute de voluntari. Preluat la 7 martie 2019. Arhivat din original la 22 aprilie 2009.
  • Tester online de server NTP . Test de server . - Un instrument online pentru a verifica disponibilitatea unui server pe Internet. Preluat la 7 martie 2019. Arhivat din original pe 7 martie 2019.
  • Servicii de servere NTP . VNIIFTRI . - Servere ale orei exacte ale Centrului Metrologic Principal al Serviciului de Stat de Timp, Frecvență și Determinare a Parametrilor Rotației Pământului a Institutului de Cercetare Științifică din Rusia de Măsurări Fizice, Tehnice și Radio. Preluat la 1 martie 2021. Arhivat din original la 24 ianuarie 2021.