Traceroute - हर पैकेट में TTL == 1 है


17

मैं कंप्यूटर नेटवर्किंग में Wireshark lab-IP पर काम कर रहा हूं - एक टॉप डाउन अप्रोच और मुझे समझ में नहीं आता है कि आम तौर पर एक्सपायर होने वाले हर पैकेट का TTL 1 क्यों होता है।

यहाँ मेरी Wireshark कैप्चर फ़ाइल है। https://www.dropbox.com/s/rr5wgze9j20gzvu/traceroute-56.pcapng?dl=0

मैंने tracerouteलिनक्स में प्रोग्राम के निष्पादन पर कब्जा कर लिया (56 बाइट्स के विकल्प के साथ), जैसा कि निम्नलिखित कमांड के साथ निष्पादित किया गया है:

traceroute http://gaia.cs.umass.edu 56

आप देख सकते हैं कि पैकेट के अधिकांश टीटीएल == 1 और मुझे नहीं पता कि क्यों, क्योंकि मैंने सीखा है कि हर बाद के हॉप में टीटीएल +1 (या अधिक) है।

पुनश्च:

  • मैं होस्ट करने के लिए नेटवर्क के साथ VMware पर Lubuntu का उपयोग कर रहा हूँ।
  • मैंने इसे होस्ट मशीन (विंडोज) पर वायरशार्क के साथ कैप्चर किया
  • मैं NAT प्रोटोकॉल के शीर्ष पर स्वयं डीएचसीपी सर्वर का उपयोग करके एक वायरलेस एपी से जुड़ा हुआ हूं

जवाबों:


14

मुझे इसका जवाब देने की कोशिश करें, क्योंकि यह थोड़ा अधिक जटिल है कि यह शुरू में लग सकता है।

ऐसा लगता है कि आप पहले से ही मूल ऑपरेशन को जानते हैं, tracerouteलेकिन इससे पहले कि यहां कुछ और हो, एक बहुत छोटा रिकैप है:

tracerouteअपने मेजबान से गंतव्य के मेजबान तक, या बस दूरी, हॉप्स की संख्या, आपके मेजबान से गंतव्य गंतव्य तक सभी के बीच के सभी चरणों को निर्धारित करने की कोशिश करता है। ऐसा करने के लिए यह एक "यादृच्छिक" गंतव्य पोर्ट नंबर और एक टीटीएल के साथ गंतव्य होस्ट को पैकेट भेजना शुरू कर देता है जो 1 से शुरू होता है और बढ़ता रहता है।
यह विचार है कि बीच में प्रत्येक राउटर TTL को 1. घटाता है। इस प्रकार, यदि टीटीएल 0 तक पहुंचता है (वास्तव में ऐसा कभी नहीं होता है क्योंकि राउटर जो इसे 0 तक घटाना है, उससे पहले एक त्रुटि उत्पन्न करता है), राउटर एक आईसीएमपी लौटाएगा " टाइम-टू-लाइव पार हो गई " त्रुटि संदेश, जैसे आपकी कैप्चर फ़ाइल में पैकेट नंबर 24 । इससे आपको जो मिलता है वह यह है कि आपकी मंजिल और भी दूर हो जाती है और यही कारण है कि आप टीटीएल को बढ़ाते रहते हैं।
जब आपके पैकेट में TTL होता है जो गंतव्य तक पहुंचने के लिए काफी बड़ा होता है, तो आपको एक अलग ICMP त्रुटि संदेश मिलेगा: " गंतव्य पहुंच योग्य (पोर्ट अनुपलब्ध) ", उदाहरण के लिए पैकेट नंबर 208 आपकी कैप्चर फ़ाइल में। आपको जो मिलता है, वह यह है कि अंतिम उपयोग किया गया टीटीएल वास्तव में आपके और गंतव्य नोड के बीच हॉप्स की संख्या है। कारण यह है कि आपको एक त्रुटि मिलती है क्योंकि आप एक "यादृच्छिक" पोर्ट पर एक संदेश भेज रहे हैं जो गंतव्य नोड (उम्मीद है) को नहीं सुन रहा है।

अब आपकी कैप्चर फ़ाइल की बारीकियों में जा रहा है:
traceroute हम मैनुअल पेज से देख सकते हैं कि प्रत्येक TTL का उपयोग 3 बार (विकल्प '-q') और डिफ़ॉल्ट प्रोटोकॉल का उपयोग UDP (विकल्प '-P') में किया जाता है। पहले 3 यूडीपी पैकेट, यानी पैकेट 8-9-10 की जांच करके , हम वास्तव में देख सकते हैं कि टीटीएल 1 है । अगले 3, यानी 11-12-13 , एक TTL 2 और इतने पर। इसलिए स्रोत के नजरिए से सब कुछ ठीक होता दिख रहा है।

फिर, कुछ समय नेटवर्क की देरी पर निर्भर होने के बाद, हमें प्रत्याशित त्रुटि संदेश मिलना शुरू हो जाता है। इस प्रकार हम देख सकते हैं कि पैकेट 24-25-26 " टाइम टू लिवओवर " एरर पैकेट हैं और इस प्रकार अर्थ है कि गंतव्य और दूर है।

प्रयासों और त्रुटियों का यह बैक-एंड आगे जारी है, आखिरकार, पैकेट 208 और आप " पोर्ट अनरीचेबल " त्रुटि संदेशों को देख सकते हैं , जिसका अर्थ है कि आपकी मंजिल तक पहुंच गया है।

आपके द्वारा भेजे गए पैकेटों की गिनती और प्रतिक्रियाओं से आप वास्तव में ट्रेस से भी पता लगा सकते हैं जो वास्तव में टीटीएल ने काम किया था, लेकिन इसके एक थकाऊ :)

उम्मीद है कि मदद की


सुपर स्पष्टीकरण
ksp0422

14

आपका क्लाइंट केवल 1. के एक टीटीएल के साथ पहले तीन पैकेट भेज रहा है। अगले तीन को टीटीएल के साथ भेजा जाता है। अगले तीन को टीटीएल के साथ भेजा जाता है। 3. और इसी तरह आगे भी।

इसे देखने का एक आसान तरीका यह है कि आईपी टीटीएल क्षेत्र को विंडसर में अपने स्वयं के कॉलम के रूप में सेट किया जाए। बस किसी भी पैकेट में TTL मान पर राइट क्लिक करें, और "कॉलम के रूप में लागू करें" चुनें: टीटीएल को विरेचक में एक कॉलम के रूप में सेट करें

वहां से, आप देख सकते हैं कि पैकेट 8,9,10 का टीटीएल 1. और पैकेट 11,12,13 का टीटीएल 2 है। और इसी तरह आगे भी। एक ट्रेसरूट में टीटीएल

ऐसा इसलिए हो रहा है क्योंकि ट्रेसरूट इसी तरह काम करता है। इसका लाभ उठाता है कि जब एक रूटर टीटीएल को घटाता है तो यह 0. से कम हो जाता है। बल्कि पैकेट को जारी रखने के बजाय, यह मूल ग्राहक को "आईसीएमटी टीटीएल एक्सपायर्ड ट्रांजिट मैसेज" में भेजता है (अपने कैप्चर में पैकेट # 24 देखें)

एक क्लाइंट के रूप में, जब आप 1 के टीटीएल के साथ पैकेट का पहला सेट भेजते हैं, तो पथ का पहला राउटर टीटीएल एक्सपायर्ड संदेश के साथ प्रतिक्रिया करता है। आप तब मापते हैं कि जब आपने प्रारंभिक संदेश भेजे थे, तो इसके विरुद्ध TTL समाप्ति संदेश प्राप्त करने में कितना समय लगा था, और यह आपको Traceroute आउटपुट में आपके पहले तीन मान देता है।

फिर आप तीन पैकेट का एक और सेट 2 टीटीएल के साथ भेजते हैं। पथ में पहला राउटर इसे 1 पर घटाता है, और फिर इसे अगले राऊटर में जाता है। रिसेप्शन पर, जब वह दूसरा राउटर मिलता है, तो वह टीटीएल को 0 में घटा देता है, जो उसे पैकेट छोड़ने और आपको ट्रांजिट में टीटीएल एक्सपायर्ड भेजने का संकेत देता है।

यह प्रक्रिया तब तक जारी रहती है जब तक कि आपके ग्राहक को आपके (और तीन) टीटीएल से प्राप्त संदेश हर राउटर से आपके और अंतिम गंतव्य के बीच पारगमन में नहीं मिलते हैं, जिसके खिलाफ आप अपने ट्रेसरआउट को चला रहे हैं।


सबसे अच्छी तरह से समझाया
ksp0422

@ ईदी, यह इस प्रश्न के लिए प्रासंगिक नहीं हो सकता है लेकिन यह बहुत ही कम विवरण है जो मैंने टिप्पणी में पूछा है। क्या आप निर्दिष्ट कर सकते हैं कि क्या होगा यदि होस्ट (राउटर) टीटीएल क्षेत्र 1 के साथ डेटाग्राम प्राप्त नहीं करता है?
विमल पटेल

1
@VimalPatel यदि पैकेट होस्ट को दिया गया था, तो होस्ट केवल पैकेट को स्वीकार करता है। TTL के 0 हिट होने पर पैकेट को गिराना एक राउटर फ़ंक्शन है।
एडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.