Files
learning/networking/028-ntp.md
2025-06-22 11:35:37 +02:00

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

ntp-stratum

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'accuratezza
  • VN (Version Number): specifica la versione di NTP utilizzata per la comunicazione
  • Mode: 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 temporale
  • Precision: 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 sorgente
  • Root Delay: tempo stimato di andata e ritorno al server di riferimento, utilizzato per calcolare il ritardo temporale tra la richiesta e la risposta
  • Root Dispersion: Rappresenta l'errore massimo atteso nella sincronizzazione temporale.
  • Reference ID: identificativo del server sorgente
  • Reference Timestamp: timestamp dell'ultima sincronizzazione del server NTP con una fonte affidabile
  • Originate Timestamp: timestamp che indica quando il client ha originato la richiesta
  • Receive Timestamp: timestamp che indica quando la richiesta è stata ricevuta dal server NTP
  • Transmit Timestamp: timestamp che indica quando il server ha inviato la risposta al client

ntp-package