NTP (Network Time Protocol)
NTP (en anglais Network Time Protocol) : protocole, dans sa version 4 décrite par la RFC 5905, qui permet à une machine d'interroger des serveurs de temps et d'en déduire l'erreur de sa propre horloge. Il fonctionne sur UDP, port 123. Le client note l'heure d'envoi (T1) et de réception (T4), le serveur celles de réception (T2) et de réponse (T3) ; on en tire le délai aller-retour (T4 - T1) - (T3 - T2) et le décalage ((T2 - T1) + (T3 - T4)) / 2, en supposant l'aller et le retour symétriques.
Les serveurs forment une hiérarchie de strates : la strate 1 est reliée à une horloge de référence, la strate 2 se synchronise sur la strate 1, et ainsi de suite, 16 signifiant « non synchronisé ». Un client complet comme chrony interroge plusieurs sources, écarte celles qui se contredisent (les falsetickers), apprend la dérive de l'horloge locale et la corrige par ajustement progressif plutôt que par saut. La RFC 8633 recommande au moins quatre sources indépendantes. systemd-timesyncd, client par défaut d'Ubuntu 24.04 et de Debian 13, n'implémente que SNTP, une version simplifiée : un serveur à la fois, sans vote ni service aux autres machines. timedatectl et chronyc tracking disent si l'horloge est synchronisée.
NTP sans authentification est exposé à l'usurpation, d'où NTS ; d'anciens serveurs ntpd ouverts ont servi d'amplificateurs de déni de service (commande monlist). Sur un parc, on fait synchroniser une machine interne sur des sources externes, et les autres sur elle, en n'autorisant le service (allow dans chrony) qu'au réseau privé.
Dans les cours
- Linux : administration système, leçon 9 : L'heure et sa synchronisation
- Le modèle TCP/IP, leçon 9 : UDP et les ports