Apa yang dimaksud dengan "koneksi reset by peer"?

648

Apa arti dari kesalahan "reset reset by peer" pada koneksi TCP? Apakah itu kesalahan fatal atau hanya pemberitahuan atau terkait dengan kegagalan jaringan?

Franck Freiburger
sumber

Jawaban:

771

Itu fatal. Server jarak jauh telah mengirimi Anda paket RST, yang menunjukkan koneksi langsung terputus, bukan jabat tangan biasa. Ini melewati transisi keadaan setengah tertutup normal. Saya suka deskripsi ini :

"Koneksi reset oleh rekan" adalah setara TCP / IP membanting telepon kembali pada hook. Ini lebih sopan daripada tidak membalas, meninggalkan satu menggantung. Tapi itu bukan FIN-ACK yang diharapkan dari converseur TCP / IP yang benar-benar sopan.

ire_and_curses
sumber
49
Mengapa diberi label "koneksi reset oleh rekan "? Sepertinya itu harus "koneksi reset oleh tuan rumah", atau "koneksi reset oleh server"
Robert
27
@ Robert Karena dari situlah reset berasal. Rekan mengirim paket RST.
Marquis of Lorne
106
... Robert, kekhawatiranmu tidak masuk akal bagiku. Rekan hanya lebih umum dari itu. Dalam model client-server yang khas, server dapat dengan mudah menerima notifikasi ini dari "klien". Mesin yang awalnya meminta koneksi memiliki kekuatan yang sama untuk mengirim pemberitahuan ini. Pada level TCP, tampilannya identik setelah koneksi berlangsung. Dua mesin, saat berkomunikasi, hanya sebaya.
codetaku
9
Paket ini bisa saja dikirim oleh perangkat lain di tengah seperti router?
Arnold Roa
3
Itu tidak dapat disebut 'koneksi reset oleh server' karena dapat dikirim oleh klien atau server. Itu tidak bisa 'dilewati'. Jika klien menerima kesalahan ini, ini berarti koneksi TCP tidak lagi terbuka di server, misalnya karena server macet dan dimulai kembali.
Johannes Overmann
193

Ini berarti bahwa TCP RST telah diterima dan koneksi sekarang ditutup. Ini terjadi ketika sebuah paket dikirim dari ujung koneksi Anda tetapi ujung lainnya tidak mengenali koneksi; itu akan mengirim kembali paket dengan bit RST yang diatur untuk menutup koneksi secara paksa.

Ini bisa terjadi jika pihak lain macet dan kemudian muncul kembali atau jika ia memanggil close()soket saat ada data dari Anda dalam perjalanan, dan ini merupakan indikasi bagi Anda bahwa beberapa data yang sebelumnya Anda kirim mungkin belum diterima.

Terserah Anda apakah itu kesalahan; jika informasi yang Anda kirim hanya untuk kepentingan klien jarak jauh, maka tidak masalah bahwa data akhir apa pun mungkin telah hilang. Namun Anda harus menutup soket dan membebaskan sumber daya lain yang terkait dengan koneksi.

mark4o
sumber
11
Jika Anda menetapkan opsi soket SO_LINGER ke nol saat membuka soket baru, kemudian tutup dengan normal, bit RST akan ditetapkan. Jadi SEMUA koneksi akan berakhir dengan reset. Jangan coba ini di rumah, itu hanya mengganggu. stackoverflow.com/questions/3757289
Chris Huang-Leaver
1
Bagaimana cara memperbaiki masalah ini, apakah kita perlu me-restart remote dan host kita?
user2225190
3
@ user2225190 Anda harus menghubungkan kembali klien, tetapi pertama-tama Anda perlu memeriksa perangkat lunak Anda untuk memastikan itu bukan karena kesalahan protokol aplikasi, yaitu menutup koneksi yang ujungnya masih menulis.
Marquis of Lorne
1
Terima kasih atas komentar Anda. Dulu bekerja selama dua bulan. Saya juga mencobanya dari baris perintah, tetapi masih mendapatkan kesalahan ini. Saya mencoba "sftp user @ machine". Kesalahan tidak konsisten.
user2225190