This website uses cookies

Read our Privacy policy and Terms of use for more information.

I. Qu’est ce que NTP

Le Network Time Protocol sert à synchroniser l’horloge, l’heure, qu’affiche votre ordinateur. Cette heure est utilisée par le système et plusieurs applications.

Le système va horodater les évènements qui surviennent (et ils sont très nombreux). L’horodatages est précis, par exemple :

<TimeCreated SystemTime="2026-08-10T21:11:55.4192391Z" />

Si vous voulez les voir, lancez l’observateur d’évenement (eventvwr.msc sous Windows 11, journalctl ou les fichiers sous /var/log sous Linux).

Mais aussi les applications, par exemple quand votre navigateur accède à un site en https, il regarde si le certificat qui va valider la sécurisation de la communication est toujours valide. Pour le voir cliquez sur le petit symbole à droite de la barre d’adresse.

Certificat valide jusqu’au 24 septembre 2026 à 5:10:29

Il est donc primordial de conserver son ordinateur à l’heure avec une bonne précision (largement inférieure à la seconde).

II. Comment fonctionne NTP

II.a Trouver une source horaire

Certains ordinateurs sont synchronisés par des horloges physiques externes : les satellites ou la radio. Le satellite c’est ce qu’on appelle communément le « GPS ». Il s’agit en fait de constellations de satellites, soit États-Uniens (GPS), Européens (Galileo), Russes (GLONASS) ou Chinois (BeiDou). Il existe encore des émetteurs radio comme le célèbre DFC77 Allemand (en service depuis 1959), ou l’émetteur d’Allouis en France (en service depuis 1938). Notez que ces système ne sont pas obsolètes : recevoir un signal GPS implique de voir le ciel, ce qui n’est pas très pratique, alors que les ondes radio pénètrent facilement dans les bâtiments.

Les ordinateurs reliés à une référence de temps sont dit de strate 1.

Les deux mâts de 354m de haut d’Allouis, 50m plus haut que la Tour Eiffel.

II.b Se synchroniser dessus

Les ordinateurs (où objets connectés) qui ont besoin de se mettre à l’heure communiquent avec une ou plusieurs sources de strate 1, on dira qu’ils sont en strate 2. Et ainsi de suite, si vous vous synchronisez sur un serveur de strate 2 vous êtes en strate 3, etc. Facile.

L’idée c’est de ne pas surcharger les strate 1 alors qu’on a pas forcément besoin de précision extrême dans tous les cas, par exemple pour l’éclairage urbain ou l’affichage du passage des bus, se synchroniser sur un strate 4 ou plus convient parfaitement.

II.c Se synchroniser , la méthode

Le plus simple serait de se dire : facile, je fais comme moi : je regarde l’heure, et j’ajuste ma montre. Sauf que cela ne marche pas pour une raison simple : le temps est une variable qui ne fait qu’augmenter. Or si votre montre avance, et vous regardez l’heure et décidez de la reculer de 1 minute, vous ne respectez plus ce principe, et ça devient n’importe quoi.

La solution est donc un peu plus compliquée. Mais le raisonnement de base est le suivant :

  • Si on avance, alors on ralenti un peu notre horloge jusqu’à ce que notre référence nous rattrape

  • Si on recule, alors on accélère un peu l’horloge pour qu’elle rattrape la référence

Résultat : on est peut être un peu toujours en avance ou en retard, mais jamais très loin de l’heure « exacte ».

En plus, au fur et à mesure des échanges, le programme peut apprendre sur le comportement de l’horloge de l’ordinateur (comme on le fait avec une montre mécanique d’ailleurs, on dit “elle avance” ou “elle recule”), à savoir si elle a tendance à aller trop vite ou trop lentement. On peut mettre à profit ces informations pour mieux contrôler l’horloge deux vérifications auprès de sa référence, et aussi quoi faire si on perd le contact avec celle-ci pour une durée plus ou moins longue.

C’est le protocole NTP qui se charge de tout ça. Les deux programmes les plus souvent utilisés qui implémentent ce protocole sont ntp et chrony.

II.d Liste de serveurs NTP

Après avoir installé le serveur NTP sur son ordinateur, il reste à le configurer, c’est à dire principalement lui fournir une liste de serveurs de référence. Nombreuses sont les pages sur Internet qui les listent. Le plus simple, et ce que font la majorité des utilisateurs, c’est se synchroniser sur les pools (ensembles) de serveurs de son pays. L’organisation NTP Pool maintient une liste de ces ensembles et fourni des adresses DNS appropriées.

Pays

Ensemble global

Sous-ensembles

Global

pool.ntp.org

{0,1,2,3}.pool.ntp.org

Europe

europe.ntp.org

{0,1,2,3}.europe.ntp.org

France

-

{0,1,2,3}.fr.ntp.org

L’intérêt d’un pool c’est que vous n’avez qu’à saisir un seul nom plutôt que plusieurs, et la redondances : plusieurs serveurs sont utilisés, si l’un n’est plus accessible, il reste les autres.

Certaines organisations font la promotion de leurs serveurs :

Serveur

Strate

time.cloudflare.com

3

time.google.com

1

time.aws.com

4

time.apple.com

1

time.facebook.com

1

II.d C’était pas si compliqué que ça finalement !

Résumé des épisodes précédents :

  • Il est important d’être à l’heure

  • Il y a des horloges de référence, en strate 1

  • Vous pouvez vous synchroniser sur un strate 2, 3 ou plus

  • Il faut un protocole pour gérer les communications avec le serveur et l’horloge de la machine, c’est le rôle de NTP.

III Une valse à deux temps

Il faut une seule référence pour toute la Terre n’est ce pas ? Évidement, donc on l’appelle le Temps Atomique International. On s’en sert en particulier pour déterminer la durée de la seconde étalon. On le calcule en faisant la moyenne entre des horloges atomiques placées dans des laboratoires répartis peu partout sur la planète. Donc on a un tic-tac super précis (10-14 pour ceux à qui ça parle), c’est le TAI.

Nous, les humains, on aime bien être à peu près synchronisés avec le soleil : à midi il est censé être juste au dessus de notre tête, et à 20 heures plus ou moins bas sur l’horizon. Donc on défini le temps universel (TU) basé sur la position du soleil : il est midi quand le soleil est au zénith à Greenwich. C’est la base des fuseaux horaires.

Méridien de Greenwich

Fuseaux horaires

Petit problème : la rotation de la Terre n’est pas stable. Pas stable du tout même. Le TAI lui il l’est. La rotation de la terre n’est pas stable parce que c’est pas une bille de verre, mais un truc plus ou moins mou parce que recouverte par les océans, et que les marées, la Lune, et que son intérieur est lui aussi mou, les tremblements de terre, et pleins de facteurs comme ça.
On corrige le TU basé sur le temps solaire vrai par le temps solaire moyen, et on l’appelle UT1.1

III.a Conséquence

Mais comme c’est pas facile d’avoir un truc super stable, le TAI, et un truc qui bouge (lentement), l’UT1, on a mis au point l’UTC : le Temps Universel Coordonné.

C’est simple, il s’écoule comme le UT1, mais toujours à moins de 0,9 seconde près. Si jamais le décalage dépasse les 0,9 secondes, on le corrige d’une seconde. Donc il suit le TAI décalé d’un nombre entier de secondes (37 à cet instant), parce que lui, le TAI, il ne bouge pas, jamais.

Si la vitesse de rotation de la Terre diminue, on doit rajouter une seconde de temps en temps, elle s’appelle la seconde intercalaire (leap second). On la retranche si a vitesse de de rotation augmente (ce n’est encore jamais arrivé).

Fun fact : UTC ça ne veut rien dire, soit on dit Temps Universel Coordonné (TUC), soit Coordinated Universal Time (CUT) en anglais. Comme ces cons qui font les normes sont pas capables de tomber d’accord sur un truc aussi basique, ils se sont mis d’accord sur UTC, qui fais chier et les uns, et les autres. Malin.

IV Pourquoi cette seconde est un problème

Qu’est ce qu’il se passe quand on ajoute une seconde intercalaire ? Simple, à 23h59m59s + 1 seconde il n’est pas 00h00m00s mais 23h59m60s, puis ensuite seulement 00h00m00s.

Si vous êtes programmeur et que je vous demande d’écrire un bout de code qui à un rapport avec le temps, quelque chose d’aussi simple que de calculer le nombre de secondes entre midi à une date donnée et midi le lendemain, il y a fort à parier que vous allez répondre : 24 × 3600 = 86 400.

Ah mais en fait vous êtes malin, vous savez qu’on change d’heure deux fois par an, alors le programme va vérifier si ça tombe un jour lambda et le résultat sera 86 400, soit il faudra ajuster en ajoutant ou retranchant 3 600 pour trouver 90 000 ou 82 000

Mais vous avez oublié de tester s’il faut ajouter ou supprimer la seconde intercalaire.

Et si votre code tourne dans un avion en vol, ça peut donner lieu à des erreurs pénibles à gérer, parce que 1 seconde c’est 250 mètres.

Pareil pour l’affichage ou la validation des dates/heures : les programmes vérifient que les secondes sont comprises entre 0 et 59, pas 60.

Vous êtes programmeur ? Essayer d’insérer 23:59:60 dans une base de données, ou bien testez vos bibliothèques favorites. Sous Windows :
get-date "31 décembre 1972 23:59:59.99999999"
get-date "31 décembre 1972 23:59:60"

V La seconde intercalaire et NTP

NTP n’est pas con : il est prévenu 59 minutes à l’avance de ce qui va se passer, et fait tout bien comme il faut, à commencer par passer l’information à ceux qui se synchronisent sur lui, puis à continuer à ajuster l’horloge pour « passer » par 23:59:60.731 par exemple.

Les systèmes Linux, savent généralement gérer ça, et l’horloge ne saute pas d’une seconde en arrière ou n’est pas gelée pendant 1 seconde.

Windows lui ne sait pas gérer cette seconde, donc il va se retrouver en avance d’une seconde jusqu’à la prochaine synchronisation.

Si ça n’a pas d’importance (par exemple pour déclencher l’éclairage public), ça va. Sinon ç’est un problème.

Il est donc recommandé d’utiliser NTP dans un processus extérieur à Windows.

La suite continue dans le prochain article : Installation et configuration de NTP sur votre PC qui explique comment installer très simplement NTP sur un PC et comment avoir une configuration dans les règles de l’art.

Ce blog est propulsé par Beehiiv. J’ai choisi beehiiv parce qu’ils offrent plus de choses que la concurrence et que ce sont des gentils.
Les liens ci dessus sont sponsorisés ! Je touche $1000 par clic. Alors cliquez sans peur !

1  Les trois versions du TU : UT0 : Temps Universel non corrigé (basé uniquement sur la rotation terrestre), UT1 : TU corrigé des mouvements des pôles (variations de l'axe de rotation terrestre), UT2 : UT1 corrigé des variations saisonnières de la rotation terrestre.

Reply

Avatar

or to participate