Apakah status CLOSE_WAIT dan TIME_WAIT?

166

Ketika saya melakukannya netstat -adi mesin Windows saya, saya mendapatkan daftar port dengan salah satu dari empat negara:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Apa yang dimaksud CLOSE_WAITdan TIME_WAITdiindikasikan?

Lazer
sumber
lihat 'man netstat', gulir ke bawah ke bagian negara: linux.die.net/man/8/netstat
MaQleod
1
Plug - in tanpa malu-malu ke jawaban tentang Kesalahan Server saudari kita .
Hennes
Situs lintas korban penipuan: askubuntu.com/questions/538443/...
Mokubai

Jawaban:

179

Karena cara TCP / IP bekerja, koneksi tidak dapat segera ditutup. Paket mungkin tiba rusak atau dikirim ulang setelah koneksi ditutup. CLOSE_WAIT menunjukkan bahwa titik akhir jarak jauh (sisi lain koneksi) telah menutup koneksi. TIME_WAIT menunjukkan bahwa titik akhir lokal (sisi ini) telah menutup koneksi. Koneksi sedang dijaga agar setiap paket yang tertunda dapat dicocokkan dengan koneksi dan ditangani dengan tepat. Koneksi akan dihapus ketika waktu habis dalam waktu empat menit. Lihat http://en.wikipedia.org/wiki/Transmission_Control_Protocol untuk lebih jelasnya.

BillThor
sumber
Tapi bukankah ini berarti bahwa, bahkan jika paket tiba setelah fungsi kembali, mereka akan tetap dibuang oleh aplikasi?
MonsterMMORPG
@MonsterMMORPG Paket yang keluar dari urutan setelah koneksi ditutup akan ditangani oleh tumpukan jaringan. Ini biasanya dapat dibuang dengan aman sesuai dengan aturan paket duplikat normal. Paket yang tampaknya terkait dengan koneksi aktif yang tidak dikenal biasanya dibuang, dan menghasilkan respons. Status WAIT melindungi dari lalu lintas ini.
BillThor
29

Pada dasarnya "WAIT" menyatakan bahwa satu sisi menutup koneksi tetapi konfirmasi akhir dari penutupan masih tertunda.

Lihat misalnya diagram status TCP ini untuk perincian:

http://www.jxos.org/Projects/TCP/tcpstate.html

sleske
sumber
14
Ini menjelaskan CLOSE_WAIT secara akurat tetapi bukan TIME_WAIT. TIME_WAIT menunjukkan bahwa aplikasi lokal menutup koneksi, dan pihak lain mengakui dan mengirim FIN sendiri. Kami sekarang menunggu paket duplikat liar yang dapat mengganggu pengguna baru dari port yang sama.
Chris Smowton
1
@ ChrisSmowton, Jadi siapa yang menggunakan terminologi yang tepat? Diagram atau netstat? ( lih. )
Pacerier
@Pacerier Saya pikir mereka cocok - di mana Anda pikir mereka tidak setuju?
Chris Smowton
@ChrisSmowton Jadi ini berarti pemilik port berikutnya dapat memperoleh byte tambahan dan itu dapat merusak respons jika kita menetapkan TIME_WAIT = 0?
MonsterMMORPG
Mungkin tetapi sangat tidak mungkin, karena nomor urut harus cocok untuk aplikasi untuk melihat paket jahat disambungkan ke aliran, atau penerima perlu buffer paket yang tampaknya keluar dari pesanan sampai nomor urut yang tepat muncul. Saya tidak cukup tahu tentang implementasi praktis untuk memberi tahu Anda apakah yang terakhir ini dilakukan dalam praktik.
Chris Smowton
1

TIME_WAIT mewakili menunggu waktu yang cukup untuk memastikan bahwa TCP jarak jauh menerima ACK dari permintaan FIN-nya. Lihat en.wikipedia.org/wiki/Transmission_Control_Protocol (dan juga RFC 793)

Denio Mariz
sumber
1
Apa yang ini tambahkan ke informasi yang disediakan oleh jawaban yang ada?
fixer1234
Menambahkan referensi ke RFC 793
Denio Mariz