"पीयर द्वारा कनेक्शन रीसेट" का क्या अर्थ है?


648

TCP कनेक्शन पर "सहकर्मी द्वारा कनेक्शन रीसेट" त्रुटि का क्या अर्थ है? क्या यह एक घातक त्रुटि है या सिर्फ एक अधिसूचना या नेटवर्क विफलता से संबंधित है?

जवाबों:


771

यह घातक है। रिमोट सर्वर ने आपको एक आरएसटी पैकेट भेजा है, जो सामान्य हैंडशेक के बजाय कनेक्शन को तत्काल छोड़ने का संकेत देता है। यह सामान्य आधे बंद राज्य संक्रमण को दरकिनार करता है। मुझे यह विवरण पसंद है :

"पीयर द्वारा कनेक्शन रीसेट" हुक पर वापस फोन को स्लैम करने के टीसीपी / आईपी के बराबर है। यह केवल जवाब देने से ज्यादा विनम्र है, एक को छोड़कर। लेकिन यह फिन-एसीके वास्तव में विनम्र टीसीपी / आईपी कन्वर्टर की उम्मीद नहीं है।


49
इसे "कनेक्शन रीसेट पीयर द्वारा कनेक्शन" क्यों कहा जाता है ? ऐसा लगता है कि यह "होस्ट द्वारा कनेक्शन रीसेट", या "सर्वर द्वारा कनेक्शन रीसेट" होना चाहिए
रॉबर्ट

27
@Robert क्योंकि रीसेट जहां से आया है। सहकर्मी ने एक आरएसटी पैकेट भेजा।
लोर्ने की

106
... रॉबर्ट, आपकी चिंता का कोई मतलब नहीं है। सहकर्मी की तुलना में कड़ाई से अधिक सामान्य है। एक विशिष्ट क्लाइंट-सर्वर मॉडल में, सर्वर आसानी से "क्लाइंट" से इस अधिसूचना को प्राप्त कर सकता है। मशीन जो शुरू में कनेक्शन का अनुरोध करती है, उसके पास इस सूचना को भेजने के लिए उतनी ही शक्ति है। एक टीसीपी स्तर पर, कनेक्शन चालू होने के बाद यह समान दिखता है। संचार करते समय दो मशीनें, केवल सहकर्मी हैं।
कोडेटाकु

9
यह पैक राउटर की तरह बीच में किसी अन्य डिवाइस द्वारा भेजा जा सकता था?
अर्नोल्ड रोआ

3
इसे 'सर्वर द्वारा कनेक्शन रीसेट' नहीं कहा जा सकता क्योंकि इसे क्लाइंट या सर्वर द्वारा भेजा जा सकता है। यह 'बायपास' नहीं किया जा सकता है। यदि क्लाइंट को यह त्रुटि मिलती है तो इसका मतलब है कि सर्वर में टीसीपी कनेक्शन अब नहीं खुला है, उदाहरण के लिए चूंकि सर्वर क्रैश हो गया था और फिर से चालू हो गया था।
जोहान्स ओवरमैन

193

इसका मतलब है कि एक टीसीपी आरएसटी प्राप्त हुआ था और कनेक्शन अब बंद हो गया है। यह तब होता है जब कनेक्शन के आपके अंत से एक पैकेट भेजा जाता है, लेकिन दूसरा छोर कनेक्शन को नहीं पहचानता है; यह कनेक्शन को जबरन बंद करने के लिए RST बिट सेट के साथ एक पैकेट वापस भेज देगा।

यह तब हो सकता है जब दूसरा पक्ष दुर्घटनाग्रस्त हो जाता है और फिर वापस आता है या यदि यह कॉल करता है close() सॉकेट पर करता है जबकि ट्रांज़िट में आपसे डेटा है, और यह आपके लिए संकेत है कि आपके द्वारा पहले भेजे गए कुछ डेटा प्राप्त नहीं हुए हैं।

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


11
यदि आप नया सॉकेट खोलते समय सॉकेट विकल्प SO_LINGER को शून्य पर सेट करते हैं, तो इसे सामान्य रूप से बंद करें, RST बिट सेट हो जाएगा। इसलिए सभी कनेक्शन रीसेट के साथ समाप्त हो जाएंगे। यह घर पर कोशिश मत करो, इसकी बस कष्टप्रद है। stackoverflow.com/questions/3757289
क्रिस हुआंग-लीवर

1
फिर इस समस्या को कैसे ठीक किया जाए, क्या हमें दूरस्थ और हमारे मेजबान दोनों को फिर से शुरू करने की आवश्यकता है?
user2225190

3
@ user2225190 आपको क्लाइंट को फिर से कनेक्ट करना होगा, लेकिन पहले आपको यह सुनिश्चित करने के लिए अपने सॉफ़्टवेयर की जांच करने की आवश्यकता है कि यह एप्लिकेशन प्रोटोकॉल त्रुटि के कारण नहीं है, अर्थात एक कनेक्शन को बंद करना जो दूसरे छोर पर अभी भी लिख रहा है।
लोर्न

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