NTP — ano ito, protocol ng oras at pag-sync sa mga application

May-akda: IT Sectr Nai-publish: 2026-07-14 Oras ng pagbabasa: 9 min

NTP (Network Time Protocol) — isang network protocol para sa pag-sync ng orasan na nagbibigay ng katumpakan ng oras hanggang millisecond sa mga lokal na network at hanggang sampu-sampung millisecond sa pandaigdigang network. Ang protocol na binuo ni David Mills noong 1985 ay ginagamit sa lahat ng modernong operating system, mobile device, at network equipment para iayon ang mga panloob na orasan sa reference na oras na UTC. Ayon sa NTP Pool Project (2026), mahigit 4 bilyong device ang araw-araw na nagsasagawa ng mga NTP request para sa pag-sync.

Mga Pangunahing Punto

  • NTP — protocol ng pag-sync ng oras sa pamamagitan ng network, katumpakan mula 1 ms (LAN) hanggang 50 ms (WAN)
  • Hierarkiya ng stratum — sistema ng mga antas (stratum 0–16), kung saan ang stratum 0 ay ang reference na atomic clock
  • Pagwawasto ng drift — Hindi lang itinatakda ng NTP ang oras, inaayos din nito ang dalas ng orasan para sa patuloy na katumpakan
  • SNTP — pinasimpleng bersyon ng NTP para sa mga device na may limitadong resources, ginagamit sa IoT at Android
  • Seguridad — Sinusuportahan ng NTPv4 ang authentication sa pamamagitan ng symmetric key at NTS (Network Time Security)

Ano ang NTP?

NTP (Network Time Protocol) — ay isang network protocol na idinisenyo para sa tumpak na pag-sync ng panloob na orasan ng computer sa isang reference na pinagmumulan ng oras sa pamamagitan ng packet-switched network. Ang protocol na inilarawan sa RFC 5905 (NTPv4) ay gumagamit ng hierarchical system ng mga server, kung saan ang bawat antas ay tinatawag na stratum. Ang NTP client ay nagpapadala ng mga request sa server, sinusukat ang round-trip time (RTT) ng packet, at kinakalkula ang offset ng sarili nitong orasan kaugnay ng reference na oras. Isinasaalang-alang ng algorithm ng pagwawasto hindi lamang ang isang beses na offset, kundi pati na rin ang drift ng clock generator, na nagbibigay-daan sa pagpapanatili ng katumpakan sa mahabang panahon nang walang paulit-ulit na request.

Kasaysayan ng pag-unlad ng NTP

Ang protocol ay binuo ni David Mills noong 1985 para sa ARPANET network. Ang unang specification (RFC 958) ay naglarawan ng simpleng algorithm ng pag-sync na may katumpakan hanggang 100 ms. Ang NTPv3 (RFC 1305, 1992) ay nagdagdag ng filtering algorithm at pinahusay na pagproseso ng mga pagkaantala. Ang NTPv4 (RFC 5905, 2010) — ang kasalukuyang bersyon — ay may kasamang suporta para sa IPv6, awtomatikong configuration ng server, at proteksyon laban sa mga pag-atake sa pamamagitan ng Network Time Security (NTS). Sa loob ng 40 taon, ang protocol ay nagbago mula sa isang siyentipikong proyekto tungo sa isang infrastructure standard, kung wala ang mga financial transaction, telecommunication, at mobile network ay hindi posible.

Paano gumagana ang NTP

Ang prinsipyo ng pagpapatakbo ng NTP ay batay sa pagsukat ng oras ng paglalakbay ng packet sa network. Nagpapadala ang client ng request na may timestamp T1 (lokal na oras ng pagpapadala). Natatanggap ng server ang request sa sandaling T2 (oras ng server), gumagawa ng tugon na may timestamp T3 at ipinapadala ito. Natatanggap ng client ang tugon sa sandaling T4. Alam ang lahat ng apat na timestamp, kinakalkula ng client ang offset = ((T2 - T1) + (T3 - T4)) / 2 at ang pagkaantala delay = (T4 - T1) - (T3 - T2). Kung ang pagkaantala ay higit sa 1 segundo, ang resulta ay itinuturing na hindi maaasahan — ito ay proteksyon laban sa overloaded o hindi matatag na mga channel.

Pagwawasto ng drift ng orasan

Ang simpleng pagtatakda ng tamang oras ay hindi sapat — ang quartz generator sa device ay patuloy na nagda-drift (sumusulong o nahuhuli) dahil sa temperatura, pagtanda, at boltahe. Nilulutas ng NTP ang problemang ito gamit ang algorithm na PLL (Phase-Locked Loop): hindi nito sapilitang itinatakda ang oras, bagkus inaayos nito ang bilis ng orasan. Kung ang device ay sumusulong ng 0.1 segundo bawat oras, pinapabagal ng NTP ang system clock hanggang sa ma-compensate ang drift. Ang pamamaraang ito ay nagbibigay-daan sa pag-sync isang beses bawat ilang oras sa mga matatag na network, sa halip na bawat 30 segundo.

cpp
// Pinasimpleng scheme ng NTP algorithm
struct NTPPacket {
    uint8_t flags;      // LI, VN, Mode
    uint8_t stratum;    // antas ng stratum ng server
    uint32_t refTimestamp;  // reference timestamp
    uint32_t originTimestamp; // T1
    uint32_t recvTimestamp;   // T2
    uint32_t xmitTimestamp;   // T3
};

// Kalkulahin ang offset at pagkaantala
double offset = ((t2 - t1) + (t3 - t4)) / 2.0;
double delay = (t4 - t1) - (t3 - t2);

Stratum — hierarchy ng NTP

Ang buong sistema ng NTP ay nakaayos sa isang hierarchy, kung saan ang bawat antas ay tinatawag na stratum. Stratum 0 — reference na orasan: atomic clock, GPS receiver, o WWVB radio signal. Ang mga device na ito ay hindi direktang konektado sa network. Stratum 1 — mga server na direktang konektado sa reference na orasan. Stratum 2 ay tumatanggap ng oras mula sa stratum 1, stratum 3 mula sa stratum 2, at iba pa hanggang stratum 15. Kung mas mataas ang numero ng stratum, mas mababa ang potensyal na katumpakan — bawat antas ay nagdaragdag ng maliit na pagkaantala at error. Ang Stratum 16 ay nangangahulugang ang oras ay hindi available (hindi naka-sync).

StratumPaglalarawanKatumpakan
Stratum 0Atomic clock, GPS, radio signalNanosecond
Stratum 1Server na konektado sa referenceMicrosecond
Stratum 2Pampublikong NTP server1–10 ms
Stratum 3Lokal na server ng mga organisasyon10–50 ms
Stratum 4+Mga device ng clienthanggang 100 ms

Pagpili ng server ayon sa stratum

Para sa mga mobile device, ang stratum 2 server ay optimal — sapat ang dami ng mga ito at nagbibigay ng magandang balanse sa pagitan ng katumpakan at availability. Halimbawa, ang pool.ntp.org — isang pool ng libu-libong server sa buong mundo na awtomatikong namamahagi ng load. Para sa mga Android application, hindi inirerekomenda ang direktang paggamit ng stratum 1: una, lumilikha ito ng labis na load sa primary server, at pangalawa, ang mobile device ay nangangailangan ng katumpakan na 10–50 ms na ibinibigay ng stratum 2. Sa corporate network, isang lokal na stratum 3-4 server ang ini-install na nag-sync sa external na stratum 2.

SNTP — pinasimpleng bersyon ng NTP

SNTP (Simple Network Time Protocol, RFC 4330) — isang pinasimpleng implementation ng NTP para sa mga device na may limitadong resources: microcontrollers, IoT sensor, at mobile application na hindi nangangailangan ng mataas na katumpakan. Hindi tulad ng buong NTP, ang SNTP ay hindi nagsasagawa ng filtering ng maraming server, hindi sinusuri ang drift ng orasan, at hindi gumagamit ng kumplikadong PLL algorithm. Ang SNTP client ay nagpapadala ng request, tumatanggap ng tugon, at minsanang nagtatakda ng oras. Ang katumpakan ng SNTP ay 10–100 ms depende sa network — sapat ito para sa karamihan ng mga mobile scenario, maliban sa mga financial transaction.

Kailan gagamitin ang SNTP sa halip na NTP

SNTP ay angkop para sa mga Android application na kailangan lang makuha ang kasalukuyang oras mula sa server nang hindi nagpapanatili ng patuloy na pag-sync. Halimbawa, ipinapakita ng application ang oras mula sa server sa pag-login o nag-sync isang beses sa isang araw. Ang buong NTP ay kinakailangan para sa server system, telecommunication equipment, financial platform, at distributed database, kung saan ang patuloy na katumpakan at monitoring ng drift ay kritikal. Para sa mobile development, sapat na ang SNTP — ginagamit ito ng built-in na Android time service para sa pana-panahong pag-sync sa mga server ng Google.

Pagpapatupad ng NTP sa Android

Sa mga Android application, ang pagkuha ng tumpak na oras sa pamamagitan ng NTP ay kinakailangan kapag ang system time ay maaaring baguhin ng user o naiiba sa aktwal na oras dahil sa kakulangan ng network. Ang Android ay walang built-in na pampublikong NTP client — ang mga developer ay gumagamit ng Apache Commons Net SntpClient library o third-party na solusyon. Noong 2022, nagdagdag ang Google ng internal na SntpClient class sa Android API (sa pamamagitan ng Google Play Services), ngunit nangangailangan ito ng configuration at hindi dokumentado para sa pangkalahatang paggamit. Isang alternatibong approach — request ng oras sa pamamagitan ng REST API, na nagbabalik ng server timestamp sa body ng tugon.

Halimbawa ng implementation ng SNTP client

Ang pangunahing implementation ng SNTP sa Android ay binubuo ng pagpapadala ng UDP packet sa NTP server (hal. pool.ntp.org), pag-parse ng tugon, at pag-extract ng oras ng pagpapadala (T3 — Transmit Timestamp). Dapat pangasiwaan ng code ang network timeout at parsing error — sa isang tunay na application, ang operasyong ito ay ginagawa sa background, at ang resulta ay naka-cache hanggang sa susunod na pag-sync. Ang Apache Commons Net library ay nagbibigay ng handa nang NTPUDPClient class na maaaring gamitin sa Android na may minimal na pagbabago, sa pamamagitan ng pagdagdag ng dependency sa build.gradle.

kotlin
// Kunin ang NTP time sa pamamagitan ng 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
    }
}

Katumpakan ng NTP at mga salik na nakakaapekto

Ang katumpakan ng NTP ay nakadepende sa ilang salik: pagkaantala ng network (RTT), stability ng channel, load ng server, at kalidad ng lokal na clock generator. Sa lokal na network na may pagkaantala na mas mababa sa 1 ms, ang NTP ay umaabot ng katumpakan na 0.1–1 ms. Sa internet na may pagkaantala na 10–50 ms, bumababa ang katumpakan sa 10–50 ms. Mas mahalaga kaysa sa isang beses na katumpakan ang stability: kung ang pagkaantala ay nag-iiba (jitter), ang NTP ay nangangailangan ng mas maraming oras upang makalkula ang isang maaasahang offset. Para sa mga mobile device, ang pangunahing salik ng instability ay ang paglipat sa pagitan ng Wi-Fi at mobile network, kung saan ang pagkaantala ay maaaring magbago ng isang order ng magnitude.

Mga rekomendasyon para sa mobile development

Para sa mga Android application na sensitibo sa tumpak na oras, inirerekomenda: gumamit ng maraming NTP server at piliin ang minimum na pagkaantala; huwag mag-sync sa mga sandali ng paglipat ng network; i-cache ang huling natanggap na oras at iwasto ito sa pamamagitan ng System.currentTimeMillis. Para sa mga laro at real-time application (hindi angkop ang NTP dahil sa pagkaantala ng network) — gamitin ang server time na ipinapadala sa bawat request. Sa mga application para sa financial transaction, palaging suriin ang pagkakaiba sa server — kung ang pagkakaiba ay higit sa 5 segundo, i-block ang operasyon bilang potensyal na hindi ligtas.

Mga Madalas Itanong

Ano ang NTP at para saan ito?

NTP (Network Time Protocol) — protocol ng pag-sync ng orasan sa pamamagitan ng internet. Kailangan ito para iayon ang oras sa mga device sa reference na UTC. Kung walang NTP, ang mga computer clock ay lumilihis ng mga segundo bawat araw dahil sa drift ng quartz generator, na kritikal para sa financial transaction, logging, at seguridad.

Paano nakaayos ang hierarchy ng NTP?

Gumagamit ang NTP system ng mga antas — strata: stratum 0 (atomic clock at GPS), stratum 1 (server na konektado sa reference), stratum 2 (pampublikong NTP server), stratum 3–4 (lokal na server), stratum 5–15 (client). Kung mas mataas ang stratum, mas malaki ang potensyal na error. Ang Stratum 16 ay nangangahulugang ang oras ay hindi naka-sync.

Ano ang pagkakaiba ng NTP at SNTP?

SNTP — pinasimpleng bersyon ng NTP para sa mga device na may limitadong resources. Hindi ito nagfo-filter ng server, hindi sinusuri ang drift ng orasan, at hindi gumagamit ng PLL. Ang SNTP ay angkop para sa mobile application kung saan sapat ang katumpakan na 10–100 ms. Ang buong NTP ay kailangan para sa server, telecommunication equipment, at fintech system.

Paano makakuha ng tumpak na oras sa pamamagitan ng NTP sa Android?

Gamitin ang Apache Commons Net library na may NTPUDPClient class. Magpadala ng request sa pool.ntp.org, tanggapin ang tugon, at i-extract ang Transmit Timestamp. Bilang alternatibo, gamitin ang REST API ng iyong server na nagbabalik ng server time sa Date header o sa body ng tugon sa Unix Timestamp format.

Bakit mahalaga ang pag-sync ng oras sa mga mobile device?

Kung walang NTP sync, ang system time sa device ay maaaring mag-iba ng minuto at oras. Nakakaabala ito sa push notification, SSL certificate (pagpapatunay ng validity), log, task scheduler, at cryptographic protocol. Sa mga application na may financial transaction, ang desync na higit sa 5 segundo ay itinuturing na banta sa seguridad.

Buod

  • NTP — network protocol para sa pag-sync ng oras na nagbibigay ng katumpakan mula 1 ms (LAN) hanggang 50 ms (WAN) sa pamamagitan ng stratum hierarchy stratum 0–16
  • Pagwawasto ng drift — Hindi lang itinatakda ng NTP ang oras, inaayos din nito ang dalas ng orasan sa pamamagitan ng PLL, na nagbibigay-daan sa pagpapanatili ng katumpakan nang ilang oras sa pagitan ng pag-sync
  • Hierarkiya ng stratum — bawat antas (stratum) ay nagdaragdag ng potensyal na error; para sa mobile device, ang stratum 2 server tulad ng pool.ntp.org ay optimal
  • SNTP — pinasimpleng bersyon ng NTP para sa IoT at Android, walang filtering at PLL; katumpakan na 10–100 ms ay sapat para sa karamihan ng scenario
  • Pagpapatupad sa Android — sa pamamagitan ng Apache Commons Net (NTPUDPClient) o REST API na may server timestamp; ang platform ay walang built-in na pampublikong NTP client
  • Seguridad — Sinusuportahan ng NTPv4 ang Network Time Security (NTS) para sa proteksyon laban sa pagpeke ng tugon; kritikal para sa financial at corporate application
  • Salik ng katumpakan — RTT, jitter, paglipat ng network; ang mobile application ay nangangailangan ng katumpakan na 10–50 ms, ngunit ang kritikal na operasyon ay nangangailangan ng pagsusuri ng pagkakaiba sa server

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din