NTP — bu nədir, zaman protokolu və tətbiqlərdə sinxronizasiya

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

NTP (Network Time Protocol) — lokal şəbəkələrdə millisaniyələrə qədər və qlobal şəbəkədə onlarla millisaniyə dəqiqliyi ilə saat sinxronizasiyasını təmin edən şəbəkə protokoludur. 1985-ci ildə David Mills tərəfindən hazırlanmış protokol bütün müasir əməliyyat sistemlərində, mobil cihazlarda və şəbəkə avadanlıqlarında daxili saatları UTC istinad vaxtı ilə uyğunlaşdırmaq üçün istifadə olunur. NTP Pool Project (2026) məlumatlarına görə, 4 milyarddan çox cihaz gündəlik olaraq sinxronizasiya üçün NTP sorğuları həyata keçirir.

Əsas məqamlar

  • NTP — şəbəkə vasitəsilə vaxt sinxronizasiyası protokolu, dəqiqlik 1 ms (LAN) -dən 50 ms (WAN) -dək
  • Strat iyerarxiyası — səviyyələr sistemi (stratum 0–16), burada stratum 0 istinad atom saatlarıdır
  • Drift korreksiyası — NTP sadəcə vaxtı təyin etmir, həm də davamlı dəqiqlik üçün takt tezliyini tənzimləyir
  • SNTP — məhdud resurslu cihazlar üçün NTP-nin sadələşdirilmiş versiyası, IoT və Android-də istifadə olunur
  • Təhlükəsizlik — NTPv4 simmetrik açarlar və NTS (Network Time Security) vasitəsilə autentifikasiyanı dəstəkləyir

NTP nədir?

NTP (Network Time Protocol) — paket kommutasiyalı şəbəkə vasitəsilə kompüterin daxili saatını istinad vaxt mənbəyi ilə dəqiq sinxronizasiya etmək üçün nəzərdə tutulmuş şəbəkə protokoludur. RFC 5905 (NTPv4) -də təsvir edilmiş protokol hər səviyyənin strati (stratum) adlandırıldığı iyerarxik server sistemindən istifadə edir. NTP müştərisi serverə sorğular göndərir, paketin gediş-gəliş vaxtını (RTT) ölçür və öz saatının istinad vaxtına nisbətən yerdəyişməsini hesablayır. Korreksiya alqoritmi təkcə birdəfəlik yerdəyişməni deyil, həm də takt generatorunun driftini nəzərə alır ki, bu da təkrar sorğular olmadan uzun müddət dəqiqliyi qorumağa imkan verir.

NTP-nin inkişaf tarixi

Protokol David Mills tərəfindən 1985-ci ildə ARPANET şəbəkəsi üçün hazırlanmışdır. İlk spesifikasiya (RFC 958) 100 ms dəqiqliklə sadə sinxronizasiya alqoritmini təsvir edirdi. NTPv3 (RFC 1305, 1992) filtrasiya alqoritmini və təkmilləşdirilmiş gecikmə emalını əlavə etdi. NTPv4 (RFC 5905, 2010) — cari versiya — IPv6 dəstəyi, serverlərin avtomatik konfiqurasiyası və Network Time Security (NTS) vasitəsilə hücumlardan qorunmanı əhatə edir. 40 il ərzində protokol elmi layihədən infrastruktur standartına qədər yol keçmişdir, onsuz maliyyə əməliyyatlarının, telekommunikasiyanın və mobil şəbəkələrin işi mümkün deyil.

NTP necə işləyir

NTP-nin iş prinsipi şəbəkədə paketin gediş vaxtının ölçülməsinə əsaslanır. Müştəri T1 vaxt işarəsi (göndərmənin yerli vaxtı) ilə sorğu göndərir. Server sorğunu T2 anında (server vaxtı) qəbul edir, T3 işarəsi ilə cavab yaradır və göndərir. Müştəri cavabı T4 anında qəbul edir. Bütün dörd vaxt işarəsini bilən müştəri offset = ((T2 - T1) + (T3 - T4)) / 2 yerdəyişməsini və delay = (T4 - T1) - (T3 - T2) gecikməsini hesablayır. Gecikmə 1 saniyədən çox olarsa, nəticə etibarsız sayılır — bu, həddindən artıq yüklənmiş və ya qeyri-sabit kanallardan qorunmadır.

Saat driftinin korreksiyası

Sadəcə dəqiq vaxtı təyin etmək kifayət deyil — kvars generatoru temperatur, qocalma və gərginlik səbəbindən daim sürüşür (irəli və ya geri). NTP bu problemi PLL (Phase-Locked Loop) alqoritmi ilə həll edir: o, vaxtı məcburi təyin etmir, saatın gediş sürətini tənzimləyir. Cihaz saatda 0,1 saniyə irəli gedirsə, NTP sistem saatının gedişini ləngidir, ta ki drift kompensasiya olunana qədər. Bu yanaşma sabit şəbəkələrdə hər 30 saniyədən bir deyil, bir neçə saatda bir sinxronizasiya etməyə imkan verir.

cpp
// Sadələşdirilmiş NTP alqoritm sxemi
struct NTPPacket {
    uint8_t flags;      // LI, VN, Rejim
    uint8_t stratum;    // server strat səviyyəsi
    uint32_t refTimestamp;  // istinad zaman damğası
    uint32_t originTimestamp; // T1
    uint32_t recvTimestamp;   // T2
    uint32_t xmitTimestamp;   // T3
};

// Yerdəyişmə və gecikməni hesablayın
double offset = ((t2 - t1) + (t3 - t4)) / 2.0;
double delay = (t4 - t1) - (t3 - t2);

Stratlar — NTP iyerarxiyası

Bütün NTP sistemi hər səviyyənin strat (stratum) adlandırıldığı bir iyerarxiyada təşkil olunub. Stratum 0 — istinad saatları: atom saatları, GPS qəbulediciləri və ya WWVB radio siqnalları. Bu cihazlar birbaşa şəbəkəyə qoşulmur. Stratum 1 — istinad saatlarına birbaşa qoşulmuş serverlər. Stratum 2 vaxtı stratum 1-dən alır, stratum 3 — stratum 2-dən və s. stratum 15-ə qədər. Strat nömrəsi nə qədər yüksəkdirsə, dəqiqlik potensial olaraq bir o qədər aşağıdır — hər səviyyə kiçik gecikmə və xəta əlavə edir. Stratum 16 vaxtın əlçatan olmadığını bildirir (sinxronizasiya olunmayıb).

StratTəsvirDəqiqlik
Stratum 0Atom saatları, GPS, radio siqnallarıNanosaniyələr
Stratum 1İstinada bağlı serverlərMikrosaniyələr
Stratum 2İctimai NTP serverləri1–10 ms
Stratum 3Təşkilatların lokal serverləri10–50 ms
Stratum 4+Müştəri cihazları100 ms-dək

Strata görə server seçimi

Mobil cihazlar üçün stratum 2 serverləri optimaldır — onlar kifayət qədər çoxdur və dəqiqlik və əlçatanlıq arasında yaxşı balans təmin edir. Məsələn, pool.ntp.org — dünyada minlərlə serverdən ibarət yükü avtomatik paylayan hovuz. Android tətbiqləri üçün birbaşa stratum 1-dən istifadə tövsiyə edilmir: birincisi, bu, ilkin serverlərə həddindən artıq yük yaradır, ikincisi, mobil cihaz üçün stratum 2-nin təmin etdiyi 10–50 ms dəqiqlik kifayətdir. Korporativ şəbəkələrdə xarici stratum 2 ilə sinxronizasiya olunan yerli stratum 3-4 server quraşdırılır.

SNTP — NTP-nin sadələşdirilmiş versiyası

SNTP (Simple Network Time Protocol, RFC 4330) — məhdud resurslu cihazlar üçün NTP-nin sadələşdirilmiş tətbiqi: mikrokontrollerlər, IoT sensorları və yüksək dəqiqlik tələb etməyən mobil tətbiqlər. Tam NTP-dən fərqli olaraq, SNTP bir neçə serverin filtrasiyasını həyata keçirmir, saat driftini analiz etmir və mürəkkəb PLL alqoritmlərindən istifadə etmir. SNTP müştərisi sorğu göndərir, cavab alır və vaxtı birdəfəlik təyin edir. SNTP-nin dəqiqliyi şəbəkədən asılı olaraq 10–100 ms təşkil edir — bu, maliyyə əməliyyatları istisna olmaqla, mobil ssenarilərin böyük əksəriyyəti üçün kifayətdir.

Nə vaxt SNTP istifadə etməli, NTP əvəzinə

SNTP daimi sinxronizasiyanı dəstəkləmədən sadəcə serverdən cari vaxtı almaq istəyən Android tətbiqləri üçün uyğundur. Məsələn, tətbiq girişdə serverdən vaxtı göstərir və ya gündə bir dəfə sinxronizasiya olunur. Tam NTP server sistemləri, telekommunikasiya avadanlığı, maliyyə platformaları və paylanmış verilənlər bazaları üçün tələb olunur, burada daimi dəqiqlik və drift monitorinqi kritikdir. Mobil inkişaf üçün SNTP kifayətdir — Android-in daxili vaxt servisi Google serverləri ilə dövri sinxronizasiya üçün ondan istifadə edir.

Android-də NTP tətbiqi

Android tətbiqlərində NTP vasitəsilə dəqiq vaxt əldə etmək sistem vaxtı istifadəçi tərəfindən dəyişdirilə bildikdə və ya şəbəkənin olmaması səbəbindən real vaxtdan fərqləndikdə tələb olunur. Android-də daxili ictimai NTP müştərisi yoxdur — tərtibatçılar Apache Commons Net SntpClient kitabxanasından və ya üçüncü tərəf həllərindən istifadə edirlər. 2022-ci ildə Google Android API-yə (Google Play Services vasitəsilə) daxili SntpClient sinfi əlavə etdi, lakin o, konfiqurasiya tələb edir və ümumi istifadə üçün sənədləşdirilməyib. Alternativ yanaşma — cavabın gövdəsində server zaman damğasını qaytaran REST API vasitəsilə vaxt sorğusudur.

SNTP müştərisinin tətbiq nümunəsi

Android-də SNTP-nin əsas tətbiqi NTP serverinə (məsələn, pool.ntp.org) UDP paketinin göndərilməsi, cavabın pars edilməsi və göndərmə vaxtının (T3 — Transmit Timestamp) çıxarılmasından ibarətdir. Kod şəbəkə vaxt aşımını və pars xətalarını idarə etməlidir — real tətbiqdə bu əməliyyat fon fonunda yerinə yetirilir və nəticə növbəti sinxronizasiyaya qədər keşlənir. Apache Commons Net kitabxanası Android-də minimal dəyişikliklərlə istifadə oluna bilən hazır NTPUDPClient sinfini təmin edir, build.gradle-ə asılılıq əlavə etmək kifayətdir.

kotlin
// Apache Commons Net vasitəsilə NTP vaxtını əldə edin
fun getNtpTime(server: String = "pool.ntp.org"): Date? {
    return try {
        val client = NTPUDPClient()
        client.setDefaultTimeout(5000)
        val info = client.getTime(InetAddress.getByName(server))
        client.close()
        Date(info.getMessage().getTransmitTimeStamp().getTime())
    } catch (e: Exception) {
        null
    }
}

NTP dəqiqliyi və təsir edən amillər

NTP-nin dəqiqliyi bir neçə amildən asılıdır: şəbəkə gecikməsi (RTT), kanalın sabitliyi, serverin yükü və yerli takt generatorunun keyfiyyəti. Gecikmənin 1 ms-dən az olduğu lokal şəbəkədə NTP 0.1–1 ms dəqiqliyə çatır. İnternet vasitəsilə 10–50 ms gecikmədə dəqiqlik 10–50 ms-ə qədər azalır. Birdəfəlik dəqiqlikdən daha vacib olan sabitlikdir: gecikmə dəyişirsə (jitter), NTP etibarlı yerdəyişməni hesablamaq üçün daha çox vaxt tələb edir. Mobil cihazlar üçün əsas qeyri-sabitlik faktoru Wi-Fi və mobil şəbəkə arasında keçiddir, bu zaman gecikmə bir dərəcə dəyişə bilər.

Mobil inkişaf üçün tövsiyələr

Dəqiq vaxta həssas olan Android tətbiqləri üçün tövsiyə olunur: bir neçə NTP serverindən istifadə edin və minimal gecikməni seçin; şəbəkə keçidi anlarında sinxronizasiya etməyin; son alınan vaxtı keşləyin və System.currentTimeMillis vasitəsilə korreksiya edin. Oyunlar və real vaxt tətbiqləri üçün (NTP şəbəkə gecikməsi səbəbindən uyğun deyil) — hər sorğuda ötürülən server vaxtından istifadə edin. Maliyyə əməliyyatları tətbiqlərində serverlə fərqi mütləq yoxlayın — fərq 5 saniyədən çox olarsa, əməliyyatı potensial təhlükəli olaraq bloklayın.

Tez-tez verilən suallar

NTP nədir və nə üçün lazımdır?

NTP (Network Time Protocol) — internet vasitəsilə saat sinxronizasiyası protokoludur. Cihazlarda vaxtı istinad UTC ilə uyğunlaşdırmaq üçün lazımdır. NTP olmadan kompüter saatları kvars generatorunun drifti səbəbindən gündə saniyələrlə səhv edir ki, bu da maliyyə əməliyyatları, loglama və təhlükəsizlik üçün kritikdir.

NTP iyerarxiyası necə qurulub?

NTP sistemi səviyyələrdən — stratlardan istifadə edir: stratum 0 (atom saatları və GPS), stratum 1 (istinada qoşulmuş serverlər), stratum 2 (ictimai NTP serverləri), stratum 3–4 (lokal serverlər), stratum 5–15 (müştərilər). Strat nə qədər yüksəkdirsə, potensial xəta bir o qədər böyükdür. Stratum 16 vaxtın sinxronizasiya olunmadığını bildirir.

NTP SNTP-dən nə ilə fərqlənir?

SNTP — məhdud resurslu cihazlar üçün NTP-nin sadələşdirilmiş versiyasıdır. O, serverləri filtrləmir, saat driftini analiz etmir və PLL-dən istifadə etmir. SNTP 10–100 ms dəqiqliyin kifayət olduğu mobil tətbiqlər üçün uyğundur. Tam NTP serverlərə, telekommunikasiya avadanlığına və fintech sistemlərinə lazımdır.

Android-də NTP vasitəsilə dəqiq vaxtı necə əldə etmək olar?

Apache Commons Net kitabxanasından NTPUDPClient sinfi ilə istifadə edin. pool.ntp.org ünvanına sorğu göndərin, cavabı alın və Transmit Timestamp-i çıxarın. Alternativ olaraq, Date başlığında və ya Unix Timestamp formatında cavabın gövdəsində server vaxtını qaytaran REST API-nizdən istifadə edin.

Niyə mobil cihazlarda vaxt sinxronizasiyası vacibdir?

NTP sinxronizasiyası olmadan cihazdakı sistem vaxtı dəqiqələr və saatlarla fərqlənə bilər. Bu, push bildirişlərinin, SSL sertifikatlarının (müddətinin yoxlanılması), logların, tapşırıq planlayıcılarının və kriptoqrafik protokolların işini pozur. Maliyyə əməliyyatları olan tətbiqlərdə 5 saniyədən çox desinxronizasiya təhlükəsizlik təhlükəsi hesab olunur.

Nəticə

  • NTP — stratum 0–16 iyerarxiyası vasitəsilə 1 ms (LAN) -dən 50 ms (WAN) -dək dəqiqlik təmin edən şəbəkə vaxt sinxronizasiyası protokolu
  • Drift korreksiyası — NTP sadəcə vaxtı təyin etmir, həm də PLL vasitəsilə takt tezliyini tənzimləyir, bu da sinxronizasiyalar arasında saatlarla dəqiqliyi saxlamağa imkan verir
  • Strat iyerarxiyası — hər səviyyə (stratum) potensial xəta əlavə edir; mobil cihazlar üçün pool.ntp.org kimi stratum 2 serverləri optimaldır
  • SNTP — IoT və Android üçün NTP-nin sadələşdirilmiş versiyası, filtrasiya və PLL istifadə etmir; 10–100 ms dəqiqlik əksər ssenarilər üçün kifayətdir
  • Android-də tətbiq — Apache Commons Net (NTPUDPClient) və ya server zaman damğası ilə REST API vasitəsilə; platformada daxili ictimai NTP müştərisi yoxdur
  • Təhlükəsizlik — NTPv4 cavabların dəyişdirilməsindən qorunmaq üçün Network Time Security (NTS) dəstəkləyir; maliyyə və korporativ tətbiqlər üçün kritikdir
  • Dəqiqlik amilləri — RTT, jitter, şəbəkə keçidi; mobil tətbiqlər 10–50 ms dəqiqlik tələb edir, lakin kritik əməliyyatlar serverlə fərqin yoxlanılmasını tələb edir

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