NTP — apa itu, protokol waktu dan sinkronisasi dalam aplikasi

Penulis: IT Sectr Diterbitkan: 2026-07-14 Waktu membaca: 9 mnt

NTP (Network Time Protocol) — protokol jaringan untuk sinkronisasi jam yang memberikan akurasi waktu hingga milidetik di jaringan lokal dan hingga puluhan milidetik di jaringan global. Protokol yang dikembangkan oleh David Mills pada tahun 1985 ini digunakan di semua sistem operasi modern, perangkat seluler, dan peralatan jaringan untuk menyelaraskan jam internal dengan waktu referensi UTC. Menurut NTP Pool Project (2026), lebih dari 4 miliar perangkat setiap hari melakukan permintaan NTP untuk sinkronisasi.

Poin Utama

  • NTP — protokol sinkronisasi waktu melalui jaringan, akurasi dari 1 ms (LAN) hingga 50 ms (WAN)
  • Hierarki strata — sistem tingkat (stratum 0–16), di mana stratum 0 adalah jam atom referensi
  • Koreksi drift — NTP tidak hanya mengatur waktu, tetapi menyesuaikan frekuensi clock untuk akurasi konstan
  • SNTP — versi sederhana NTP untuk perangkat dengan sumber daya terbatas, digunakan di IoT dan Android
  • Keamanan — NTPv4 mendukung autentikasi melalui kunci simetris dan NTS (Network Time Security)

Apa itu NTP?

NTP (Network Time Protocol) — adalah protokol jaringan yang dirancang untuk sinkronisasi presisi jam internal komputer dengan sumber waktu referensi melalui jaringan dengan packet switching. Protokol yang dijelaskan dalam RFC 5905 (NTPv4) ini menggunakan sistem server hierarkis, di mana setiap tingkat disebut strata (stratum). Klien NTP mengirim permintaan ke server, mengukur waktu perjalanan paket (RTT, round-trip time) dan menghitung offset jam sendiri relatif terhadap waktu referensi. Algoritma koreksi tidak hanya memperhitungkan offset satu kali, tetapi juga drift generator clock, yang memungkinkan menjaga akurasi untuk waktu yang lama tanpa permintaan berulang.

Sejarah perkembangan NTP

Protokol ini dikembangkan oleh David Mills pada tahun 1985 untuk jaringan ARPANET. Spesifikasi pertama (RFC 958) mendeskripsikan algoritma sinkronisasi sederhana dengan akurasi hingga 100 ms. NTPv3 (RFC 1305, 1992) menambahkan algoritma filtering dan pemrosesan penundaan yang lebih baik. NTPv4 (RFC 5905, 2010) — versi saat ini — mencakup dukungan IPv6, konfigurasi server otomatis, dan perlindungan terhadap serangan melalui Network Time Security (NTS). Selama 40 tahun, protokol ini telah berkembang dari proyek ilmiah menjadi standar infrastruktur, yang tanpanya transaksi keuangan, telekomunikasi, dan jaringan seluler tidak mungkin berjalan.

Cara kerja NTP

Prinsip kerja NTP didasarkan pada pengukuran waktu perjalanan paket di jaringan. Klien mengirim permintaan dengan tanda waktu T1 (waktu pengiriman lokal). Server menerima permintaan pada saat T2 (waktu server), membuat respons dengan tanda T3 dan mengirimkannya. Klien menerima respons pada saat T4. Mengetahui keempat tanda waktu, klien menghitung offset = ((T2 - T1) + (T3 - T4)) / 2 dan penundaan delay = (T4 - T1) - (T3 - T2). Jika penundaan lebih dari 1 detik, hasilnya dianggap tidak dapat diandalkan — ini adalah perlindungan terhadap saluran yang kelebihan beban atau tidak stabil.

Koreksi drift jam

Pengaturan waktu yang tepat saja tidak cukup — generator kuarsa pada perangkat terus-menerus mengalami drift (maju atau mundur) karena suhu, penuaan, dan tegangan. NTP memecahkan masalah ini dengan algoritma PLL (Phase-Locked Loop): ia tidak mengatur waktu secara paksa, tetapi menyesuaikan kecepatan jam. Jika perangkat maju 0,1 detik per jam, NTP memperlambat jam sistem sampai drift terkompensasi. Pendekatan ini memungkinkan sinkronisasi sekali setiap beberapa jam di jaringan yang stabil, bukan setiap 30 detik.

cpp
// Skema algoritma NTP yang disederhanakan
struct NTPPacket {
    uint8_t flags;      // LI, VN, Mode
    uint8_t stratum;    // tingkat strata server
    uint32_t refTimestamp;  // timestamp referensi
    uint32_t originTimestamp; // T1
    uint32_t recvTimestamp;   // T2
    uint32_t xmitTimestamp;   // T3
};

// Hitung offset dan penundaan
double offset = ((t2 - t1) + (t3 - t4)) / 2.0;
double delay = (t4 - t1) - (t3 - t2);

Strata — hierarki NTP

Seluruh sistem NTP diorganisir dalam hierarki, di mana setiap tingkat disebut strata (stratum). Stratum 0 — jam referensi: jam atom, penerima GPS, atau sinyal radio WWVB. Perangkat ini tidak terhubung langsung ke jaringan. Stratum 1 — server yang terhubung langsung ke jam referensi. Stratum 2 menerima waktu dari stratum 1, stratum 3 dari stratum 2, dan seterusnya hingga stratum 15. Semakin tinggi nomor strata, semakin rendah potensi akurasi — setiap tingkat menambahkan sedikit penundaan dan kesalahan. Stratum 16 berarti waktu tidak tersedia (tidak tersinkronisasi).

StrataDeskripsiAkurasi
Stratum 0Jam atom, GPS, sinyal radioNanodetik
Stratum 1Server terhubung ke referensiMikrodetik
Stratum 2Server NTP publik1–10 ms
Stratum 3Server lokal organisasi10–50 ms
Stratum 4+Perangkat klienhingga 100 ms

Pemilihan server berdasarkan strata

Untuk perangkat seluler, server stratum 2 optimal — jumlahnya cukup banyak dan memberikan keseimbangan yang baik antara akurasi dan ketersediaan. Misalnya, pool.ntp.org — kumpulan ribuan server di seluruh dunia yang secara otomatis mendistribusikan beban. Untuk aplikasi Android, penggunaan langsung stratum 1 tidak disarankan: pertama, ini menciptakan beban berlebih pada server primer, dan kedua, perangkat seluler membutuhkan akurasi 10–50 ms yang disediakan oleh stratum 2. Di jaringan perusahaan, server lokal stratum 3-4 dipasang yang disinkronkan dengan stratum 2 eksternal.

SNTP — versi sederhana NTP

SNTP (Simple Network Time Protocol, RFC 4330) — implementasi NTP yang disederhanakan untuk perangkat dengan sumber daya terbatas: mikrokontroler, sensor IoT, dan aplikasi seluler yang tidak memerlukan akurasi tinggi. Tidak seperti NTP lengkap, SNTP tidak melakukan filtering beberapa server, tidak menganalisis drift jam, dan tidak menggunakan algoritma PLL yang kompleks. Klien SNTP mengirim permintaan, menerima respons, dan mengatur waktu sekali. Akurasi SNTP adalah 10–100 ms tergantung jaringan — ini cukup untuk sebagian besar skenario seluler, kecuali transaksi keuangan.

Kapan menggunakan SNTP daripada NTP

SNTP cocok untuk aplikasi Android yang hanya perlu mendapatkan waktu saat ini dari server tanpa mempertahankan sinkronisasi konstan. Misalnya, aplikasi menampilkan waktu dari server saat masuk atau sinkronisasi sekali sehari. NTP lengkap diperlukan untuk sistem server, peralatan telekomunikasi, platform keuangan, dan database terdistribusi, di mana akurasi konstan dan pemantauan drift sangat penting. Untuk pengembangan seluler, SNTP sudah cukup — layanan waktu bawaan Android menggunakannya untuk sinkronisasi periodik dengan server Google.

Implementasi NTP di Android

Dalam aplikasi Android, mendapatkan waktu yang akurat melalui NTP diperlukan ketika waktu sistem dapat diubah oleh pengguna atau berbeda dari waktu nyata karena kurangnya jaringan. Android tidak memiliki klien NTP publik bawaan — pengembang menggunakan pustaka Apache Commons Net SntpClient atau solusi pihak ketiga. Pada tahun 2022, Google menambahkan kelas internal SntpClient ke Android API (melalui Google Play Services), tetapi memerlukan konfigurasi dan tidak didokumentasikan untuk penggunaan umum. Pendekatan alternatif — permintaan waktu melalui REST API, yang mengembalikan timestamp server dalam body respons.

Contoh implementasi klien SNTP

Implementasi dasar SNTP di Android terdiri dari mengirim paket UDP ke server NTP (misalnya, pool.ntp.org), mem-parse respons, dan mengekstrak waktu pengiriman (T3 — Transmit Timestamp). Kode harus menangani timeout jaringan dan kesalahan parsing — dalam aplikasi nyata, operasi ini dilakukan di latar belakang, dan hasilnya di-cache hingga sinkronisasi berikutnya. Pustaka Apache Commons Net menyediakan kelas siap pakai NTPUDPClient yang dapat digunakan di Android dengan modifikasi minimal, menambahkan dependensi di build.gradle.

kotlin
// Dapatkan waktu NTP melalui Apache Commons Net
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
    }
}

Akurasi NTP dan faktor pengaruh

Akurasi NTP tergantung pada beberapa faktor: penundaan jaringan (RTT), stabilitas saluran, beban server, dan kualitas generator clock lokal. Di jaringan lokal dengan penundaan kurang dari 1 ms, NTP mencapai akurasi 0.1–1 ms. Melalui internet dengan penundaan 10–50 ms, akurasi turun menjadi 10–50 ms. Lebih penting dari akurasi satu kali adalah stabilitas: jika penundaan bervariasi (jitter), NTP memerlukan lebih banyak waktu untuk menghitung offset yang andal. Untuk perangkat seluler, faktor ketidakstabilan utama adalah peralihan antara Wi-Fi dan jaringan seluler, di mana penundaan dapat berubah hingga satu urutan besarnya.

Rekomendasi untuk pengembangan seluler

Untuk aplikasi Android yang sensitif terhadap waktu yang akurat, disarankan: gunakan beberapa server NTP dan pilih penundaan minimum; jangan sinkronisasi pada saat peralihan jaringan; cache waktu terakhir yang diterima dan koreksi melalui System.currentTimeMillis. Untuk game dan aplikasi real-time (NTP tidak cocok karena penundaan jaringan) — gunakan waktu server yang dikirimkan dalam setiap permintaan. Dalam aplikasi untuk transaksi keuangan, selalu periksa perbedaan dengan server — jika perbedaan lebih dari 5 detik, blokir operasi sebagai berpotensi tidak aman.

Pertanyaan yang Sering Diajukan

Apa itu NTP dan untuk apa?

NTP (Network Time Protocol) — protokol sinkronisasi jam melalui internet. Diperlukan untuk menyelaraskan waktu pada perangkat dengan UTC referensi. Tanpa NTP, jam komputer meleset detik per hari karena drift generator kuarsa, yang kritis untuk transaksi keuangan, pencatatan log, dan keamanan.

Bagaimana hierarki NTP diatur?

Sistem NTP menggunakan tingkat — strata: stratum 0 (jam atom dan GPS), stratum 1 (server terhubung ke referensi), stratum 2 (server NTP publik), stratum 3–4 (server lokal), stratum 5–15 (klien). Semakin tinggi strata, semakin besar potensi kesalahan. Stratum 16 berarti waktu tidak tersinkronisasi.

Apa perbedaan NTP dan SNTP?

SNTP — versi sederhana NTP untuk perangkat dengan sumber daya terbatas. Ia tidak memfilter server, tidak menganalisis drift jam, dan tidak menggunakan PLL. SNTP cocok untuk aplikasi seluler di mana akurasi 10–100 ms sudah cukup. NTP lengkap diperlukan untuk server, peralatan telekomunikasi, dan sistem fintech.

Bagaimana mendapatkan waktu akurat melalui NTP di Android?

Gunakan pustaka Apache Commons Net dengan kelas NTPUDPClient. Kirim permintaan ke pool.ntp.org, terima respons, dan ekstrak Transmit Timestamp. Alternatifnya, gunakan REST API server Anda sendiri yang mengembalikan waktu server di header Date atau di body respons dalam format Unix Timestamp.

Mengapa sinkronisasi waktu pada perangkat seluler penting?

Tanpa sinkronisasi NTP, waktu sistem pada perangkat dapat meleset menit dan jam. Ini mengganggu notifikasi push, sertifikat SSL (pemeriksaan masa berlaku), log, penjadwal tugas, dan protokol kriptografi. Dalam aplikasi dengan transaksi keuangan, desinkronisasi lebih dari 5 detik dianggap ancaman keamanan.

Kesimpulan

  • NTP — protokol sinkronisasi waktu jaringan yang memberikan akurasi dari 1 ms (LAN) hingga 50 ms (WAN) melalui hierarki strata stratum 0–16
  • Koreksi drift — NTP tidak hanya mengatur waktu, tetapi menyesuaikan frekuensi clock melalui PLL, memungkinkan akurasi terjaga berjam-jam di antara sinkronisasi
  • Hierarki strata — setiap tingkat (stratum) menambahkan potensi kesalahan; untuk perangkat seluler, server stratum 2 seperti pool.ntp.org optimal
  • SNTP — versi sederhana NTP untuk IoT dan Android, tanpa filtering dan PLL; akurasi 10–100 ms cukup untuk sebagian besar skenario
  • Implementasi di Android — melalui Apache Commons Net (NTPUDPClient) atau REST API dengan timestamp server; platform tidak memiliki klien NTP publik bawaan
  • Keamanan — NTPv4 mendukung Network Time Security (NTS) untuk melindungi dari pemalsuan respons; penting untuk aplikasi keuangan dan perusahaan
  • Faktor akurasi — RTT, jitter, peralihan jaringan; aplikasi seluler membutuhkan akurasi 10–50 ms, tetapi operasi kritis memerlukan pemeriksaan perbedaan dengan server

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga