Comment fonctionne le Protocole de Temps Réseau de Travail?
La L'entrée de Wikipedia ne donne pas de détails et la RFC est trop dense. Quelqu'un autour de vous le savez, dans une manière très générale, comment NTP fonctionne?
Je suis à la recherche pour une vue d'ensemble qui explique comment Marzullo de l'algorithme de (ou une modification de celle-ci) est employé pour traduire un timestamp sur un serveur dans un horodatage sur un client. Plus précisément ce mécanisme est utilisé pour produire de l'exactitude, ce qui est, en moyenne, dans un délai de 10 ms lorsque la communication a lieu sur un réseau avec des temps de latence très variable qui est souvent plusieurs fois que.
Vous devez vous connecter pour publier un commentaire.
(Ce n'est pas Marzullo de l'algorithme. Ceci n'est utilisé que par le haut strate serveurs, pour obtenir vraiment le temps précis à l'aide de plusieurs sources. C'est de cette façon ordinaire, le client obtient la fois, en utilisant un seul serveur)
Tout d'abord, NTP ces données sont stockées sous forme de secondes depuis le 1er janvier 1900. 32 bits pour le nombre de secondes et 32 bits pour les fractions de seconde.
La synchronisation est délicate. Le client enregistre le timestamp (dire) (toutes ces valeurs sont exprimées en secondes) lors de l'envoi de la demande. Le serveur envoie une réponse portant sur le "vrai" temps quand il a reçu le paquet (appelons le X) et le "vrai" temps qu'il va transmettre le paquet (Y). Le client recevra un paquet de journaux et le moment où il l'a reçu (B).
NTP suppose que le temps passé sur le réseau est le même pour l'envoi et la réception. Plus assez d'intervalles, sur sane réseaux, il doit en moyenne être ainsi. Nous savons que le temps de transit total de l'envoi de la demande à la réception de la réponse était B-Une secondes. Nous voulons supprimer le temps que le serveur a passé le traitement de la demande (Y-X), laissant seulement le réseau de la traversée du temps, de sorte que le B-A-(Y-X). Puisque nous sommes en supposant que le réseau de la traversée du temps est symétrique, la quantité de temps qu'il a fallu l'intervention pour obtenir à partir du serveur vers le client est [B-A-(Y-X)]/2. Donc, nous savons que le serveur a envoyé sa réponse au moment de Y, et il nous a fallu [B-A-(Y-X)]/2 secondes pour que la réponse à arriver jusqu'à nous.
De sorte que le vrai moment où nous avons reçu la réponse est Y+[B-A-(Y-X)]/2 secondes. Et c'est ainsi que NTP fonctionne.
Exemple (en secondes entières à faire le calcul facile):
Dans une bonne mise en œuvre, le client fonctionne comme un démon, tout le temps. Sur une longue période de temps avec un grand nombre d'échantillons, NTP peut réellement déterminer si l'horloge de l'ordinateur est lent ou rapide, et automatiquement ajuster en conséquence, lui permettant de garder une durée de vie raisonnable, même si c'est plus tard déconnecté du réseau. Avec en moyenne, les réponses du serveur et de l'application des plus complexes de la pensée, vous pouvez obtenir un son incroyablement précis fois.
Il n'y a plus, bien sûr, pour une mise en œuvre correcte que cela, mais c'est l'essentiel.
les serveurs de l'heure qu'il est.
des réponses différentes, avec différents niveaux de confiance parce que le
demandes des quantités différentes
de temps à voyager à partir du client
le serveur et le dos.
la gamme de valeurs de temps compatible avec
toutes les réponses fournies.
SI vous utilisez les horodatages pour décider de la commande, des moments spécifiques peuvent ne pas être nessisary. Vous pouvez utiliser les horloges de lamport au lieu de cela, qui sont de moins en moins de douleur que le réseau de synchronisation. Il peut vous dire ce qui est venu de "première", mais pas la différence exacte en temps. Il ne se soucie pas de ce que l'horloge de l'ordinateur dit en réalité.
Le truc, c'est que certains paquets sont rapides, et de la rapidité des paquets de vous donner de sévères contraintes sur le temps.