2.7 KiB
Network Time Protocol (NTP)
NTP
è un protocollo dell'Application Layer, progettato per sincronizzare gli orologi dei dispositivi all'interno di una rete. Utilizza un punto centrale di riferimento, rappresentato da un server NTP, per garantire che i timestamp siano accurati e coerenti.
Gerarchia
NTP si basa sul protocollo UDP e utilizza la well-known port 123. Esistono numerosi server NTP distribuiti in tutto il mondo, gestiti da vari enti, e sono organizzati gerarchicamente in livelli, noti come strati
.
- Strato 1: i server NTP di primo livello sincronizzano i loro orologi interni con fonti esterne estremamente precise, come gli orologi atomici. Queste informazioni vengono poi trasmesse a cascata ai server NTP degli strati inferiori, che si scambiano anche informazioni tra di loro, garantendo una continua sincronizzazione temporale
- Client finali: all'ultimo strato si trovano i client, che inviano richieste NTP per ottenere la sincronizzazione temporale dai server
Algoritmi di Sincronizzazione
NTP utilizza diversi algoritmi per regolare il tempo ricevuto, tenendo conto di varie problematiche legate al tempo, come il ritardo nella trasmissione della risposta.
Pacchetto NTP
Il pacchetto NTP ha una dimensione fissa di 48 byte e contiene diversi campi, alcuni dei quali sono utilizzati nella richiesta NTP, mentre altri sono presenti nella risposta.
LI
(Leap Indicator): indica se ci sono stati aggiustamenti nel timestamp, ovvero un intervento per correggere l'ora e garantire l'accuratezzaVN
(Version Number): specifica la versione di NTP utilizzata per la comunicazioneMode
: indica il ruolo del dispositivo, specificando se si tratta di una richiesta da parte del client, di una risposta del server, ecc.Stratum
: indica da quale strato viene prelevata l'informazione temporalePrecision
: indica la precisione del clock locale di un dispositivo, ossia la sua capacità di mantenere il tempo in modo accurato rispetto a quello ricevuto dalla sorgenteRoot Delay
: tempo stimato di andata e ritorno al server di riferimento, utilizzato per calcolare il ritardo temporale tra la richiesta e la rispostaRoot Dispersion
: Rappresenta l'errore massimo atteso nella sincronizzazione temporale.Reference ID
: identificativo del server sorgenteReference Timestamp
: timestamp dell'ultima sincronizzazione del server NTP con una fonte affidabileOriginate Timestamp
: timestamp che indica quando il client ha originato la richiestaReceive Timestamp
: timestamp che indica quando la richiesta è stata ricevuta dal server NTPTransmit Timestamp
: timestamp che indica quando il server ha inviato la risposta al client