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
. Эти четыре метки используются для расчёта сдвига и задержки часов сервера В
относительно сервера А
.