NTP (Network Time Protocol) एक नेटवर्क समय सिंक्रनाइज़ेशन प्रोटोकॉल है जो स्थानीय नेटवर्क पर मिलीसेकंड और वैश्विक नेटवर्क पर दसियों मिलीसेकंड तक सटीकता प्रदान करता है। 1985 में डेविड मिल्स द्वारा विकसित, यह प्रोटोकॉल सभी आधुनिक ऑपरेटिंग सिस्टम, मोबाइल उपकरणों और नेटवर्क उपकरणों में आंतरिक घड़ियों को UTC संदर्भ समय के साथ सिंक्रनाइज़ करने के लिए उपयोग किया जाता है। NTP Pool Project (2026) के अनुसार, प्रतिदिन 4 अरब से अधिक उपकरण सिंक्रनाइज़ेशन के लिए NTP अनुरोध करते हैं।
मुख्य बातें
NTP (Network Time Protocol) एक नेटवर्क प्रोटोकॉल है जो पैकेट-स्विच्ड नेटवर्क पर कंप्यूटर की आंतरिक घड़ी को संदर्भ समय स्रोत के साथ सटीक सिंक्रनाइज़ेशन के लिए डिज़ाइन किया गया है। RFC 5905 (NTPv4) में वर्णित, प्रोटोकॉल सर्वरों की एक पदानुक्रमित प्रणाली का उपयोग करता है, जहाँ प्रत्येक स्तर को स्ट्रेटम कहा जाता है। एक NTP क्लाइंट सर्वर को अनुरोध भेजता है, पैकेट के राउंड-ट्रिप समय (RTT) को मापता है, और संदर्भ समय के सापेक्ष अपनी घड़ी के ऑफ़सेट की गणना करता है। सुधार एल्गोरिदम न केवल एकल ऑफ़सेट को ध्यान में रखता है, बल्कि घड़ी जनरेटर के ड्रिफ्ट को भी ध्यान में रखता है, जिससे बार-बार अनुरोधों के बिना लंबे समय तक सटीकता बनाए रखी जा सकती है।
प्रोटोकॉल डेविड मिल्स द्वारा 1985 में ARPANET नेटवर्क के लिए विकसित किया गया था। पहली विशिष्टता (RFC 958) ने 100 ms तक सटीकता के साथ एक सरल सिंक्रनाइज़ेशन एल्गोरिदम का वर्णन किया। NTPv3 (RFC 1305, 1992) ने फ़िल्टरिंग एल्गोरिदम और बेहतर विलंब प्रसंस्करण जोड़ा। NTPv4 (RFC 5905, 2010) — वर्तमान संस्करण — में IPv6 समर्थन, स्वचालित सर्वर कॉन्फ़िगरेशन और Network Time Security (NTS) के माध्यम से हमलों से सुरक्षा शामिल है। 40 वर्षों में, प्रोटोकॉल एक शोध परियोजना से एक बुनियादी ढाँचा मानक बन गया है, जिसके बिना वित्तीय लेन-देन, दूरसंचार और मोबाइल नेटवर्क असंभव होंगे।
NTP का कार्य सिद्धांत नेटवर्क पर पैकेट यात्रा समय को मापने पर आधारित है। क्लाइंट टाइमस्टैम्प T1 (स्थानीय भेजने का समय) के साथ एक अनुरोध भेजता है। सर्वर समय T2 (सर्वर समय) पर अनुरोध प्राप्त करता है, टाइमस्टैम्प T3 के साथ प्रतिक्रिया उत्पन्न करता है और भेजता है। क्लाइंट समय T4 पर प्रतिक्रिया प्राप्त करता है। सभी चार टाइमस्टैम्प का उपयोग करके, क्लाइंट ऑफ़सेट = ((T2 - T1) + (T3 - T4)) / 2 और विलंब = (T4 - T1) - (T3 - T2) की गणना करता है। यदि विलंब 1 सेकंड से अधिक है, तो परिणाम अविश्वसनीय माना जाता है — यह ओवरलोडेड या अस्थिर चैनलों से सुरक्षा करता है।
केवल सटीक समय सेट करना पर्याप्त नहीं है — डिवाइस पर क्वार्ट्ज ऑसिलेटर तापमान, उम्र और वोल्टेज के कारण लगातार ड्रिफ्ट (आगे या पीछे जाता) करता है। NTP PLL (Phase-Locked Loop) एल्गोरिदम का उपयोग करके इस समस्या को हल करता है: यह जबरन समय सेट नहीं करता, बल्कि घड़ी की गति को समायोजित करता है। यदि डिवाइस प्रति घंटे 0.1 सेकंड तेज है, तो NTP सिस्टम घड़ी को तब तक धीमा करता है जब तक ड्रिफ्ट की भरपाई नहीं हो जाती। यह दृष्टिकोण स्थिर नेटवर्क पर हर 30 सेकंड के बजाय हर कुछ घंटों में सिंक्रनाइज़ेशन की अनुमति देता है।
// Simplified NTP algorithm schema
struct NTPPacket {
uint8_t flags; // LI, VN, Mode
uint8_t stratum; // server stratum level
uint32_t refTimestamp; // reference timestamp
uint32_t originTimestamp; // T1
uint32_t recvTimestamp; // T2
uint32_t xmitTimestamp; // T3
};
// Calculate offset and delay
double offset = ((t2 - t1) + (t3 - t4)) / 2.0;
double delay = (t4 - t1) - (t3 - t2);
पूरा NTP सिस्टम एक पदानुक्रम में संगठित है, जहाँ प्रत्येक स्तर को स्ट्रेटम कहा जाता है। स्ट्रेटम 0 संदर्भ घड़ी है: परमाणु घड़ियाँ, GPS रिसीवर, या WWVB रेडियो सिग्नल। ये उपकरण सीधे नेटवर्क से कनेक्ट नहीं होते हैं। स्ट्रेटम 1 — सर्वर जो सीधे संदर्भ घड़ियों से जुड़े होते हैं। स्ट्रेटम 2 स्ट्रेटम 1 से समय प्राप्त करता है, स्ट्रेटम 3 स्ट्रेटम 2 से, और इसी तरह स्ट्रेटम 15 तक। स्ट्रेटम संख्या जितनी अधिक होगी, सटीकता उतनी ही कम होगी — प्रत्येक स्तर थोड़ा विलंब और त्रुटि जोड़ता है। स्ट्रेटम 16 का मतलब है कि समय उपलब्ध नहीं है (सिंक्रनाइज़ नहीं)।
| स्ट्रेटम | विवरण | सटीकता |
|---|---|---|
| Stratum 0 | परमाणु घड़ियाँ, GPS, रेडियो सिग्नल | नैनोसेकंड |
| Stratum 1 | संदर्भ से जुड़े सर्वर | माइक्रोसेकंड |
| Stratum 2 | सार्वजनिक NTP सर्वर | 1–10 ms |
| Stratum 3 | संगठनों के स्थानीय सर्वर | 10–50 ms |
| Stratum 4+ | क्लाइंट उपकरण | 100 ms तक |
मोबाइल उपकरणों के लिए, स्ट्रेटम 2 सर्वर इष्टतम हैं — वे पर्याप्त संख्या में हैं और सटीकता और उपलब्धता के बीच अच्छा संतुलन प्रदान करते हैं। उदाहरण के लिए, pool.ntp.org दुनिया भर के हजारों सर्वरों का एक पूल है जो स्वचालित रूप से लोड वितरित करता है। Android अनुप्रयोगों के लिए, सीधे स्ट्रेटम 1 का उपयोग करने की अनुशंसा नहीं की जाती है: पहला, यह प्राथमिक सर्वरों पर अत्यधिक लोड बनाता है, और दूसरा, मोबाइल डिवाइस को केवल 10–50 ms सटीकता की आवश्यकता होती है, जो स्ट्रेटम 2 प्रदान करता है। कॉर्पोरेट नेटवर्क में, एक स्थानीय स्ट्रेटम 3-4 सर्वर स्थापित किया जाता है जो बाहरी स्ट्रेटम 2 के साथ सिंक्रनाइज़ होता है।
SNTP (Simple Network Time Protocol, RFC 4330) सीमित संसाधनों वाले उपकरणों के लिए NTP का एक सरलीकृत कार्यान्वयन है: माइक्रोकंट्रोलर, IoT सेंसर और मोबाइल एप्लिकेशन जिन्हें उच्च सटीकता की आवश्यकता नहीं है। पूर्ण NTP के विपरीत, SNTP कई सर्वरों की फ़िल्टरिंग नहीं करता, घड़ी ड्रिफ्ट का विश्लेषण नहीं करता, और जटिल PLL एल्गोरिदम का उपयोग नहीं करता। एक SNTP क्लाइंट अनुरोध भेजता है, प्रतिक्रिया प्राप्त करता है, और एक बार समय सेट करता है। नेटवर्क के आधार पर SNTP सटीकता 10–100 ms है — यह वित्तीय लेन-देन को छोड़कर, अधिकांश मोबाइल परिदृश्यों के लिए पर्याप्त है।
SNTP Android अनुप्रयोगों के लिए उपयुक्त है जिन्हें निरंतर सिंक्रनाइज़ेशन बनाए रखे बिना बस सर्वर से वर्तमान समय प्राप्त करने की आवश्यकता होती है। उदाहरण के लिए, कोई एप्लिकेशन लॉगिन पर सर्वर समय दिखाता है या दिन में एक बार सिंक्रनाइज़ होता है। पूर्ण NTP सर्वर सिस्टम, दूरसंचार उपकरण, वित्तीय प्लेटफ़ॉर्म और वितरित डेटाबेस के लिए आवश्यक है जहाँ निरंतर सटीकता और ड्रिफ्ट निगरानी महत्वपूर्ण है। मोबाइल विकास के लिए, SNTP पर्याप्त है — अंतर्निहित Android समय सेवा Google सर्वरों के साथ आवधिक सिंक्रनाइज़ेशन के लिए इसका उपयोग करती है।
Android अनुप्रयोगों में, NTP के माध्यम से सटीक समय प्राप्त करना तब आवश्यक होता है जब सिस्टम समय को उपयोगकर्ता द्वारा बदला जा सकता है या नेटवर्क की कमी के कारण वास्तविक समय से भिन्न होता है। Android में कोई अंतर्निहित सार्वजनिक NTP क्लाइंट नहीं है — डेवलपर Apache Commons Net SntpClient लाइब्रेरी या तृतीय-पक्ष समाधान का उपयोग करते हैं। 2022 में, Google ने Android API (Google Play Services के माध्यम से) में एक आंतरिक SntpClient वर्ग जोड़ा, लेकिन इसे कॉन्फ़िगरेशन की आवश्यकता है और सामान्य उपयोग के लिए दस्तावेज़ित नहीं है। एक वैकल्पिक दृष्टिकोण REST API के माध्यम से समय का अनुरोध करना है जो प्रतिक्रिया निकाय में सर्वर टाइमस्टैम्प लौटाता है।
Android पर एक बुनियादी SNTP कार्यान्वयन में NTP सर्वर (जैसे pool.ntp.org) पर UDP पैकेट भेजना, प्रतिक्रिया को पार्स करना और ट्रांसमिट टाइमस्टैम्प (T3) निकालना शामिल है। कोड को नेटवर्क टाइमआउट और पार्सिंग त्रुटियों को संभालना चाहिए — वास्तविक एप्लिकेशन में, यह ऑपरेशन बैकग्राउंड थ्रेड पर किया जाता है, और परिणाम अगले सिंक्रनाइज़ेशन तक कैश किया जाता है। Apache Commons Net लाइब्रेरी एक तैयार NTPUDPClient वर्ग प्रदान करती है जिसे build.gradle में निर्भरता जोड़कर न्यूनतम संशोधनों के साथ Android में उपयोग किया जा सकता है।
// Get NTP time via 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
}
}
NTP की सटीकता कई कारकों पर निर्भर करती है: नेटवर्क विलंब (RTT), चैनल स्थिरता, सर्वर लोड और स्थानीय घड़ी जनरेटर की गुणवत्ता। 1 ms से कम विलंब वाले स्थानीय नेटवर्क पर, NTP 0.1–1 ms की सटीकता प्राप्त करता है। 10–50 ms विलंब वाले इंटरनेट पर, सटीकता 10–50 ms तक गिर जाती है। एकल सटीकता से अधिक महत्वपूर्ण है स्थिरता: यदि विलंब भिन्न होता है (jitter), तो NTP को विश्वसनीय ऑफ़सेट की गणना करने के लिए अधिक समय की आवश्यकता होती है। मोबाइल उपकरणों के लिए, अस्थिरता का मुख्य कारक Wi-Fi और मोबाइल नेटवर्क के बीच स्विचिंग है, जहाँ विलंब परिमाण के क्रम से बदल सकता है।
सटीक समय के प्रति संवेदनशील Android अनुप्रयोगों के लिए, यह अनुशंसित है: कई NTP सर्वरों का उपयोग करें और सबसे कम विलंब वाले का चयन करें; नेटवर्क स्विच के दौरान सिंक्रनाइज़ेशन से बचें; अंतिम प्राप्त समय को कैश करें और इसे System.currentTimeMillis के माध्यम से समायोजित करें। गेम और रीयल-टाइम अनुप्रयोगों के लिए (NTP नेटवर्क विलंबता के कारण यहाँ उपयुक्त नहीं है) — प्रत्येक अनुरोध में पारित सर्वर समय का उपयोग करें। वित्तीय अनुप्रयोगों में, हमेशा सर्वर के साथ अंतर की जाँच करें — यदि अंतर 5 सेकंड से अधिक है, तो ऑपरेशन को संभावित रूप से असुरक्षित के रूप में ब्लॉक करें।
अक्सर पूछे जाने वाले प्रश्न
NTP (Network Time Protocol) इंटरनेट पर घड़ी सिंक्रनाइज़ेशन प्रोटोकॉल है। इसकी आवश्यकता UTC संदर्भ के साथ उपकरणों पर समय को संरेखित करने के लिए है। NTP के बिना, क्वार्ट्ज ऑसिलेटर ड्रिफ्ट के कारण कंप्यूटर घड़ियाँ प्रतिदिन सेकंड बढ़ जाती हैं, जो वित्तीय लेन-देन, लॉगिंग और सुरक्षा के लिए महत्वपूर्ण है।
NTP सिस्टम स्तरों — स्ट्रेटा का उपयोग करता है: स्ट्रेटम 0 (परमाणु घड़ियाँ और GPS), स्ट्रेटम 1 (संदर्भ से जुड़े सर्वर), स्ट्रेटम 2 (सार्वजनिक NTP सर्वर), स्ट्रेटम 3–4 (स्थानीय सर्वर), स्ट्रेटम 5–15 (क्लाइंट)। स्ट्रेटम जितना अधिक होगा, संभावित त्रुटि उतनी ही अधिक होगी। स्ट्रेटम 16 का मतलब है कि समय सिंक्रनाइज़ नहीं है।
SNTP सीमित संसाधनों वाले उपकरणों के लिए NTP का एक सरलीकृत संस्करण है। यह सर्वरों को फ़िल्टर नहीं करता, घड़ी ड्रिफ्ट का विश्लेषण नहीं करता, या PLL का उपयोग नहीं करता। SNTP मोबाइल अनुप्रयोगों के लिए उपयुक्त है जहाँ 10–100 ms सटीकता पर्याप्त है। पूर्ण NTP सर्वर, दूरसंचार उपकरण और फिनटेक सिस्टम के लिए आवश्यक है।
Apache Commons Net लाइब्रेरी का उपयोग NTPUDPClient वर्ग के साथ करें। pool.ntp.org पर अनुरोध भेजें, प्रतिक्रिया प्राप्त करें और ट्रांसमिट टाइमस्टैम्प निकालें। वैकल्पिक रूप से, अपने सर्वर के REST API का उपयोग करें, जो Date हेडर या प्रतिक्रिया निकाय में Unix Timestamp प्रारूप में सर्वर समय लौटाता है।
NTP सिंक्रनाइज़ेशन के बिना, डिवाइस पर सिस्टम समय मिनटों या घंटों तक भिन्न हो सकता है। यह पुश सूचनाओं, SSL प्रमाणपत्र सत्यापन, लॉग, कार्य शेड्यूलर और क्रिप्टोग्राफ़िक प्रोटोकॉल को बाधित करता है। वित्तीय अनुप्रयोगों में, 5 सेकंड से अधिक का अंतर सुरक्षा खतरा माना जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें