RFC: 5905
Оригинал: Network Time Protocol Version 4: Protocol and Algorithms Specification
Предыдущие версии: RFC 958, RFC 1059, RFC 1119, RFC 1305, RFC 1361, RFC 1769, RFC 2030, RFC 4330
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Мельников Дмитрий Анатольевич

8. Процедурная характеристика протокола

Основой процедурной характеристики NTPv4-протокола является процесс (алгоритм), который обеспечивает обмен значениями времени между серверами, удаленными серверами и клиентами. Он обеспечивает защиту от потери или дублирования NTPv4-сообщений. Целостность данных обеспечивается с помощью проверочных сумм IP- и UDP-протоколов. Протокол не обеспечивает управление потоком и процедуру повторной передачи, более того, в этом нет необходимости. Протокол использует метки времени, при этом они, либо извлекаются из заголовка NTPv4-собщения, либо они проставляются системными часами при отправке или сразу после получения NTPv4-собщения. Метки времени это данные о точном времени, и поэтому их целесообразно повторно проставлять в случае повторной передачи на канальном уровне, а также корректировать при вычислении криптографической контрольной суммы при передаче NTPv4-собщения.

NTPv4-собщения используются в двух различных режимах передачи:

  1. Один-одному (one-to-one), то есть однонаправленный.

  2. Один-многим (one-to-many), то есть широковещательный.

    При использовании IPv4-адресации — это широковещательный или групповой адрес (Для этого IANA зарегистрировала групповой IPv4-адрес — 224.0.1.1). А при использовании IPv6-адресации — это групповой адрес (Для этого IANA зарегистрировала окончание группового IPv6-адреса — :101).

В процедурной характеристике NTPv4-протокола используются четыре метки времени t1…t4 и три переменные состояния org, rec и xmt (рис.12).

          t2            t3           t6            t7
     +---------+   +---------+   +---------+   +---------+
     |    0    |   |    t1   |   |   t3    |   |    t5   |
     +---------+   +---------+   +---------+   +---------+
     |    0    |   |    t2   |   |   t4    |   |    t6   |  Метки времени
     +---------+   +---------+   +---------+   +---------+  в NTP-сообщении
     |   t1    |   |t3=clock |   |   t5    |   |t7=clock |
     +---------+   +---------+   +---------+   +---------+
     |t2=clock |                 |t6=clock |
     +---------+                 +---------+
                                                            Сервер B
     +---------+   +---------+   +---------+   +---------+
org  |   T1    |   |    T1   |   | t5<>T1? |   |    T5   |
     +---------+   +---------+   +---------+   +---------+  Переменные
rec  |   T2    |   |    T2   |   |   T6    |   |    T6   |  состояния
     +---------+   +---------+   +---------+   +---------+
xmt  |    0    |   |    T3   |   |  t3=T3? |   |    T7   |
     +---------+   +---------+   +---------+   +---------+

               t2      t3                 t6          t7
     ---------------------------------------------------------
Сервер В      /\         \                 /\            \
              /           \                /              \
             /             \              /                \
            /               \/           /                 \/
     ---------------------------------------------------------
Сервер А  t1                t4         t5                  t8

         t1            t4            t5             t8
     +---------+   +---------+   +---------+   +---------+
     |    0    |   |    t1   |   |   t3    |   |    t5   |
     +---------+   +---------+   +---------+   +---------+
     |    0    |   |    t2   |   |   t4    |   |    t6   |  Метки времени
     +---------+   +---------+   +---------+   +---------+  в NTP-сообщении
     |t1=clock |   |    t3   |   |t5=clock |   |    t7   |
     +---------+   +---------+   +---------+   +---------+
                   |t4=clock |                 |t8=clock |
                   +---------+                 +---------+
                                                            Сервер A
     +---------+   +---------+   +---------+   +---------+
org  |    0    |   |  t3<>0? |   |   T3    |   | t7<>T3? |
     +---------+   +---------+   +---------+   +---------+  Переменные
rec  |    0    |   |    T4   |   |   T4    |   |    T8   |  состояния
     +---------+   +---------+   +---------+   +---------+
xmt  |   T1    |   |  t1=T1? |   |   T5    |   |  t5=T5? |
     +---------+   +---------+   +---------+   +---------+

Рис.12. Структурно-временная модель процедурной характеристики NTPv4-протокола

На рис.12 сервер А передаёт первое NTPv4-сообщение, включающее только время своей отправки t1, которое затем копируется в значение T1. Север В принимает NTPv4-собщение в момент времени t2 и копирует t1 в T1, а метку времени получения NTPv4-сообщения t2 — в T2. В это время или несколько позже в момент времени t3 сервер В передаёт серверу А NTPv4-сообщение, содержащее t1, t2 и дополнительно метку времени отправки t3. Все эти три метки времени копируются в соответствующие переменные состояния. Сервер А в момент времени t4 принимает NTPv4-собщение, содержащее три метки времени t1, t2 и t3, а также дополнительную метку прибытия NTPv4-собщения от сервера В t4. Эти четыре метки используются для расчёта сдвига и задержки часов сервера В относительно сервера А.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.