NTP

NTP
název Network Time Protocol
Úroveň (podle modelu OSI ) Aplikovaný
Rodina TCP/IP
Vytvořeno v 1985
Port/ID 123/ UDP
Účel protokolu Synchronizace hodin
Specifikace RFC 5905

NTP ( Network Time Protocol  ) je síťový  protokol pro synchronizaci vnitřních hodin počítače pomocí sítí s proměnnou latencí . Protokol vyvinul David L. Mills , profesor na University of Delaware , v roce 1985. Verze pro rok 2015  je NTPv4 [1] .

NTP, založený na algoritmu Marzullo , využívá ke své činnosti protokol UDP a zohledňuje dobu přenosu. Systém NTP je extrémně odolný vůči změnám v latenci médií . Ve verzi 4 je schopen dosáhnout přesnosti 10 ms (1/100 s) při práci přes internet a až 0,2 ms (1/5000 s) a lepší v rámci lokálních sítí [2] .

Protokol NTP je nejrozšířenější pro synchronizaci serverů přesného času. Pro maximální přesnost je vhodnější vždy spouštět software NTP v režimu systémové služby . V rodině operačních systémů Microsoft Windows  je to služba W32Time [3] , Linux  je démon Ntpd [ 4] nebo chronyd.

Jednodušší implementace tohoto algoritmu je známá jako SNTP  , Simple Network Time Protocol. Používá se ve vestavěných systémech a zařízeních, které nevyžadují vysokou přesnost, a také v zakázkových časových programech [5] .

Struktura balíčku

Struktura balíčku je popsána v RFC 5905 [1] . Paket se skládá z celého čísla 32bitových slov.

Údaje v záhlaví se budou pro různé provozní režimy lišit. Například klient v polích hodinová vrstva , identifikátor zdroje , čas začátku a čas příjmu by měl psát nuly.

Název

NTP hlavička
Odrážka Oktet 0 jeden 2 3
Oktet Bit 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 IR Verze Režim hodinová vrstva Interval dotazování Přesnost
čtyři 32 Zpoždění
osm 64 Disperze
12 96 ID zdroje
16 128 Aktualizovat čas
dvacet 160
24 192 Doba spuštění
28 224
32 256 Čas přijetí
36 288
40 320 Doba odeslání
44 352
Indikátor opravy Délka - 2 bity, z angličtiny.  Indikátor skoku . Celé číslo představující upozornění na přestupnou sekundu .
Význam Popis
0 Žádné varování
jeden Poslední minuta dne obsahuje 61 sekund
2 Poslední minuta dne obsahuje 59 sekund
3 Neznámý (čas není synchronizován)
Číslo verze Délka - 3 bity, z angličtiny.  versionNumber . Celé číslo představující verzi protokolu. Režim Délka - 3 bity, z angličtiny.  režim . Celé číslo představující režim. Hodnoty jsou uvedeny v tabulce níže.
Význam Popis
0 Rezervováno
jeden Symetrický aktivní režim
2 Symetrický pasivní režim
3 Klient
čtyři Server
5 Režim vysílání
6 Řídicí zpráva NTP
7 Vyhrazeno pro soukromé použití
Hodinová vrstva Délka - 8 bitů, z angličtiny.  Stratum . Celé číslo představující hodinovou vrstvu .
Význam Popis
0 Není definováno nebo je neplatné
jeden Primární server
2-15 Sekundární server využívající NTP
16 Nesynchronizováno
17-255 Rezervováno
Interval dotazování Délka - 8 bitů, z angličtiny.  Anketa . Celé číslo se znaménkem představující maximální interval mezi po sobě jdoucími zprávami. Hodnota je rovna binárnímu logaritmu sekund. Výchozí limity pro minimální a maximální počet hlasování jsou 6 a 10. Přesnost Délka - 8 bitů, z angličtiny.  přesnost . Celé číslo se znaménkem představující přesnost systémových hodin. Hodnota je rovna binárnímu logaritmu sekund. Například hodnota -18 by byla přesná na přibližně 1 us. Zpoždění Délka - 32 bitů, z angličtiny.  Zpoždění kořene . Celková doba šíření zpáteční cesty v krátkém formátu NTP . Disperze Délka - 32 bitů, z angličtiny.  Kořenová disperze . Celková odchylka pro zdroj času v krátkém formátu NTP . ID zdroje Délka - 32 bitů, z angličtiny.  Referenční ID . Zdrojový kód synchronizace. Závisí na hodnotě v poli Hour layer . Pro vrstvu 0  jsou to čtyři znaky ASCII , nazývané „kiss code“, používané pro ladění a monitorování. viz. níže Pro vrstvu 1  jsou to čtyři oktety znaků ASCII, doleva doplněné nulami, přiřazené referenčnímu času. Níže uvedená tabulka poskytuje seznam spravovaný IANA [6] .
ID Zdroj
JDE Geostacionární družice systému monitorování a pozorování životního prostředí
GPS Globální Polohovací Systém
gal Polohovací systém "Galileo"
PPS Obecný rádiový signál s dobou trvání pulsu rovnou 1 sekundě
IRIG Telemetry Standards Group , USA
WWVB Nízkofrekvenční rádiový vysílač, 60 kHz, Fort Collins Colorado, USA
DCF Nízkofrekvenční rádiový vysílač, 77,5 kHz, DCF77 , Mainflingen, Německo
HBG Nízkofrekvenční rádiový vysílač, 75 kHz, Prangins , Švýcarsko
Lékaři bez hranic Nízkofrekvenční rádiový vysílač, 60 kHz, Anthorn , Velká Británie
JJY Nízkofrekvenční rádiový vysílač, 40 kHz, Fukušima, 60 kHz , Saga, Japonsko
LORC Středofrekvenční rádiový vysílač, 100 kHz, radionavigace, LORAN-C
TDF Středofrekvenční rádiový vysílač, 162 kHz, Allouis Francie
CHU HF vysílač, Ottawa, Ontario Kanada
WWV Vysokofrekvenční rádiový vysílač, Fort Collins, Colorado , USA
WWVH Vysokofrekvenční rádiový vysílač, Kauai, Hawaii , USA
NIST telefonní modem US National Institute of Standards and Technology
ZÁKONY telefonní modem US National Institute of Standards and Technology
USNO Telefonní modem americké národní observatoře
PTB Telefonní modem Národního metrologického institutu Německa
Pro vrstvu 2 a vyšší je to ID serveru a lze jej použít k opravě časových smyček. Je-li použito IPv4 , pak jsou identifikátorem čtyři oktety IP adresy. Pokud se použije IPv6 , jedná se o první čtyři oktety MD5 hash adresy. Při použití adres IPv6 pro server s NTPv4 a klienta s NTPv3 může identifikátor nabýt náhodné hodnoty, díky čemuž nemusí být fixní časové smyčky. Aktualizovat čas Délka - 64 bitů, z angličtiny.  Referenční časové razítko . Čas, kdy systém naposledy nastavil nebo opravil čas. NTP formát . Čas začátku Délka - 64 bitů, z angličtiny.  Časové razítko původu . Čas klienta, kdy je požadavek odeslán na server. NTP formát . Doba příjmu Délka - 64 bitů, z angličtiny.  Přijmout časové razítko . Čas serveru, kdy požadavek přichází od klienta. NTP formát . Čas odjezdu Délka - 64 bitů, z angličtiny.  Časové razítko přenosu . Čas serveru, kdy je požadavek odeslán klientovi. NTP formát .

NTP zpráva "Kiss-o'-Death"

Pro vrstvu 0 , která je považována za nedefinovanou nebo neplatnou, lze pole Source Identifier použít k doručování zpráv, které fungují jako data stavu systému a řízení přístupu. Takové zprávy se nazývají "Kiss-o'-Death" [Poznámka 1] (KoD) a ASCII data, která doručují, se nazývají "kiss codes" (kódy nápovědy). Seznam aktuálně akceptovaných „nápovědních“ kódů je uveden v tabulce níže [6] .

Příjemci zpráv KoD jsou povinni je zkontrolovat a provést následující akce [1] :

  • Při příjmu kombinací kódů DENY a RSTR je klient povinen přerušit virtuální spojení s tímto časovým serverem a přestat na tento server posílat zprávy.
  • Po obdržení kódového slova RATE musí klient okamžitě zkrátit interval dotazování pro tento server a nadále jej zkracovat pokaždé, když toto kódové slovo obdrží.
  • Při příjmu kódového slova začínajícího ASCII znakem X , určeného pro experimentální výzkum a následná vylepšení, by mělo být ignorováno, pokud není rozpoznáno.
  • Všechny ostatní kombinace kódů a zprávy KoD nedefinované tímto protokolem jsou po ověření zničeny.
Kódy nápovědy
Kód Popis
ACST Virtuální připojení vytvořené serverem unicast
AUTH Ověření serveru se nezdařilo
AUTO Autokey sekvence je nesprávná
BCST Virtuální připojení navázané serverem vysílání
CRYP Kryptografické ověření nebo identifikace se nezdařilo
ODMÍTNOUT Vzdálený server odepřen přístup
POKLES Ztráta vzdáleného časového serveru v symetrickém režimu
RSTR Přístup odepřen kvůli místní bezpečnostní politice
INIT Virtuální připojení se napoprvé nezdařilo
MCST Virtuální synchronizační připojení vytvořené dynamicky zjištěným serverem
NKEY Klíč nebyl nalezen (buď nebyl nikdy předtím načten, nebo je nespolehlivý)
HODNOTIT Rychlost překročena. Server dočasně odepřel přístup, protože klient překročil práh rychlosti
RMOT Změna virtuálního připojení ze vzdáleného hostitele IP přímo pomocí protokolu NTP
KROK Došlo k iteraci změny systémového času, připojení virtuální synchronizace nebylo navázáno

Hodinové vrstvy

NTP používá hierarchickou síť, kde každá úroveň má své vlastní číslo, nazývané vrstva ( angl.  stratum ). Vrstva 1  – Primární servery, které jsou přímo synchronizovány s národními časovými službami přes satelit, rádiový nebo telefonní modem. Vrstva 2  – sekundární servery, synchronizace s primárními servery atd. Klienti NTP a servery s relativně malým počtem klientů se obvykle nesynchronizují s primárními servery. Na vyšších vrstvách běží několik stovek veřejných sekundárních serverů. Jsou preferovanou volbou [7] .

Formát času

Čas je v systému NTP reprezentován 64bitovým číslem (8 bajtů ) skládajícím se z 32bitového čítače sekund a 32bitového čítače zlomkových sekund, což umožňuje přenos času v rozsahu 2-32 sekund s teoretická přesnost 2-32 sekund. Protože se NTP časové měřítko opakuje každých 232 sekund (136 let), musí příjemce alespoň zhruba znát aktuální čas (do 68 let [8] ). Je třeba také poznamenat, že čas se počítá od půlnoci 1. ledna 1900 a ne od roku 1970, takže od času NTP je třeba odečíst 70 let (včetně přestupných let), aby se čas správně sladil se systémy Windows nebo Unix. [7] [9] .

Formát krátkého času
Bit 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 Sekundy Zlomky sekund

Normální formát času
Bit 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 Sekundy
čtyři Zlomky sekund

Formát data
Bit 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 Číslo éry
čtyři éra odrážka
osm akcie
12

Viz také

Poznámky

  1. Z „Kiss of Death“, což znamená „poslední rána“ nebo „poslední pokus“.

Poznámky

  1. 123 RFC 5905 _
  2. NTP FAQ . projekt NTP. Získáno 25. října 2015. Archivováno z originálu 6. září 2011.
  3. Technická příručka služby Windows Time Service . technet.microsoft.com (17. srpna 2011). Získáno 19. září 2011. Archivováno z originálu 6. září 2011.
  4. David L. Mills. Synchronizace času v počítačové síti: Protokol síťového času  . — Taylor & Francis , 2010. — ISBN 978-0-8493-5805-0 . Archivováno 18. července 2014 na Wayback Machine
  5. RFC 4330
  6. 1 2 Nastavení NTP . IANA (22. června 2010). Získáno 23. října 2015. Archivováno z originálu dne 4. března 2016.
  7. 12 Jak NTP funguje . Získáno 10. března 2014. Archivováno z originálu 20. června 2014.
  8. Výpočty časového razítka NTP . www.eecis.udel.edu. Získáno 12. dubna 2016. Archivováno z originálu dne 26. října 2015.
  9. Časová osa NTP a přestupné sekundy . Získáno 12. 5. 2012. Archivováno z originálu 15. 5. 2012.

Literatura

Odkazy

  • NTP: Network Time  Protocol . Network Time Foundation. - Komunitní projekt na vývoj protokolu a služeb NTP. Získáno 29. září 2008. Archivováno z originálu 5. září 2017.
  •  Vítejte na webu NTP.Servers . Network Time Foundation (18. dubna 2013). — Projekt veřejného serveru NTP a pracovní skupina IETF NTP . Datum přístupu: 6. prosince 2010. Archivováno z originálu 8. prosince 2010.
  • Projekt bazénu NTP . - Veřejný zdroj – shluk veřejných NTP serverů spravovaných dobrovolníky. Získáno 7. března 2019. Archivováno z originálu dne 22. dubna 2009.
  • Online tester NTP serveru . Test serveru . - Online nástroj pro kontrolu dostupnosti serveru na internetu. Získáno 7. března 2019. Archivováno z originálu dne 7. března 2019.
  • Služby NTP serverů . VNIIFTRI . - Servery přesného času Hlavního metrologického střediska státní služby času, frekvence a určování parametrů zemské rotace Všeruského vědeckovýzkumného ústavu fyzikálních, technických a radiotechnických měření. Získáno 1. března 2021. Archivováno z originálu dne 24. ledna 2021.