मूल रूप से: http://rtomaszewski.blogspot.sk/2012/11/how-to-forcibly-kill-established-tcp.html
सॉकेट को "मारने" के लिए, आपको एक टीसीपी रीसेट पैकेट भेजना होगा। इसे भेजने के लिए (और दूसरी तरफ से स्वीकार किया जाना चाहिए), आपको वास्तविक टीसीपी अनुक्रम संख्या पता होना चाहिए।
1) पहले से ही उल्लिखित tcpkill
विधि नेटवर्क पर निष्क्रिय रूप से सूँघकर एसईक्यू नंबर सीखती है और इस कनेक्शन के वैध पैकेट के आने की प्रतीक्षा करती है। फिर यह दोनों पक्षों को RSET पैकेट भेजने के लिए सीखे गए SEQ नंबर का उपयोग करता है। हालाँकि यदि कनेक्शन निष्क्रिय है / लटका हुआ है और कोई डेटा प्रवाहित नहीं है, तो यह कुछ भी नहीं करेगा और हमेशा के लिए प्रतीक्षा करेगा।
2) एक अन्य विधि perl स्क्रिप्ट का उपयोग करती है जिसे killcx
( Sourceforge के लिए लिंक ) कहा जाता है । यह सक्रिय रूप से स्पूफ किए गए SYN पैकेट भेजता है और उत्तर से SEQ नंबर सीखता है। इसके बाद यह उसी तरह से RSET पैकेट भेजता है tcpkill
।
वैकल्पिक रूप से दृष्टिकोण (जो आप प्राप्त करना चाहते हैं उसके आधार पर) gdb
इस सॉकेट / कनेक्शन के स्वामित्व वाली प्रक्रिया में संलग्न करने के लिए डिबगर का उपयोग करना है और close()
अपनी ओर से syscall जारी करना है - जैसा कि इस उत्तर में विस्तृत है ।
यदि आप केवल लटके हुए कनेक्शन (दूसरा पक्ष मर चुका है) से निपटना चाहते हैं, तो विभिन्न समयबाह्य हैं (उदाहरण के लिए टीसीपी रखने योग्य), जो सिस्टम पर ठीक से कॉन्फ़िगर होने पर ऐसे कनेक्शन को स्वचालित रूप से बंद कर देना चाहिए।
ss
कमांड का उपयोग करने पर जवाब दूसरों की तुलना में बहुत आसान और अधिक सामान्य है।