Berasal dari: http://rtomaszewski.blogspot.sk/2012/11/how-to-forcibly-kill-established-tcp.html
Untuk "membunuh" soket, Anda harus mengirim paket reset TCP. Untuk mengirimnya (dan diterima oleh pihak lain), Anda harus mengetahui nomor urut TCP yang sebenarnya.
1) Metode yang telah disebutkan tcpkill
mempelajari nomor SEQ dengan mengendus secara pasif pada jaringan dan menunggu paket yang valid dari koneksi ini tiba. Kemudian ia menggunakan nomor SEQ yang dipelajari untuk mengirim paket RSET ke kedua sisi. Namun jika koneksi idle / hanged dan tidak ada data yang mengalir, itu tidak akan melakukan apa-apa dan akan menunggu selamanya.
2) Metode lain menggunakan skrip perl yang disebut killcx
( tautan ke Sourceforge ). Ini secara aktif mengirimkan paket-paket SYN palsu dan mempelajari nomor SEQ dari jawabannya. Ini kemudian mengirimkan paket RSET dengan cara yang sama seperti tcpkill
.
Cara lainnya (berdasarkan apa yang ingin Anda capai) adalah menggunakan gdb
debugger untuk melampirkan proses yang memiliki soket / koneksi ini dan mengeluarkan close()
syscall atas namanya - sebagaimana dirinci dalam jawaban ini .
Jika Anda hanya ingin berurusan dengan koneksi yang digantung (sisi lain sudah mati), ada berbagai timeout (TCP keepalive misalnya), yang akan secara otomatis menutup koneksi tersebut jika dikonfigurasi dengan benar pada sistem.
ss
perintah jauh lebih mudah dan lebih umum daripada yang lain.