มีพื้นเพมาจาก: http://rtomaszewski.blogspot.sk/2012/11/how-to-forcibly-kill-established-tcp.html
หากต้องการ "ฆ่า" ซ็อกเก็ตคุณต้องส่งแพ็กเก็ต TCP รีเซ็ต ในการส่ง (และได้รับการยอมรับจากอีกด้านหนึ่ง) คุณต้องรู้หมายเลขลำดับ TCP จริง
1) tcpkill
วิธีที่กล่าวถึงแล้วเรียนรู้หมายเลข SEQ โดยการดมกลิ่นในเครือข่ายและรอแพ็กเก็ตที่ถูกต้องของการเชื่อมต่อนี้ที่จะมาถึง จากนั้นจะใช้หมายเลข SEQ ที่เรียนรู้เพื่อส่งแพ็กเก็ต RSET ไปยังทั้งสองฝั่ง อย่างไรก็ตามหากการเชื่อมต่อไม่ได้ใช้งาน / ถูกแขวนและไม่มีกระแสข้อมูลจะไม่ทำอะไรเลยและจะรอตลอดไป
2) วิธีอื่นใช้สคริปต์ Perl ที่เรียกว่าkillcx
( ลิงก์ไปยัง Sourceforge ) สิ่งนี้จะส่งแพ็คเก็ต SYN ปลอมแปลงอย่างแข็งขันและเรียนรู้หมายเลข SEQ จากคำตอบ จากนั้นจะส่งแพ็คเก็ต RSet tcpkill
เช่นเดียวกับ
อีกวิธีหนึ่ง (ขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ) คือการใช้gdb
ดีบักเกอร์เพื่อแนบกับกระบวนการที่เป็นเจ้าของซ็อกเก็ต / การเชื่อมต่อนี้และออกclose()
syscall ในนามของมัน - ดังรายละเอียดในคำตอบนี้
หากคุณต้องการจัดการกับการเชื่อมต่อแบบแขวนคอ (อีกด้านหนึ่งตาย) มีการหมดเวลาต่างๆ (TCP keepalive เป็นต้น) ซึ่งควรปิดการเชื่อมต่อดังกล่าวโดยอัตโนมัติหากกำหนดค่าไว้อย่างถูกต้องในระบบ
ss
คำสั่งนั้นง่ายกว่าและทั่วไปกว่าคำสั่งอื่น ๆ