टीसीपी कनेक्शन में टाइम वॉइट का उद्देश्य क्या है?


12

मैंने पाया कि सक्रिय करीब टाइम वॉइट में प्रवेश करने का कारण यह सुनिश्चित करना है कि अंतिम एसीके खो नहीं गया है। लेकिन यह कैसे पता चलेगा कि अंतिम एसीके खो गया है? क्या निष्क्रिय करीब फिन को फिर से भेजेगा और सक्रिय करीब जानता है कि एसीके खो गया था? यहां टीसीपी एफएसएम की एक तस्वीर है।

टीसीपी एफएसएम



1
: इस ब्लॉग पोस्ट के लिए एक महान जवाब है vincent.bernat.im/en/blog/...
जंगी चिंपांज़ी

जवाबों:


5

क्या निष्क्रिय करीब फिन को फिर से भेजेगा और सक्रिय करीब जानता है कि एसीके खो गया था?

हाँ। टीसीपी कनेक्शन प्रबंधन अनुभाग में टीसीपी / आईपी इलस्ट्रेटेड वॉल्यूम 1 से उद्धरण :

  1. करीब पूरा करने के लिए, अंतिम खंड में अंतिम फाइनल के लिए एक एसीके होता है। ध्यान दें कि यदि एक फिन खो जाता है, तो इसे तब तक पुनर्प्राप्त किया जाता है जब तक कि इसके लिए एक एसीके प्राप्त न हो जाए।

एक टाइमआउट है। जब में LAST_ACK, निष्क्रिय समीप होगा FINजब कोई समय समाप्त होता है, यह मानते हुए कि यह खो गया था। यदि यह वास्तव में खो गया था, तो सक्रिय रूप से करीब अंत में पुनः प्राप्त किया जाएगा FINऔर दर्ज करें TIME_WAIT। यदि FINहार नहीं हुई थी लेकिन फाइनल ACKहार गया था, तो सक्रिय करीब फिर से TIME_WAITप्राप्त होता है FIN। जब ऐसा होता है - एक प्राप्त करने FINमें TIME_WAIT- ACKretransmitted है।

टाइमआउट मान में TIME_WAITहै नहीं पुनर्संचरण उद्देश्यों के लिए इस्तेमाल। जब इसमें कोई टाइमआउट होता है TIME_WAIT, तो यह मान लिया जाता है कि फ़ाइनल ACKको सफलतापूर्वक डिलीवर कर दिया गया था, क्योंकि पैसिव क़रीब से रिट्रीटमिट FINपैकेट नहीं था । तो, समय समाप्त हो गया TIME_WAITहै , जिसके बाद हम सुरक्षित रूप से मान सकते हैं कि अगर दूसरे छोर ने कुछ भी नहीं भेजा है, तो इसका कारण यह है कि उसने अंतिम प्राप्त किया ACKऔर कनेक्शन बंद कर दिया।


1

लेकिन यह कैसे पता चलेगा कि अंतिम एसीके खो गया है?

क्योंकि इसे टाइमआउट अवधि के भीतर प्राप्त नहीं किया था। मुझे पता है कि यह एक "डुह" उत्तर है, लेकिन यही कारण है कि ये राज्य और समय समाप्त होते हैं।

क्या निष्क्रिय पास फाइनल को फिर से शुरू करेगा

नहीं। जब तक कि आगे के पैकेट उस धारा के लिए नहीं आते हैं, और इसके परिणामस्वरूप "आरएसटी" (रीसेट) भेजा जाएगा।

नेटवर्क विफलताओं की संभावना के बावजूद एक व्यवस्थित शटडाउन निष्पादित करने के लिए पूरी प्रक्रिया जटिल राज्य मशीन है। नेटवर्क टूटते हैं, लिंक अनुभव त्रुटियां होती हैं, लिंक संतृप्त हो जाते हैं और पैकेट को छोड़ना पड़ता है, उपकरण विफल हो जाते हैं, आदि एक अभ्यास के रूप में, एक सक्रिय कनेक्शन के लिए राज्य ट्री को चलाते हैं जब एक समापन बिंदु बस गायब हो जाता है (जैसे। बिजली की विफलता।)

TL; DR वह राज्य वृक्ष हर संभव विफलता मोड को संभालने के लिए डिज़ाइन किया गया है।


धन्यवाद, लेकिन मैं अभी भी पहले भाग के बारे में उलझन में हूं। मेरा मतलब था कि सक्रिय पास कैसे जानता है कि निष्क्रिय पास से एसीके प्राप्त नहीं हुआ था? जब निष्क्रिय पास ACK को प्राप्त करता है, तो यह कनेक्शन के अपने पक्ष को फाड़ देता है, और यदि यह ACK प्राप्त नहीं करता है, तो यह केवल LAST ACK में रहता है, तो ACK प्राप्त होने पर सक्रिय को कैसे पता चलता है?
czhao

क्योंकि हर राज्य से जुड़ी हुई इमारते हैं।
रिकी बीम

क्षमा करें, मैं नहीं समझ रहा हूँ। ये टाइमर सक्रिय पास को कैसे बताते हैं कि निष्क्रिय पास को अंतिम एसीके प्राप्त नहीं हुआ था? यदि अंतिम ACK को फिर से भेजना है, तो सक्रिय करीबी को कैसे पता चलेगा?
czhao

0

TIME_WAIT का उद्देश्य नेटवर्किंग को एक नए से 'पुराने, मौजूदा' कनेक्शन के रूप में आने वाले पैकेट को अलग करने की अनुमति देना है। यह सिफारिश है कि TIME_WAIT टाइमर को अधिकतम सेगमेंट लाइफटाइम (MSL) से दो बार सेट किया जाए, मेरे सिस्टम पर MSL 1 मिनट का है, इसलिए TIME_WAIT स्थिति में 2 मिनट के लिए लिंक करता है।

इस राशि के बाद आने वाले किसी भी पैकेट का अब पुराने कनेक्शन से कोई संबंध नहीं है।

TIME_WAIT को सीधे ACK पैकेट भेजने का इंतजार नहीं है; यह CLOSE_WAIT और FIN_WAIT राज्यों द्वारा संचालित है। जब आप TIME_WAIT पर जाते हैं, तो सॉकेट पहले से ही बंद है।

संदर्भ: http://www.tcpipguide.com/free/t_TCPConnectionTermination-3.htm https://en.wikipedia.org/wiki/Maximum_segment_lifetime http://www.lognormal.com/blogspot.com//09/27/ लिनक्स tcpip ट्यूनिंग /

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.