Niveau :      
Résumé : TP NTP

Avant, il y avait l'heure

Le time protocol est un protocole permettant de se mettre à l'heure en se comparant avec l'heure d'une autre machine. Ce protocole est infiniment simple : on se connecte sur le serveur (port 37), le serveur répond un temps en 32 bits et c'est fini. Ceci marche en tcp et en udp comme indiqué dans la RFC 868.

Bon évidemment la simplicité se paye, la précision d'un tel protocole est très réduite, de plus il ne permet pas réellement la synchronisation entre plusieurs serveurs. De plus 32 bits c'est un peu léger pour représenter une date, on a une précision à la seconde.

Finalement, mauvaise idée, ce protocole ne sert qu'à avoir l'heure.

Avant, il y avait l'horloge

Il existe un autre protocole nommé ICS (internet clock service) décrit ici dans la RFC 778. La méthode reste assez simple. Il s'agit de mesurer les temps d'aller et de retour des paquets dans la communication avec un serveur ics. Grâce aux différences entre les différents temps on peut en déduire le décalage avec le serveur et donc le corriger.

Le service utilise des entiers de 32 bits avec une précision à la milliseconde, donc un décalage maximum de 25 jours.

Après il y eu le réseau

Un nouveau protocole est apparu, nommé NTP (network time protocol), capable de donner la date et l'heure mais aussi le décalage avec l'horloge locale. Il se base sur le même principe qu'ICS, mais en utilisant 2 fois 32 bits (pour former un nombre 64 bits à virgule fixe). On peut donc avoir une précision énorme (1/2^32 s) tout en ayant une échelle de temps suffisante pour avoir la date (136 ans).

De plus, ses évolutions permettent une synchronisation entre des réseaux de serveurs (strates) pour conserver au mieux une heure précise à l'intérieur de ce réseau.

La dernière rfc à ce sujet est pour NTPv3 RFC 1305.

Aujourd'hui le protocole en est à sa version 4 (non rfcisé) et la version 5 est en cours de développement.

À bientôt pour un nouvel article sur la configuration de ntp.