II. Les protocoles « réseau » utilisés par les serveurs de temps▲
Dans ce chapitre, je ne vais pas vous parler du fonctionnement de base des réseaux.
Pour avoir de plus en amples informations, je vous invite à visiter les sites suivants :
- Guill.net - La page des réseaux
- Kudzu Article Collection : Introduction aux sockets, IP, adresses, DNS, TCP, UDP & Ports
Cependant, afin que nous parlions le même langage, je vous donne une petite explication d'un protocole.
Un protocole, à l'instar des langues (français, anglais, etc.), est une convention permettant à deux ordinateurs de se comprendre. Les spécificités de chaque protocole sont définies dans les Request For Comments (RFC), assurant ainsi un standard international.
Vous trouverez les différentes Request For Comments sur les sites suivants :
Je vais vous présenter brièvement les différents protocoles en vigueur actuellement sur Internet.
II-A. Time Protocol▲
II-A-1. Présentation et fonctionnement▲
Le « Time Protocol » est conforme à la norme définie, en mai 1983, dans la Request For Comments n° 868 (RFC868).
On interroge un serveur de temps Time sur le port 37, et la réponse est envoyée aux formats UDP/IP ou TCP/IP.
Ce protocole est le plus simple à utiliser pour interroger un serveur de temps, mais il tombe en désuétude, car certaines informations importantes lui font défaut comme la gestion de l'heure d'été ou encore la fiabilité du serveur.
Il n'est plus, actuellement, utilisé que par environ 1 % des serveurs de temps. Le National Institute of Standards and Technology (NIST) propose, à ma connaissance, l'un des derniers serveurs de temps utilisant ce protocole : time.nist.gov.
II-A-2. Format de la valeur renvoyée▲
La valeur renvoyée par un serveur de temps Time est composée d'un nombre binaire 32 bits non formaté. Elle représente le temps en secondes UTC séparant la date du jour du 1er janvier 1900 à minuit.
Le format de la valeur renvoyée est défini au niveau du serveur et non au niveau du client, charge au client de créer ses propres routines de formatage de date et heure.
II-A-3. Utilisation de ce protocole dans Delphi▲
Ce protocole est notamment utilisé par ces composants standards de Delphi :
Palette |
Composant |
|
---|---|---|
FastNet |
TNMTime |
|
Indy |
TIdTime |
|
Nota : La palette « FastNet » de Delphi 6 va disparaître avec Delphi 7.
II-B. DayTime Protocol▲
II-B-1. Présentation et fonctionnement▲
Le « DayTime Protocol » est conforme à la norme définie, en mai 1983, dans la Request For Comments n° 867 (RFC867).
On interroge un serveur de temps DayTime, en écoute sur le port 13, via le protocole TCP.
À la différence des serveurs Time du NIST (voir Time Protocol ci-dessus), l'heure renvoyée par un serveur DayTime est l'heure locale de l'endroit où il est installé. En effet, il est possible d'interroger le serveur américain time.nist.gov par le protocole DayTime, mais les valeurs renvoyées concerneront uniquement les États-Unis…
II-B-2. Format de la valeur renvoyée▲
La valeur renvoyée par un serveur DayTime est composée d'une série de champs « Date » et « Heure » au format ASCII anglais.
Il n'y a pas de syntaxe spécifique au protocole DayTime.
Cependant, il est recommandé de délimiter les champs par des caractères ASCII tels que la virgule, le point-virgule ou encore l'espace.
Le format de la valeur renvoyée est défini au niveau du serveur et non au niveau du client, charge au client de créer ses propres routines de formatage de date et heure.
Voici deux exemples de valeurs renvoyées par un serveur DayTime :
Exemple 1 |
|
---|---|
Format |
Weekday,Month Day,Year,Time-TimeZone |
Valeur |
Thursday,August 15,2002,12:30:47-PST |
Exemple 2 |
|
---|---|
Format |
DD MMM YY HH:mm:ss ZZZ |
Valeur |
15 AUG 02 12:30:47 PST |
II-B-3. Utilisation de ce protocole dans Delphi▲
Ce protocole est notamment utilisé par ces composants standards de Delphi :
Palette |
Composant |
|
---|---|---|
FastNet |
TNMDateTime |
|
Indy |
TIdDayTime |
|
Nota : La palette « FastNet » de Delphi 6 va disparaître avec Delphi 7.
II-C. Network Time Protocol▲
II-C-1. Présentation et fonctionnement▲
Le « Network Time Protocol » est conforme à la norme définie, en mars 1992, dans la Request For Comments n° 1305 (RFC1305).
Ce protocole est le plus utilisé actuellement, car il fournit des informations plus complètes et plus fiables que les autres protocoles.
De nombreux systèmes d'exploitation fournissent des logiciels NTP en standard. Ces logiciels fonctionnent en tâche de fond et mettent à jour périodiquement l'horloge du poste « Client ».
Sur les gros systèmes et les serveurs, ces logiciels interrogent plusieurs serveurs de temps, ignorent les réponses qui lui semblent mauvaises et font la moyenne des bonnes réponses.
Sur les ordinateurs individuels, ces logiciels synchronisent l'horloge du poste « Client » en n'interrogeant qu'un seul serveur. Ce type de logiciel s'appelle « Logiciel SNTP » (Voir Simple Network Time Protocol ci-après).
On interroge un serveur de temps Network Time sur le port 123, et la réponse est envoyée sous la forme d'un paquet de données UDP/IP au format NTP.
Le « Network Time Protocol » est un protocole sophistiqué permettant la synchronisation permanente avec plusieurs serveurs. De plus, ce protocole prend en compte la correction du décalage provoqué par les délais de transmission des données et par la dérive des horloges locales.
Les serveurs NTP sont répartis en différentes couches numérotées (Strate). Le numéro indique l'éloignement sur le réseau entre le serveur concerné et son horloge de référence :
- un serveur connecté à une horloge de référence est un serveur « Strate 1 » ;
- un serveur synchronisé sur un serveur « Strate 1 » est un serveur « Strate 2 » ;
- et ainsi de suite…
L'avantage de cette structure arborescente réside dans le fait que le trafic réseau des serveurs « Strate 1 » est déchargé sur les serveurs secondaires, « Strate 2 » et autres.
II-C-2. Format de la valeur renvoyée▲
Le paquet de données renvoyé inclut un horodateur 64 bits contenant le temps en secondes UTC séparant la date du jour du 1er janvier 1900 avec une résolution 200 picosecondes.
Le format de la valeur renvoyée est défini au niveau du serveur et non au niveau du client, charge au client de créer ses propres routines de formatage de date et heure.
II-C-3. Utilisation de ce protocole dans Delphi▲
Actuellement, le « Network Time Protocol » n'est pas utilisé sous sa forme normalisée dans Delphi.
Certains composants en utilisent la forme simplifiée : Le « Simple Network Time Protocol » que je vais vous présenter dès maintenant.
II-D. Simple Network Time Protocol▲
II-D-1. Présentation et fonctionnement▲
Le « Simple Network Time Protocol » est conforme à la norme définie, en octobre 1996, dans la Request For Comments n° 2030 (RFC2030).
C'est une version simplifiée du « Network Time Protocol », dépourvue des mécanismes de sélection.
Il est destiné à des utilisations où une précision de l'ordre de la seconde est suffisante.
Un client SNTP peut bien sûr se synchroniser sur un serveur NTP.
Bien qu'ayant plutôt été conçu pour implémenter des clients simples, SNTP permet également de mettre en œuvre des serveurs, mais ceux-ci doivent alors être synchronisés directement par une référence temporelle.
II-D-2. Format de la valeur renvoyée▲
Le paquet de données renvoyé inclut un horodateur 64 bits contenant le temps en secondes UTC séparant la date du jour du 1er janvier 1900 avec une résolution 200 picosecondes.
Le format de la valeur renvoyée est défini au niveau du serveur et non au niveau du client, charge au client de créer ses propres routines de formatage de date et heure.
II-D-3. Utilisation de ce protocole dans Delphi▲
Ce protocole est notamment utilisé par ce composant standard de Delphi :
Palette |
Composant |
|
---|---|---|
Indy |
TIdSNTP |
|
Nous verrons l'utilisation de ces composants dans la suite du tutoriel.
Vous connaissez désormais les bases nécessaires permettant l'étude du fonctionnement de l'horloge de Windows. Rendez-vous au chapitre suivant… ;-)