2009-08-04 17 views
33

Wikipedia entry विवरण नहीं देता है और RFC बहुत घना है। क्या यहां कोई भी व्यक्ति सामान्य तरीके से जानता है कि एनटीपी कैसे काम करता है?नेटवर्क टाइम प्रोटोकॉल कैसे काम करता है?

मैं एक सिंहावलोकन की तलाश कर रहा हूं जो बताता है कि Marzullo's algorithm (या इसका एक संशोधन) किसी सर्वर पर टाइमस्टैम्प को किसी क्लाइंट पर टाइमस्टैम्प में अनुवाद करने के लिए नियोजित किया जाता है। विशिष्ट रूप से सटीकता उत्पन्न करने के लिए कौन सी तंत्र का उपयोग किया जाता है, जो औसतन 10ms के भीतर होता है जब उस संचार को अत्यधिक परिवर्तनीय विलंबता वाले नेटवर्क पर होता है जो अक्सर कई बार होता है।

उत्तर

72

(यह 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 सेकंड जोड़ना होगा।

उचित कार्यान्वयन में, ग्राहक हर समय एक डिमन के रूप में चलता है। कई नमूनों के साथ लंबे समय तक, एनटीपी वास्तव में यह निर्धारित कर सकता है कि कंप्यूटर की घड़ी धीमी या तेज है, और इसे स्वचालित रूप से समायोजित करें, जिससे इसे उचित समय पर रखने की इजाजत मिलती है, भले ही इसे बाद में नेटवर्क से डिस्कनेक्ट किया जाए। सर्वर से प्रतिक्रियाओं के औसत के साथ, और अधिक जटिल सोच के आवेदन के साथ, आप अविश्वसनीय रूप से सटीक समय प्राप्त कर सकते हैं।

इसके अलावा, उचित कार्यान्वयन के लिए, ज़ाहिर है, लेकिन यह इसका सारांश है।

+2

धन्यवाद, यह वही तरह का स्पष्टीकरण है जिसे मैं ढूंढ रहा था। धारणाएं और कुछ बाधाएं थोड़ी आश्चर्यजनक हैं। उदाहरण के लिए, सर्वर 'वाई' के बारे में विश्वसनीय गारंटी कितनी आसानी से दे सकता है? साथ ही, मुझे आश्चर्य है कि कैसे सममित नेटवर्क समय अभ्यास में हैं? ऐसा लगता है कि आप इन दोनों अनिश्चितताओं के कारण होने वाली त्रुटि को कम करने के लिए कुछ क्षमता में मार्ज़ुल्लो के एल्गोरिदम का उपयोग करने में सक्षम हो सकते हैं। –

+0

यह जानना दिलचस्प होगा कि सर्वर को "एक्स" और "वाई" के समय कैसे मिलते हैं - यानी इसे ऑपरेटिंग सिस्टम से मदद की आवश्यकता होती है ताकि सटीक समय पता लगाया जा सके कि एक पैकेट प्राप्त किया गया था/या प्रसारित किया जाएगा। ..? –

+0

यह एक महान और सुरुचिपूर्ण स्पष्टीकरण है। हालांकि एक सवाल: क्या यह सममित नेटवर्क गति को मानना ​​वाकई उचित है? कई आईएसपी ग्राहकों को डाउनलोड की तुलना में धीमी अपलोड बैंडविड्थ देते हैं। यदि इस तरह की प्रणाली में अन्य असममितताएं हैं, तो नेटवर्क में असममित विलंबता ग्रहण करने के लिए यह बहुत दूर नहीं है। क्या यह भी एक हल करने योग्य समस्या है? मैं अनुमान लगा रहा हूं, अगर केवल एक सर्वर उपयोग में है। –

-1

चाल यह है कि कुछ पैकेट तेज़ होते हैं, और तेज़ पैकेट आपको उस समय कड़े बाधा देते हैं।

+1

यह अभ्यास में क्यों काम करता है इस पर महत्वपूर्ण अंतर्दृष्टि। यह एक उत्कृष्ट टिप्पणी की होगी। –

5
  1. एनटीपी क्लाइंट अपने सभी एनटीपी सर्वर से पूछता है कि यह कितना समय है।
  2. अलग सर्वर अलग आत्मविश्वास के स्तर के साथ, अलग जवाब देने क्योंकि अनुरोध सर्वर और वापस करने के लिए ग्राहक से यात्रा करने के लिए समय से अलग-अलग ले जाएगा होगा।
  3. मार्ज़ुल्लो के एल्गोरिदम को के साथ दिए गए सभी उत्तरों के अनुरूप समय के मूल्यों की श्रेणी सबसे छोटी मिलेगी।
  4. आप किसी भी समय सर्वर से इस एल्गोरिदम से उत्तर की सटीकता के बारे में अधिक भरोसा कर सकते हैं क्योंकि कई सेटों के छेड़छाड़ में किसी भी व्यक्तिगत सेट की तुलना में कम तत्व होंगे।
  5. आपके द्वारा पूछे जाने वाले अधिक सर्वर, संभावित उत्तर पर आपके पास जितनी अधिक बाधाएं होंगी, और आपकी घड़ी जितनी अधिक सटीक होगी।
+2

मुझे आश्चर्य है कि उन आत्मविश्वास अंतराल की गणना कैसे की जाती है। –

0

यदि आप आदेश तय करने के लिए टाइमस्टैम्प का उपयोग कर रहे हैं, तो विशिष्ट समय नस्लीय नहीं हो सकता है। आप इसके बजाय lamport clocks का उपयोग कर सकते हैं, जो नेटवर्क सिंक्रनाइज़ेशन की तुलना में दर्द से कम है। यह आपको बता सकता है कि "पहला" क्या आया, लेकिन समय में सटीक अंतर नहीं। यह परवाह नहीं करता कि कंप्यूटर की घड़ी वास्तव में क्या कहती है।

+0

मैंने लैमपोर्ट घड़ियों (और वेक्टर घड़ियों) को देखा है और वे दिलचस्प लग रहे हैं। दुर्भाग्य से, मुझे डेल्टा की गणना करने की ज़रूरत नहीं है बल्कि एक ऑर्डरिंग स्थापित करें। –

संबंधित मुद्दे