(यह Marzullo एल्गोरिथ्म। नहीं है। यही कारण है कि केवल उच्च परत सर्वर द्वारा प्रयोग किया जाता है कई स्रोतों का उपयोग वास्तव में सही समय प्राप्त करने के लिए इस तरह एक साधारण ग्राहक, समय हो जाता है केवल एक ही सर्वर का उपयोग कर रहा है)
सबसे पहले, एनटीपी टाइमस्टैम्प 1 जनवरी, 1 9 00 से सेकंड के रूप में संग्रहीत किए जाते हैं। सेकेंड की संख्या के लिए 32 बिट्स, और एक सेकंड के अंशों के लिए 32 बिट्स।
सिंक्रनाइज़ेशन मुश्किल है। जब ग्राहक अनुरोध भेजता है तो क्लाइंट टाइमस्टैम्प स्टोर करता है (ए कहें) (ये सभी मान सेकेंड में हैं)। सर्वर "सत्य" समय से युक्त एक जवाब भेजता है जब उसे पैकेट प्राप्त होता है (एक्स को कॉल करें) और "सत्य" समय यह पैकेट (वाई) को प्रेषित करेगा। ग्राहक उस पैकेट को प्राप्त करेगा और उसे प्राप्त होने पर लॉग इन करेगा (बी)।
एनटीपी मानता है कि नेटवर्क पर बिताए गए समय भेजने और प्राप्त करने के लिए समान है। सेन नेटवर्क्स पर पर्याप्त अंतराल पर, यह औसत होना चाहिए। हम जानते हैं कि प्रतिक्रिया प्राप्त करने के अनुरोध को भेजने से कुल पारगमन समय बी-ए सेकेंड था। हम उस समय को हटाना चाहते हैं जब सर्वर अनुरोध (वाई-एक्स) को संसाधित करता है, केवल नेटवर्क ट्रैवर्सल समय छोड़ देता है, ताकि बी-ए- (वाई-एक्स) हो। चूंकि हम मानते हैं कि नेटवर्क ट्रैवर्सल समय सममित है, सर्वर से क्लाइंट तक पहुंचने के लिए प्रतिक्रिया लेने में कितना समय लगता है [बी-ए- (वाई-एक्स)]/2। इसलिए हम जानते हैं कि सर्वर ने समय पर अपनी प्रतिक्रिया भेजी है, और हमें उस प्रतिक्रिया के लिए [बी-ए- (वाई-एक्स)]/2 सेकंड ले गए हैं।
तो जब हमें प्रतिक्रिया मिली तो सही समय वाई + [बी-ए- (वाई-एक्स)]/2 सेकंड है। और इस तरह एनटीपी काम करता है।
उदाहरण (पूरे सेकंड में आसान गणित बनाने के लिए):
- क्लाइंट "गलत" समय 100 के एक = 100 पर अनुरोध भेजता है।
- सर्वर को "सत्य" समय 150 पर अनुरोध प्राप्त होता है। एक्स = 150।
- सर्वर धीमा है, इसलिए यह "सत्य" समय 160 तक प्रतिक्रिया नहीं भेजता है। वाई = 160।
- ग्राहक को "गलत" समय 120 पर अनुरोध प्राप्त होता है। बी = 120।
- ग्राहक निर्धारित करता है कि नेटवर्क पर समय व्यय बीए- (वाईएक्स) = 120-100- (160-150) = 10 सेकंड
- क्लाइंट सर्वर से प्राप्त करने के लिए प्रतिक्रिया के लिए कितना समय लगाता है ग्राहक 10/2 = 5 सेकंड है।
- क्लाइंट उस समय को "सत्य" समय में जोड़ता है जब सर्वर ने अनुमान लगाया कि उसे "सत्य" समय 165 सेकंड में प्रतिक्रिया मिली है।
- ग्राहक अब जानता है कि इसे अपनी घड़ी में 45 सेकंड जोड़ना होगा।
उचित कार्यान्वयन में, ग्राहक हर समय एक डिमन के रूप में चलता है। कई नमूनों के साथ लंबे समय तक, एनटीपी वास्तव में यह निर्धारित कर सकता है कि कंप्यूटर की घड़ी धीमी या तेज है, और इसे स्वचालित रूप से समायोजित करें, जिससे इसे उचित समय पर रखने की इजाजत मिलती है, भले ही इसे बाद में नेटवर्क से डिस्कनेक्ट किया जाए। सर्वर से प्रतिक्रियाओं के औसत के साथ, और अधिक जटिल सोच के आवेदन के साथ, आप अविश्वसनीय रूप से सटीक समय प्राप्त कर सकते हैं।
इसके अलावा, उचित कार्यान्वयन के लिए, ज़ाहिर है, लेकिन यह इसका सारांश है।
धन्यवाद, यह वही तरह का स्पष्टीकरण है जिसे मैं ढूंढ रहा था। धारणाएं और कुछ बाधाएं थोड़ी आश्चर्यजनक हैं। उदाहरण के लिए, सर्वर 'वाई' के बारे में विश्वसनीय गारंटी कितनी आसानी से दे सकता है? साथ ही, मुझे आश्चर्य है कि कैसे सममित नेटवर्क समय अभ्यास में हैं? ऐसा लगता है कि आप इन दोनों अनिश्चितताओं के कारण होने वाली त्रुटि को कम करने के लिए कुछ क्षमता में मार्ज़ुल्लो के एल्गोरिदम का उपयोग करने में सक्षम हो सकते हैं। –
यह जानना दिलचस्प होगा कि सर्वर को "एक्स" और "वाई" के समय कैसे मिलते हैं - यानी इसे ऑपरेटिंग सिस्टम से मदद की आवश्यकता होती है ताकि सटीक समय पता लगाया जा सके कि एक पैकेट प्राप्त किया गया था/या प्रसारित किया जाएगा। ..? –
यह एक महान और सुरुचिपूर्ण स्पष्टीकरण है। हालांकि एक सवाल: क्या यह सममित नेटवर्क गति को मानना वाकई उचित है? कई आईएसपी ग्राहकों को डाउनलोड की तुलना में धीमी अपलोड बैंडविड्थ देते हैं। यदि इस तरह की प्रणाली में अन्य असममितताएं हैं, तो नेटवर्क में असममित विलंबता ग्रहण करने के लिए यह बहुत दूर नहीं है। क्या यह भी एक हल करने योग्य समस्या है? मैं अनुमान लगा रहा हूं, अगर केवल एक सर्वर उपयोग में है। –