Tətbiqlərdə saat sinxronizasiyası — mahiyyəti, protokollar və tətbiqi

Müəllif: IT Sectr Dərc olunub: 2026-07-14 Oxuma vaxtı: 9 dəq

Clock Sync (saat sinxronizasiyası) — cihazın daxili saat göstəricilərinin etalon vaxt mənbəyi ilə uyğunlaşdırılması prosesi. Mobil tətbiqlərdə dəqiq sinxronizasiya push bildirişlərinin, SSL/TLS sertifikatlarının, kriptoqrafik protokolların və analitikanın düzgün işləməsi üçün vacibdir. Google Security Blog (2024) məlumatına görə, mobil cihazlarda HTTPS bağlantılarının 30%-dən çoxundakı nasazlıqlar sistem vaxtının 5 saniyədən çox sinxronizasiyasız qalması nəticəsində baş verir.

Əsas məqamlar

  • Clock Sync — cihaz saatının NTP, SNTP və ya GPS protokolları vasitəsilə etalon UTC ilə uyğunlaşdırılması
  • Vaciblik — 5 saniyədən çox sinxronizasiyasızlıq SSL, push bildirişləri, OAuth nişanları və jurnalların işini pozur
  • Əsas protokollar — NTP (1–50 ms dəqiqlik) və SNTP (sadələşdirilmiş versiya, 10–100 ms)
  • Android sinxronizasiyası — Google-un daxili vaxt xidməti (GTS) Google serverləri ilə SNTP vasitəsilə sinxronizasiya edir
  • Proqram korreksiyası — tətbiqlər üçün sistem vaxtına güvənməkdənsə, server vaxtı ilə müqayisə etmək vacibdir

Saat sinxronizasiyası nədir?

Saat sinxronizasiyası (Clock Sync) — cihazın daxili saatının etalon UTC (Universal Coordinated Time) vaxtına uyğunlaşdırılması mexanizmidir. Sinxronizasiya olmadan mobil cihazdakı kvars generatoru tədricən səhv göstərir — temperaturdan və komponentlərin keyfiyyətindən asılı olaraq gündə 1–10 saniyə sürüşmə baş verir. Sinxronizasiya bu sürüşməni kompensasiya edərək dəqiq vaxtı xarici mənbələrdən əldə edir: internetdəki NTP serverləri, GPS peykləri və ya mobil baza stansiyaları. İdeal olaraq, cihaz 1 saniyə dəqiqlik qorumaq üçün hər 4–6 saatda sinxronizasiya edilməlidir.

Avadanlıq və proqram saatları

Mobil cihazda iki növ saat var: avadanlıq (RTC, Real-Time Clock) ayrı batareyadan qidalanır — cihaz söndürüldükdə belə işləyir, və proqram (system time), əməliyyat sistemi tərəfindən idarə olunur. Cihaz yüklənərkən sistem vaxtı RTC-dən başladılır, sonra takt generatorunun kəsilmələri vasitəsilə saxlanılır. NTP sinxronizasiyası sistem vaxtını korrektə edir, bəzi hallarda isə düzəlişi RTC-yə də yazır. Android-də avadanlıq RTC-yə giriş məhduddur — tətbiqlər root hüquqları olmadan onu dəyişə bilməz.

Mobil tətbiqlərdə vaxt sinxronizasiyası niyə lazımdır

Mobil tətbiqin işinin bir çox aspektləri dəqiq sistem vaxtından kritik dərəcədə asılıdır. SSL sertifikatları müəyyən etibarlılıq müddətinə malikdir: cihazda vaxt sertifikatın buraxılış tarixindən əvvəl və ya bitmə tarixindən sonra qurulubsa, HTTPS bağlantısı bloklanacaq. OAuth nişanları və JWT autentifikasiyası vaxt damğalarından istifadə edir — sinxronizasiyasızlıq səlahiyyətdən yanlış imtinaya səbəb olur. Push bildirişləri vaxta əsasən planlaşdırılır və saat sürüşərsə, istifadəçi bildirişləri yanlış vaxtda alır və ya heç almır.

Sinxronizasiyasızlığın nəticələri

Təhlükəsizlik də səhv vaxtdan əziyyət çəkir: vaxta əsaslanan şifrələmə (time-based OTP), səhv damğalı hadisə jurnalları, server tərəfində rate-limiting-in düzgün işləməməsi (server "gələcək" sorğuları bloklayır). OWASP Mobile Top 10 (2024) məlumatına görə, sistem vaxtına etibarsızlıq platformanın kifayət qədər təhlükəsiz olmaması kateqoriyasına daxildir. Tərtibatçılara həmişə serverdə vaxtı yoxlamaq tövsiyə olunur, yalnız müştəri saatına güvənmək yox. Fərq həddi aşarsa (tövsiyə olunan 5 saniyə), tətbiq sinxronizasiyaya qədər kritik əməliyyatları bloklamalıdır.

SsenariSinxronizasiyasızlığın effekti
HTTPS/TLSSertifikatlar müddəti bitmiş və ya etibarsız sayılır
OAuth 2.0 / JWTNişanlar vaxtı keçmiş kimi rədd edilir
Push bildirişləriBildirişlər yanlış vaxtda gəlir
AnalitikaSəhv vaxt damğalı hadisələr hesabatları təhrif edir
KriptoqrafiyaTime-based OTP serverlə uyğun gəlmir
Rate limitingServer "gələcək" vaxtı olan sorğuları bloklayır

Sinxronizasiya protokolları: NTP və SNTP

Saat sinxronizasiyası üçün əsas protokollar — NTP və onun sadələşdirilmiş versiyası SNTP. NTP (RFC 5905) — server filtrləmə, sürüşmə analizi və PLL korreksiyası olan tam protokol. Serverlərdə və şəbəkə avadanlığında istifadə olunur. SNTP (RFC 4330) — müştəri cihazları üçün yüngül versiya, daimi sinxronizasiya tələb etmir. SNTP müştərisi sorğu göndərir, cavab alır və tarixçə analizi olmadan vaxtı təyin edir. Mobil cihazlarda məhz SNTP istifadə olunur — Android Google Time Service (GTS) time.google.com serverləri ilə SNTP vasitəsilə sinxronizasiya edir.

Əlavə sinxronizasiya metodları

NTP/SNTP-dən başqa, mobil cihazlarda vaxt sinxronizasiyası GPS qəbuledicisi (ideal şəraitdə 10 ns dəqiqlik) və mobil şəbəkə (NITZ — Network Identity and Time Zone) vasitəsilə mümkündür. GPS maksimal dəqiqlik təmin edir, ancaq açıq havada işləyir və çox enerji sərf edir. NITZ mobil operator tərəfindən şəbəkəyə qeydiyyat zamanı avtomatik təmin edilir, lakin bütün operatorlar onu dəstəkləmir. Android bütün metodların kombinasiyasından istifadə edir: GTS (SNTP) prioritet, NITZ ehtiyat kimi və GPS yüksək dəqiqlik tələb edən tətbiqlər üçün.

Paylanmış sistemlərdə sinxronizasiya problemləri

Paylanmış sistemlərdə — server və müştəri müxtəlif cihazlarda olduqda — saat sinxronizasiyası fundamental məhdudiyyətlərlə üzləşir. Şəbəkə gecikməsi (latency) müştəridə dəqiq vaxtın birmənalı müəyyən edilməsini qeyri-mümkün edir: paket 200 ms gedibsə, sorğunun göndərilməsi və cavabın alınması anında serverdəki vaxt artıq fərqlidir. NTP bu problemi RTT ölçməsi və statistik emal vasitəsilə həll edir, lakin paylanmış tranzaksiyalar (məsələn, bank köçürmələri) üçün bu kifayət deyil — məntiqi saatlardan (Lamport damğaları) və ya vektor saatlardan istifadə olunur.

Fiziki və məntiqi saatlar

Fiziki saatlar (wall clock) — NTP vasitəsilə sinxronizasiya edilən real UTC vaxtı. Məntiqi saatlar — sistemdə hadisələrin sıra nömrələri, fiziki vaxta bağlı deyil. Paylanmış sistemlərdə hadisələrin sıralanması üçün tez-tez vektor saatlardan istifadə olunur: hər node klasterin bütün node-ları üçün sayğac vektorunu saxlayır. Mobil tətbiqlər üçün 1–5 saniyə dəqiqliklə fiziki sinxronizasiya kifayətdir — bu OAuth, SSL və push bildirişlərinin düzgün işləməsini təmin edir. Hadisələrin ciddi sıralanması tələb olunarsa (məsələn, real vaxt söhbətlərində), server səviyyəsində məntiqi sinxronizasiya əlavə edilir.

Android-də saat sinxronizasiyasının tətbiqi

Saat sinxronizasiyasını Android tətbiqində bir neçə yolla tətbiq etmək olar. Ən sadəsi — REST API vasitəsilə server vaxtını əldə etmək: server cavabın gövdəsində və ya HTTP Date başlığında Unix Timestamp qaytarır. Bu yanaşma əlavə kitabxanalar tələb etmir və vaxtın serverlə uyğun olduğunu təmin edir. İkinci üsul — NTP serverinə birbaşa sorğu üçün SNTP müştərisindən istifadə. Üçüncü — Android Google Time Service-ə güvənmək, cihaz internetə qoşulduqda sistem vaxtını avtomatik sinxronizasiya edir.

Android üçün yanaşmaların müqayisəsi

Səlahiyyət və maliyyə əməliyyatları olan Android tətbiqlərində qarışıq yanaşma tövsiyə olunur: hər API sorğusunda server vaxtı ilə System.currentTimeMillis() arasındakı fərq saxlanılır. Bu fərq sistem saatının sinxronizasiya olunmasından asılı olmayaraq müştəridəki bütün vaxt hesablamalarına tətbiq olunur. Bu yanaşma clock skew correction adlanır və serverlə son məlum fərqi saxlayan sinif vasitəsilə tətbiq olunur. Əlavə olaraq, WorkManager vasitəsilə hər 4–6 saatda fon NTP sinxronizasiyası işə salına bilər.

kotlin
// Saat sürüşməsinin korreksiyası
class ClockSyncManager {
    private var serverTimeDiff: Long = 0 // serverTime - deviceTime (ms)

    fun updateServerTime(serverTimestampMs: Long) {
        serverTimeDiff = serverTimestampMs - System.currentTimeMillis()
    }

    fun getCorrectedTime(): Long {
        return System.currentTimeMillis() + serverTimeDiff
    }

    fun isSyncValid(maxDiffMs: Long = 5000): Boolean {
        return Math.abs(serverTimeDiff) < maxDiffMs
    }
}

WorkManager vasitəsilə fon sinxronizasiyası

Android-də dövri fon vaxt sinxronizasiyası üçün WorkManager ilə PeriodicWorkRequest istifadə edin. Sinxronizasiya tapşırığı SNTP sorğusu və ya REST API çağırışı yerinə yetirir, server vaxtını alır və ClockSyncManager-i yeniləyir. PeriodicWorkRequest üçün minimum interval 15 dəqiqədir, lakin vaxt sinxronizasiyası üçün 4–6 saat kifayətdir. Sinxronizasiya zamanı şəbəkə vəziyyətini nəzərə alın — rouminqdə lazımsız sorğuların qarşısını almaq üçün NetworkType.CONNECTED istifadə edin. Sinxronizasiya uğursuz olarsa, əvvəlki korreksiyanı qoruyun — o, tədricən azalan dəqiqliklə etibarlı qalır.

Cihazlarda avtomatik vaxt sinxronizasiyası

Müasir mobil cihazlar vaxtı daxili xidmətlər vasitəsilə avtomatik sinxronizasiya edir. Android-də — Google Play Services-in bir hissəsi olan Google Time Service (GTS). iOS-da — əməliyyat sisteminə daxil edilmiş NTP müştərisi. Bu xidmətlər tətbiqlərdən asılı olmayaraq işləyir və əlavə konfiqurasiya tələb etmir. İstifadəçi avtomatik sinxronizasiyanı parametrlərdən söndürə bilər ki, bu da tətbiqlər üçün risk yaradır — məhz bu halda tərtibatçı öz sinxronizasiyasını tətbiq etməlidir. Avtosinxronizasiya statusunu Settings.Global.getInt(AUTO_TIME) vasitəsilə yoxlamaq və söndürüldükdə istifadəçini xəbərdar etmək tövsiyə olunur.

PlatformaSinxronizasiya xidmətiProtokol
AndroidGoogle Time Service (GTS)SNTP
iOSDaxili NTP müştərisiNTP
Mobil şəbəkəNITZ (operator)NITZ
GPS qəbuledicisiPeyk siqnalıGPS Atomic Time

Tərtibatçılar üçün tövsiyələr

Yalnız avtomatik sinxronizasiyaya güvənmək təhlükəlidir — istifadəçi onu söndürə bilər və ya internet olmayan zonada ola bilər. Ən yaxşı təcrübə — hər API sorğusunda serverdən vaxt almaq və fərqi SharedPreferences və ya DataStore-da saxlamaq. Kritik əməliyyatlar (ödənişlər, səlahiyyət, sənəd imzalama) üçün icradan əvvəl mütləq isSyncValid() yoxlayın. Fərq həddi aşarsa — istifadəçiyə avtosinxronizasiyanı yandırmaq və ya sinxronizasiyanı gözləmək təklifi olan ekran göstərin. Oyun və əyləncə tətbiqləri üçün vaxtı işə salarkən serverdən almaq və hər saat yeniləmək kifayətdir.

Tez-tez verilən suallar

Saat sinxronizasiyası nədir və necə işləyir?

Saat sinxronizasiyası — cihazın sistem vaxtının etalon UTC-yə uyğunlaşdırılması prosesidir. NTP və ya SNTP protokolları vasitəsilə işləyir: cihaz serverə sorğu göndərir, şəbəkə gecikməsini ölçür və öz saatı üçün düzəliş hesablayır. Nəticə — şəbəkədən asılı olaraq 1–100 ms xəta ilə dəqiq vaxt.

Mobil tətbiqlərdə vaxtı niyə sinxronizasiya etməli?

Sinxronizasiya olmadan nasazlıqlar mümkündür: SSL sertifikatları HTTPS-ni bloklayır, OAuth nişanları müddəti keçmiş sayılır, push bildirişləri yanlış vaxtda gəlir, analitika səhv damğalar yazır. Kritik əməliyyatlar (ödənişlər, səlahiyyət) üçün 5 saniyədən çox sinxronizasiyasızlıq təhlükəsizlik təhdidi sayılır və əməliyyatı bloklamalıdır.

Sinxronizasiya üçün hansı protokollar istifadə olunur?

Əsas — NTP (1–50 ms, filtrasiya və PLL ilə) və SNTP (10–100 ms, sadələşdirilmiş). Əlavə: GPS (10 ns, ancaq açıq havada) və NITZ (mobil operator vasitəsilə, dəqiqlik ~1 saniyə). Android Google Time Service SNTP-də, iOS isə daxili NTP müştərisində işləyir.

Android-də NTP vasitəsilə vaxtı necə sinxronizasiya etməli?

time.google.com və ya pool.ntp.org ünvanına birbaşa SNTP sorğusu üçün Apache Commons Net kitabxanasından (NTPUDPClient sinfi) istifadə edin. Alternativ — API-nizin HTTP cavab başlıqlarından server vaxtını almaq. Daimi korreksiya üçün server və lokal vaxt arasındakı fərqi saxlayan ClockSyncManager tətbiq edin.

Cihazdakı vaxt serverdən fərqlənirsə nə etməli?

Clock skew correction tətbiq edin: hər API sorğusunda server vaxtı ilə System.currentTimeMillis() arasındakı fərqi saxlayın. Bu fərqi tətbiqin bütün vaxt əməliyyatlarında korreksiya üçün istifadə edin. Fərq 5 saniyəni aşarsa — kritik tranzaksiyaları bloklayın və istifadəçiyə parametrlərdə avtosinxronizasiyanı yandırmağı təklif edin.

Nəticə

  • Clock Sync — sistem saatının NTP, SNTP, GPS və ya mobil şəbəkə vasitəsilə etalon UTC vaxtı ilə uyğunlaşdırılması prosesi
  • Vaciblik — 5 saniyədən çox sinxronizasiyasızlıq SSL/TLS, OAuth, push bildirişləri, analitika və kriptoqrafiyanı pozur
  • Əsas protokollar — NTP (PLL korreksiyası və filtrasiya ilə, 1–50 ms) və SNTP (sadələşdirilmiş, 10–100 ms)
  • Android tətbiqi — Google Time Service daxili, Apache Commons Net və ya REST API proqram vasitəsilə; WorkManager fon sinxronizasiyası üçün
  • Clock skew correction — məcburi təcrübə: server və lokal vaxt fərqini saxla, müştəridə bütün hesablamaları korrektə et
  • Paylanmış sistemlər — hadisələrin ciddi sıralanması üçün əlavə məntiqi saatlardan (Lamport, vektor) istifadə olunur
  • Tövsiyə — Android-də AUTO_TIME statusunu yoxla, avtosinxronizasiya söndürüldükdə istifadəçini xəbərdar et və > 5 saniyə fərqdə əməliyyatları blokla

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun