Наиболее широко используемый протокол для синхронизации времени, широко применяемый на практике, реализуется через сетевой протокол времени (NTP).
NTP использует протокол пользовательских дейтаграмм (UDP), который использует минимальное время для передачи пакетов между сервером и клиентом, которые хотят синхронизироваться с данным источником времени.
Особенности протокола сетевого времени следующие:
-
Порт сервера по умолчанию — 123.
-
Этот протокол состоит из множества доступных серверов времени, синхронизированных с национальными лабораториями.
-
Стандарт протокола NTP регулируется IETF, а предлагаемым стандартом является RFC 5905 под названием «Протокол сетевого времени версии 4: спецификация протокола и алгоритмов» [NTP RFC]
-
Операционные системы, программы и приложения используют NTP для правильной синхронизации времени.
Порт сервера по умолчанию — 123.
Этот протокол состоит из множества доступных серверов времени, синхронизированных с национальными лабораториями.
Стандарт протокола NTP регулируется IETF, а предлагаемым стандартом является RFC 5905 под названием «Протокол сетевого времени версии 4: спецификация протокола и алгоритмов» [NTP RFC]
Операционные системы, программы и приложения используют NTP для правильной синхронизации времени.
В этой главе мы сосредоточимся на использовании NTP с Python, что возможно из сторонней библиотеки Python ntplib. Эта библиотека эффективно обрабатывает тяжелую работу, которая сравнивает результаты с моими локальными системными часами.
Установка библиотеки NTP
Файл ntplib доступен для загрузки по адресу https://pypi.python.org/pypi/ntplib/, как показано на следующем рисунке.
Библиотека предоставляет простой интерфейс для NTP-серверов с помощью методов, которые могут преобразовывать поля протокола NTP. Это помогает получить доступ к другим значениям ключа, таким как дополнительные секунды.
Следующая программа на Python помогает понять использование NTP.
import ntplib import time NIST = 'nist1-macon.macon.ga.us' ntp = ntplib.NTPClient() ntpResponse = ntp.request(NIST) if (ntpResponse): now = time.time() diff = now-ntpResponse.tx_time print diff;
Вышеуказанная программа выдаст следующий вывод.
Разница во времени рассчитывается в вышеуказанной программе. Эти расчеты помогают в судебных расследованиях. Полученные данные сети принципиально отличаются от анализа данных, найденных на жестком диске.
Разница в часовых поясах или получение точных часовых поясов может помочь в сборе доказательств для сбора сообщений с помощью этого протокола.