Прежде чем будут обновлены значения переменных состояния xmt
и org
, проводятся две важных контрольных проверки с целью защиты против дубликатов, поддельных или повторно переданных NTPv4-собщений. Из рассмотренного ранее примера, NTPv4-собщение будет являться дубликатом или повторно переданным, если метка времени отправки t3
в NTPv4-собщении совпадёт с переменной состояния org
, равной T3
. NTPv4-собщение будет являться поддельным, если метка времени отправки t1
в NTPv4-собщении не совпадёт с переменной состояния xmt
, равной T1
. Если эти две контрольных проверки прошли успешно, то тогда переменные состояния обновляются, а само NTPv4-собщение уничтожается. Для защиты от повторной передачи последнего переданного NTPv4-собщения, переменная состояния xmt
устанавливается в ноль сразу после успешной проверки NTPv4-сообщения на предмет его фиктивности.
Четыре наиболее важные метки времени, T1 … T4 , используются для вычисления сдвига времени сервера В относительно сервера А :
θ = T(B) - T(A) = ½×[(T2 - T1 ) + (T3 - T4 )]
а задержка петлевого маршрута:
δ = T(ABA) = (T4 - T1 ) - (T3 - T2 )
Необходимо отметить, что значения в круглых скобках вычисляются на основе 64-битовых беззнаковых метках времени и преобразуются в знаковые величины, состоящие из 63 соответствующих битов и знака плюс (один бит). Эти величины могут представлять собой даты, начиная с последних 68 лет и кончая последующими 68 годами. Однако, сдвиг и задержка вычисляются как суммы и разности таких значений, в которых только 62 бита отводятся для числа, а два бита отводятся под знак числа, и поэтому могут представлять собой явные значения, начиная с последних 34 лет и кончая последующими 34 годами. Другими словами, время клиента должно быть синхронизировано от сервера времени не ранее, чем за 34 лет до начала действия протокола. Это фундаментальное ограничение, связанное с 64-битовыми целочисленными арифметическими действиями.