Mencari di Wireshark, saya sering melihat TCP Streams diakhiri dengan RST, paket ACK bukan paket RST. ada yang tahu mengapa ini?
Contoh dari apa yang saya lihat:
SYN SYN, ACK ... data ... RST, ACK
Wireshark tidak mengambil paket RST sebelum paket RST, ACK.
Jawaban:
RST / ACK bukan merupakan pengakuan RST, sama seperti SYN / ACK bukan merupakan pengakuan dari SYN. Pembentukan TCP sebenarnya adalah proses empat arah: Inisiasi host mengirimkan SYN ke host penerima, yang mengirimkan ACK untuk SYN itu. Host penerima mengirim SYN ke host yang memulai, yang mengirim ACK kembali. Ini membangun komunikasi stateful.
Untuk membuat ini lebih efisien, host penerima dapat ACK SYN, dan mengirim SYN sendiri dalam paket yang sama, menciptakan proses tiga arah yang biasa kita lihat.
Dalam hal RST / ACK, Perangkat mengakui data apa pun yang dikirim dalam paket sebelumnya dalam urutan dengan ACK dan kemudian memberi tahu pengirim bahwa koneksi telah ditutup dengan RST. Perangkat ini hanya menggabungkan dua paket menjadi satu, seperti SYN / ACK. RST / ACK biasanya bukan respons normal dalam menutup sesi TCP, tapi itu juga tidak mengindikasikan masalah.
sumber
RST ACK
respons ke alamat sumber yang dipalsukan.Setelah koneksi dibuat, semua paket harus memiliki ACK yang diatur dan cocok dengan nomor urut paket yang diterima untuk transportasi / keamanan yang dapat diandalkan. RST tanpa ACK tidak akan diterima. Ketika satu sisi mengirim RST, soket segera ditutup dan sisi penerima juga segera menutup soket setelah menerima RST yang valid. Tidak perlu dan tidak bisa diakui.
setelah jabat tangan TCP
A ---> B Syn = x, Ack = y, len = z, ACK Flag
B ---> A Syn = y, Ack = x + z, len = o, ACK Flag
A ---> B Syn = x + z, Ack = y + o, len = p, ACK Flag
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, ACK Flag
B menutup soket setelah mengirim paket terakhir dan A menutup soket setelah menerimanya.
(tidak mempertimbangkan jendela TCP di sini, atau mungkin ada lebih banyak paket dari satu ujung sebelum acknoledgement)
Bendera ACK, nomor pengakuan, dan prosedur pengakuan terkait tetapi bukan hal yang sama.
Per RFC793
Nomor Pengakuan: 32 bit
Atur Ulang Pemrosesan
Di semua negara kecuali SYN-SENT, semua segmen reset (RST) divalidasi dengan memeriksa bidang SEQ mereka. Reset akan valid jika nomor urutnya ada di jendela. Dalam keadaan SYN-SENT (RST yang diterima sebagai tanggapan terhadap SYN awal), RST dapat diterima jika bidang ACK mengakui SYN.
Penerima RST pertama memvalidasinya, lalu berubah status. Jika penerima dalam status DENGARKAN, itu mengabaikannya. Jika penerima dalam keadaan SYN-RECEIVED dan sebelumnya berada dalam keadaan LISTEN, maka penerima kembali ke keadaan LISTEN, jika tidak penerima membatalkan koneksi dan pergi ke keadaan TERTUTUP. Jika penerima dalam keadaan lain, itu membatalkan koneksi dan menyarankan pengguna dan pergi ke keadaan TUTUP.
sumber