2015-05-26 5 views
0

Предположим, у нас есть сервер с тикающими часами (просто целочисленная переменная, которая содержит несколько миллисекунд от эпохи и обновляется каждый раз при изменении системного времени).Синхронизация часов по сети с максимальной точностью

Каждый клиент должен иметь возможность синхронизировать свои собственные часы (а не системные часы! Только абстрактный таймер, целочисленное значение, которое увеличивается со временем) с сервером.

Например, клиент может отправить запрос «sync», и сервер ответит своим текущим значением часов.

Проблема в том, что мы не можем точно знать, сколько времени потребуется на отправку и получение данных. Мы знаем время, прошедшее с момента отправки запроса на получение данных, мы можем разделить эту разницу на 2 и добавить это к значению, полученному от сервера, но это не очень точно!

Существует ли общая концепция синхронизации часов между сервером и клиентом с минимальной разницей значений с обеих сторон после его выполнения?

+0

Есть ли причина, по которой вы не используете ntp? –

+0

Что случилось с NTP? – TZHX

+0

Нет ничего плохого в NTP. Речь шла о концепции, алгоритме, который используется для синхронизации времени между двумя машинами и учета задержки. В этом случае я не говорю о системных часах, а просто абстрактный таймер в программе, который должен быть синхронизирован между двумя экземплярами по сети. –

ответ

0

Я бы рекомендовал использовать NTP (Network Time Protocol) для этого, это всего лишь способ синхронизации часов во всей сети.

http://de.wikipedia.org/wiki/Network_Time_Protocol

Почти каждая операционная система там (я управляю Linux, Solaris, BSD и Windows) есть клиенты и серверы NTP. В протоколе реализованы возможности по уходу за задержкой в ​​сети.

+0

Мне нужно понять суть таких протоколов. Мне не нужно синхронизировать системные часы. Просто абстрактный таймер в приложении. –

+0

NTP решает эту проблему и использует много действительно хороших идей. Вы всегда можете получить подробное описание в RFC NTP: https://www.ietf.org/rfc/rfc5905.txt – Mandraenke

Смежные вопросы