Protokol Kawalan Penghantaran ialah protokol yang sangat penting dalam lapisan pengangkutan untuk model OSI atau TCP/IP. Terdapat banyak kelebihan dalam TCP seperti:
- TCP melakukan penghantaran semula jika mana-mana data yang dihantar tidak diakui oleh penerima dalam beberapa waktu.
- TCP mewujudkan beberapa sambungan sebelum menghantar data. Kami memanggil sambungan itu sebagai jabat tangan 3 hala.
- TCP mempunyai mekanisme kawalan kesesakan.
- TCP boleh mengesan ralat menggunakan beberapa kaedah.
Marilah kita belajar terutamanya mengenai jabat tangan 3 hala TCP. Mari juga belajar tentang medan penting dalam Wireshark untuk jabat tangan 3 hala.
Jabat Tangan 3 Hala
Terdapat tiga pertukaran bingkai yang berlaku dalam jabat tangan 3 hala:
Bingkai pertama sentiasa dihantar oleh klien ke pelayan. Marilah kita memahami perkara ini daripada rajah mudah:
“PELANGGAN” “SERVER”
Frame1: Pelanggan menghantar bingkai SYN ke pelayan-----------------------------------><--------------------------------------------------------Pelayan menghantar bingkai SYN+ACK kepada pelanggan: Frame2
Frame3: Pelanggan menghantar bingkai ACK ke pelayan ------------------------------------>
Kita boleh melihat tiga bingkai ini dalam Wireshark. Penapis 'tcp' boleh digunakan dalam Wireshark untuk melihat semua bingkai TCP. Berikut ialah tangkapan skrin untuk tiga bingkai:
Marilah kita memahami ketiga-tiga bingkai secara terperinci:
SYN
Bingkai ini mengandungi banyak maklumat tentang keupayaan klien untuk memaklumkan pelayan. Tangkapan skrin berikut menunjukkan semua medan penting bingkai SYN:
Berikut ialah medan penting untuk bingkai SYN:
Pelabuhan Sumber: 50602Pelabuhan Destinasi: 80
Nombor Urutan: 0
Nombor Pengakuan: 0
Panjang Pengepala: 32 bait
Bendera: 0x002 (SYN):
Pengakuan: Tidak ditetapkan
Tolak: Tidak ditetapkan
Set semula: Tidak ditetapkan
Syn: Set -----> Set bit ini kerana ini ialah bingkai SYN.
Fin: Tidak ditetapkan
Tetingkap: 65535
Penunjuk Segera: 0
Pilihan TCP - Saiz segmen maksimum: 1460 bait
Pilihan TCP - Skala tetingkap: 3 (darab dengan 8)
Pilihan TCP - SACK dibenarkan
LIHAT+BALIK
Bingkai ini mengandungi banyak maklumat tentang keupayaan pelayan untuk memaklumkan kepada pelanggan. Tangkapan skrin berikut menunjukkan semua medan penting bingkai SYN+ACK:
Bingkai ini juga mengakui bingkai SYN yang dihantar oleh pelanggan.
Berikut ialah medan penting untuk bingkai SYN+ACK:
Pelabuhan Sumber: 80Pelabuhan Destinasi: 50602
Nombor Urutan: 0
Nombor Pengakuan: 1
Panjang Pengepala: 32 bait (8)
Bendera: 0x012 (SYN, ACK)
Pengakuan: Set
Tolak: Tidak ditetapkan
Set semula: Tidak ditetapkan
Dia: Set
Fin: Tidak ditetapkan
Tetingkap: 29200
Penunjuk Segera: 0
Pilihan TCP - Saiz segmen maksimum: 1412 bait
Pilihan TCP - SACK dibenarkan
Pilihan TCP - Skala tetingkap: 7 (darab dengan 128)
Kita dapat melihat bahawa bit 'Acknowledge' dan 'SYN' ditetapkan dalam bingkai ini. Ini kerana bingkai ini ialah SYN+ACK.
ACK
Bingkai ini ialah bingkai terakhir jabat tangan 3 hala dan juga pengakuan SYN+ACK oleh pelanggan. Tangkapan skrin berikut menunjukkan semua medan penting bingkai ACK:
Berikut ialah medan penting untuk bingkai ACK:
Pelabuhan Sumber: 50602Pelabuhan Destinasi: 80
Nombor Urutan: 1
Nombor Pengakuan: 1
Panjang Pengepala: 20 bait (5)
Bendera: 0x010 (ACK)
Urgent: Tidak ditetapkan
Pengakuan: Set
Tolak: Tidak ditetapkan
Set semula: Tidak ditetapkan
Syn: Tidak ditetapkan
Fin: Tidak ditetapkan
Tetingkap: 32768
Di sini, hanya bit 'Akui' ditetapkan kerana ini ialah bingkai ACK.
Penjelasan untuk Beberapa Medan Biasa Penting
Pelabuhan 80 : Kami melihat satu port tetap 80 dalam tutorial ini. Ini kerana ini adalah tangkapan HTTP dan port 80 ditetapkan (sebelah pelayan) untuk komunikasi HTTP.
Nombor Urutan : Nombor jujukan bingkai itu. Penyegerakan ialah bingkai pertama jadi kita mempunyai 0 sebagai nombor urutan.
Bendera TCP:
Pengakuan – Bit ini ditetapkan jika bingkai ialah ACK. Contoh: SYN+ACK, bingkai ACK.
SYN – Bit ini ditetapkan jika bingkai ialah SYN. Contoh: SYN.
Tingkap : Medan ini berkongsi saiz tetingkap maks pengirim dalam mod terima. Contoh: Kami mempunyai saiz tetingkap 65535 bait dalam bingkai SYN. Ini bermakna penerima boleh menerima data TCP maksimum sebanyak 65535 bait pada bila-bila masa.
SACK Dibenarkan : Bit ini ditetapkan jika hantar menyokong SACK [pengakuan terpilih].
Saiz Segmen Maksimum : Kita juga boleh memanggilnya MSS. Ini mentakrifkan bingkai data maksimum yang boleh diterima oleh pengirim. Contoh: Kami mendapat MSS sebagai 1460 bait dalam bingkai SYN.
Kesimpulan
Kami mempelajari tentang jabat tangan 3 hala TCP dan semua medan berguna untuk bingkai SYN, SYN+ACK dan ACK. Jika anda ingin mengetahui lebih lanjut tentang TCP, anda boleh mengikuti pautan RFC ini https://tools.ietf.org/html/rfc793 .