8. Процедурная характеристика протокола
Основой процедурной характеристики NTPv4-протокола является процесс (алгоритм), который обеспечивает обмен значениями времени между серверами, удаленными серверами и клиентами. Он обеспечивает защиту от потери или дублирования NTPv4-сообщений. Целостность данных обеспечивается с помощью проверочных сумм IP- и UDP-протоколов. Протокол не обеспечивает управление потоком и процедуру повторной передачи, более того, в этом нет необходимости. Протокол использует метки времени, при этом они, либо извлекаются из заголовка NTPv4-собщения, либо они проставляются системными часами при отправке или сразу после получения NTPv4-собщения. Метки времени это данные о точном времени, и поэтому их целесообразно повторно проставлять в случае повторной передачи на канальном уровне, а также корректировать при вычислении криптографической контрольной суммы при передаче NTPv4-собщения.
NTPv4-собщения используются в двух различных режимах передачи:
Один-одному (one-to-one), то есть однонаправленный.
Один-многим (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
. Эти четыре метки используются для расчёта сдвига и задержки часов сервера В
относительно сервера А
.