Adakah Sambungan Soket TCP Mempunyai "Keep Alive"?
Tidak seperti HTTP keep-alive, sambungan soket TCP tidak kekal terbuka selama-lamanya . Sebaliknya, ia tertakluk pada had tamat masa yang dikuatkuasakan oleh TCP Keep-Alive.
Pengenalan
Sambungan TCP melibatkan dua soket, setiap satu berada pada satu hujung sambungan. Biasanya, soket ini kekal terbuka sehingga satu hujung menamatkan sambungan, ditunjukkan oleh paket FIN. Walau bagaimanapun, jika penamatan soket yang tidak diingini berlaku, TCP Keep-Alive wujud untuk mengesan dan menutup sambungan lapuk.
Proses Keep-Alive
Pada sistem Linux, TCP Keep-Alive beroperasi dengan tetapan lalai berikut:
Gotchas
Lalai 2 Jam:
Secara lalai , proses Keep-Alive hanya bermula selepas 2 jam tidak aktif, yang mungkin membenarkan sambungan lapuk berterusan.Keep-Alive adalah Pilihan:
Membalas paket Keep-Alive adalah pilihan dan sesetengah pelaksanaan mungkin menggugurkannya.Menukar Tamat Masa TCP
Untuk mengubah suai tamat masa TCP, rujuk arahan khusus OS berikut:
Linux:
Per-soket:
ystem-wide
Gunakan sysctl -w untuk menetapkan net.inet.tcp.[keepidle|keepintvl|keepcnt]System-wide:
Edit nilai pendaftaran dalam HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParametersAtas ialah kandungan terperinci Bagaimanakah TCP Keep-Alive Berfungsi dan Berapa Lama Sambungan Soket Kekal Terbuka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!