Как работает синхронизация времени в интернете
В прошлый раз мы рассказали, какие сложности могут ждать программистов, когда они пишут код для работы со временем. Сегодня перейдём на более сложный уровень: как компьютеры и другие устройства синхронизируют время между собой.
От того, какое на компьютере установлено время, зависит многое:
- отображение спецпредложений и акций на сайтах;
- публикация и сортировка комментариев к статьям;
- совместная работа компьютеров в локальной сети — если время на компьютерах будет различаться, это может привести к сбоям;
- если одна база данных обслуживается с нескольких компьютеров, они должны чётко синхронизироваться во времени; иначе запрос одного компьютера может прилететь из будущего, а реальный запрос из будущего попасть в далекое прошлое;
- если вы используете телефон для двойной аутентификации, то с неправильным временем телефон будет выдавать неправильный код, и аутентификация не пройдёт;
- от времени зависят сертификаты безопасности: если ваше локальное время намного отличается от общемирового, то для вас все сертификаты безопасности будут недействительными, сайты не откроются.
В целом единственный случай, когда не нужна синхронизация, — когда компьютер работает независимо от сети, а результаты его вычислений не связаны со временем. В остальных случаях синхронизация полезна.
Синхронизация времени с TimeServer на Android
В операционных системах Android также имеется встроенная функция синхронизация времени по сети. Однако пользователи не могут ее настраивать. Т.е. система сверяет время с NTP-сервером, который, по сути, неизвестен владельцу Андроид-устройства. Также остается секретом и то, насколько точно работает базовая функция синхронизации часов в Android.
Для возможности синхронизации времени на смартфонах и планшетах под управлением Андроид существует только один выход — использование специальных приложений. Но и здесь есть свои нюансы. ОС Android запрещает сторонним приложениям изменять настройки даты и времени, что сделано в целях безопасности. Для полноценной работы приложений синхронизации времени требуется root-права. Без root-прав такие программы не могут изменять системные настройки в автоматическом режиме, однако определять точное время они все же в состоянии. В этом случае пользователю придется время от времени устанавливать время на своем Android-устройстве вручную.
Рассмотрим, как это делается на примере приложения синхронизации времени ClockSync с NTP-сервером timeserver.ru
Синхронизация времени в Windows
На любом компьютере с Windows можно запустить встроенный сервер точного времени, с которого смогут обновляться другие компьютеры сети, если в этом есть необходимость.
Для активации сервера нужно в реестре в ветке HKLMSystemCurrentControlSetservicesW32TimeTimeProvidersNtpServer установить значение параметра Enabled равным 1.
Затем через командную строку нужно перезапустить службу времени Windows (или просто перезагрузите компьютер):
Как синхронизировать время с интернет
Атомные часы — дорогое и громоздкое устройство. Гораздо удобнее получать сигналы точного времени по телефону, радио или со спутника. С недавних пор еще одним каналом для получения информации о точном времени стал интернет.
- Как синхронизировать время с интернет
- Как синхронизировать время
- Как обновлять время через интернет
Если вы хотите лишь получать из интернете информацию о точном времени, а синхронизацию осуществлять вручную, воспользуйтесь услугами одного из так называемых Daytime-серверов. Перед тем как подключаться к такому серверу, убедитесь, что у вас есть консольный Telnet-клиент (он встречается как в Linux, так и во многих версиях Windows). Запустите программу telnet с параметром, состоящим из IP-адреса сервера и номера порта, разделенных двоеточием. Номер порта для протокола Daytime — всегда 13. Например: telnet 198.60.73.8:13
В ответ вы получите информацию о времени и дате, после чего соединение автоматически разорвется. Не обращайте внимание на часы — сервер находится в другом часовом поясе. Вам нужна информация только о минутах и секундах. Используйте только те серверы из списка, о которых прямо сказано, что они поддерживают протокол Daytime. Никогда не подключайтесь к одному и тому же серверу чаще, чем раз в четыре секунды включительно, иначе ваш IP-адрес будет заблокирован (ваши запросы будут приняты за DoS-атаку).
Чтобы синхронизировать часы компьютера с сервером автоматически, придется воспользоваться другим протоколом — NTP. Его поддерживают все серверы из указанного списка, даже те, которые не работают по протоколу Daytime. Однако лучше всего воспользоваться для этого более точным NTP-сервером — ntp.mobatime.com. Несколько менее точен публичный пул серверов time.windows.com. Обратите внимание на то, что пишутся URL этих серверов без привычной строки «http://www». Запросы к любым NTP-серверам также ни в коем случае нельзя повторять чаще, чем раз в четыре секунды включительно.
Чтобы автоматически синхронизировать встроенные часы компьютера с NTP-сервером в операционной системе Linux, вначале установите пакет ntp. Затем введите команду: sudo ntpdate (URL NTP-сервера)
Чтобы в операционной системе Windows время автоматически синхронизировалось с NTP-сервером при каждом включении компьютера, выберите в «Панели управления» пункт «Дата и время». Переключитесь на вкладку «Время интернета». Установите галочку «Включить синхронизацию с сервером времени в интернете». Введите в единственное на странице поле URL NTP-сервера.
Установите на свой мобильный телефон J2ME-приложение Server Time. Запустив его, введите в настройках URL NTP-сервера. Затем выберите в меню пункт «Старт!». После того, как запрос будет осуществлен, вы сможете сравнить время на сервере с временем во встроенных часах телефона. Осуществить синхронизацию придется вручную, несмотря на использование протокола NTP. Связано это с тем, что виртуальная машина Java на телефоне не позволяет приложениям изменять показания системных часов.
Что делать, если время сбрасывается (слетает)
Причина 1
Наиболее частая причина сброса времени — это севшая батарейка на материнской плате компьютера (в среднем одна добротная батарейка живет ∼5-7 лет). Что характерно при этом: время слетает после отключения/перезагрузки ПК (в процессе работы — должно быть всё нормально. ).
Как выглядит батарейка на мат. плате
Приобрести новую батарейку можно практически в любом компьютерном магазине (и даже заказать в Китае ?).
Причина 2
Неправильно установленный часовой пояс . Из-за этого Windows при любых обновлениях устанавливает автоматически некорректное время.
Если авто-режим неправильно определяет ваш пояс — задайте его вручную (для Windows 10: сочетание клавиш Win+i —> Время и язык —> Дата и время —> Часовой пояс ?).
Часовой пояс — Windows 10
Windows 11 — время и язык — дата и время
? Еще один вариант : сочетание Win+R — > команда timedate.cpl
Изменить часовой пояс
Причина 3
Дело также может быть в некорректной работе синхронизации (например, из-за каких-то системных сбоев ОС, или неправильно-установленного часового пояса, или, например, из-за использования устаревшей версии Windows (от народных «умельцев»)).
Чтобы исправить подобную проблему : уточните часовой пояс и измените сервер для обновления. Если не поможет — отключите синхронизацию и установите время вручную (как это сделать — см. чуть выше в статье ?).
Особенности программы ClockSync
Автоматическая синхронизация работает только на телефонах с ROOT.
Если root-прав нет, то проверка времени проводится автоматически и вы получите уведомление если часы сильно убежали. А синхронизировать часы придется «руками».
Программа поддерживает свежую базу обновленных часовых поясов. И если у вашего смартфона старая прошивка и он каждую весну и осень в России переводит часы, то это программа восстановит несправедливость. И вы не придете весной на работу на час раньше.