NTP (Network Time Protocol) ایک نیٹ ورک ٹائم ہم آہنگی پروٹوکول ہے جو مقامی نیٹ ورکس پر ملی سیکنڈ اور عالمی نیٹ ورک پر دسیوں ملی سیکنڈ تک درستگی فراہم کرتا ہے۔ 1985 میں ڈیوڈ ملز کے ذریعہ تیار کردہ، یہ پروٹوکول تمام جدید آپریٹنگ سسٹمز، موبائل آلات اور نیٹ ورک کے آلات میں داخلی گھڑیوں کو UTC حوالہ وقت کے ساتھ ہم آہنگ کرنے کے لئے استعمال ہوتا ہے۔ NTP پول پروجیکٹ (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 تک گر جاتی ہے۔ ایک بار کی درستگی سے زیادہ اہم استحکام ہے: اگر تاخیر مختلف ہوتی ہے (jit) تو 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں