Метки времени представляют собой беззнаковые значения времени, а выполнение операций над ними приводит к результату, который относится к той же самой или смежной эпохе. Нулевая эра включает даты, начиная с точки отсчёта первичной эпохи до определённого момента времени в 2036 году, когда поле метки времени полностью заполниться единицами и в следующий момент времени обнулиться, и после этого начнётся первая эра (№1). В обоих форматах нулевое значение представляет собой особый случай, при котором неизвестно время или отсутствует возможность синхронизировать время. На рис.5 представлено несколько исторических NTP-дат и их значения в соответствие с Модифицированным Юлианским днём (Modified Julian Date — MJD), NTP-эпохой и NTP-меткой времени.
Дата | MJD | NTP-эпоха (эра) | NTP-метка времени (сдвиг эпохи) | Сдвиг |
---|---|---|---|---|
1 января -4712 года | -2,400,001 | -49 | 1,795,583,104 | 1-ый день Юлианского календаря |
1 января -1 года | -679,306 | -14 | 139,775,744 | 2 век до нашей эры |
1 января 0 года | -678,491 | -14 | 171,311,744 | 1 век до нашей эры |
1 января 1 года | -678,575 | -14 | 202,939,144 | 1 век нашей эры |
4 октября 1582 года | -100,851 | -3 | 2,873,647,488 | Последний день Юлианского календаря |
15 октября 1582 года | -100,840 | -3 | 2,874,597,888 | 1-ый день Григорианского календаря |
31 декабря 1899 года | 15019 | -1 | 4,294,880,896 | Последний день NTP-эпохи -1 (эра № -1) |
1 января 1900 года | 15020 | 0 | 0 | Первый день NTP-эпохи 0 (эра № 0) |
1 января 1970 года | 40,587 | 0 | 2,208,988,800 | Первый день UNIX-эпохи |
1 января 1972 года | 41,317 | 0 | 2,272,060,800 | Первый день UTC-эпохи |
31 декабря 1999 года | 51,543 | 0 | 3,155,587,200 | Последний день 20-го века |
8 февраля 2036 года | 64,731 | 1 | 63,104 | Первый день NTP-эпохи 1 (эра № 1) |
Рис.5. Наиболее интересные исторические NTP-даты |
Пусть p
будет число старших битов, отведенных для дробной части секунды. Тогда точность часов определяется выражением 2-p
в секундах. С целью минимизации отклонения и содействия в формировании максимально непредсказуемых для нарушителя значений меток времени младшие биты должны быть установлены в форме реальной случайной последовательности битов. Точность часов представляет собой текущее время для считывания системного времени, в секундах.
Замечание. Точность, определённая таким образом в этом стандарте, может быть больше или меньше, чем разрешение. Параметр ρ
, используемый в данном стандарте для обозначения точности, всегда больше двух.
При обработке значений дат и меток времени допускается только одна арифметическая операция — вычитание по модулю два, в результате которого получается 127- или 63- битовое знаковое значение. Чрезвычайно необходимо, чтобы разности первого порядка между двумя датами сохраняли полную 128-битовую точность, а разности первого порядка между двумя метками времени сохраняли полную 64-битовую точность. Однако, разности обычно представляют собой весьма малые значения, как правило, сравнимые с коротким промежутком времени в несколько секунд, и поэтому они могут быть преобразованы в удвоенный формат с плавающей запятой (точкой) для последующей обработки, причём без снижения точности.