Saya mencoba mencari tahu mengapa koneksi TCP / IP aplikasi saya terus tersendat setiap 10 menit (tepatnya, dalam 1-2 detik). Saya menjalankan Wireshark dan menemukan bahwa setelah 10 menit tidak aktif, ujung lainnya mengirim paket dengan set flag reset (RST). Pencarian google memberi tahu saya "tanda RESET menandakan bahwa penerima telah menjadi bingung dan ingin membatalkan koneksi" tetapi itu sedikit kurang dari detail yang saya butuhkan. Apa yang menyebabkan ini? Dan apakah mungkin bahwa beberapa router di sepanjang jalan yang bertanggung jawab untuk itu atau apakah ini selalu datang dari titik akhir yang lain?
Sunting: Ada sebuah router (khususnya Linksys WRT-54G) yang berada di antara komputer saya dan titik akhir lainnya - apakah ada yang harus saya cari di pengaturan router?
sumber
Jawaban:
Sebuah 'router' dapat melakukan apa saja - terutama NAT, yang mungkin melibatkan sejumlah bug yang dipenuhi bug dengan lalu lintas ...
Salah satu alasan perangkat akan mengirim RST adalah sebagai tanggapan atas penerimaan paket untuk soket tertutup.
Sulit untuk memberikan jawaban yang tegas tetapi umum, karena setiap kemungkinan penyimpangan telah dikunjungi pada TCP sejak awal, dan semua jenis orang mungkin memasukkan RST dalam upaya untuk memblokir lalu lintas. (Beberapa 'firewall nasional' berfungsi seperti ini, misalnya.)
sumber
Jalankan packet sniffer (misalnya, Wireshark) juga di peer untuk melihat apakah peer yang mengirim RST atau seseorang di tengah.
sumber
Saya baru saja menghabiskan beberapa waktu untuk memecahkan masalah ini. Tidak ada solusi yang diusulkan yang berhasil. Ternyata sysadmin kami secara tidak sengaja menetapkan IP statis yang sama ke dua server yang tidak terkait milik grup yang berbeda, tetapi duduk di jaringan yang sama. Hasil akhirnya adalah koneksi vnc terputus, browser yang harus di-refresh beberapa kali untuk mengambil halaman web, dan hal-hal aneh lainnya.
sumber
Beberapa firewall melakukannya jika sambungan menganggur selama x beberapa menit. Beberapa ISP mengatur router mereka untuk melakukan itu karena berbagai alasan juga.
Di zaman sekarang ini, Anda harus dengan anggun menangani (membangun kembali sesuai kebutuhan) kondisi itu.
sumber
RST dikirim oleh sisi yang melakukan tutup aktif karena itu adalah sisi yang mengirimkan ACK terakhir. Jadi jika menerima FIN dari sisi yang melakukan penutupan pasif dalam keadaan yang salah, ia mengirimkan paket RST yang menunjukkan sisi lain bahwa kesalahan telah terjadi.
sumber
Jika ada router yang melakukan NAT, terutama router low end dengan sumber daya yang sedikit, maka sesi TCP terlama akan berusia terlebih dahulu. Untuk melakukan ini, ia menetapkan
RST
bendera dalam paket yang secara efektif memberi tahu stasiun penerima untuk (sangat ungracefully) menutup koneksi. ini dilakukan untuk menghemat sumber daya.sumber
Satu hal yang harus diperhatikan adalah banyak firewall netfilter Linux yang salah konfigurasi.
Jika Anda memiliki sesuatu seperti:
-A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
-A MAJU -p tcp -j TOLAK --tolak-dengan tcp-reset
maka penyusunan ulang paket dapat mengakibatkan firewall menganggap paket tidak valid dan dengan demikian menghasilkan setel ulang yang kemudian akan memutus koneksi yang sehat.
Penataan ulang kemungkinan besar terjadi dengan jaringan nirkabel.
Ini seharusnya:
-A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A MAJU -p tcp -j TOLAK --tolak-dengan tcp-reset
Pada dasarnya kapan pun Anda memiliki:
... -m state --state RELATED, ESTABLISHED -j ACCEPT
itu harus segera diikuti oleh:
... -m state --state INVALID -j DROP
Lebih baik membuang paket kemudian menghasilkan protokol yang berpotensi mengganggu pengaturan ulang tcp. Penyetelan ulang lebih baik jika terbukti mengirim hal yang benar ... karena ini menghilangkan batas waktu. Tetapi jika ada kemungkinan mereka tidak valid maka mereka dapat menyebabkan rasa sakit seperti ini.
sumber
Ini karena ada proses lain di jaringan yang mengirimkan RST ke koneksi TCP Anda.
Biasanya RST akan dikirim dalam kasus berikut
Dalam kasus Anda, sepertinya sebuah proses sedang menghubungkan koneksi Anda (IP + port) dan terus mengirimkan RST setelah membuat koneksi.
sumber