The TCP's Three-Way Handshake

Transmission Control Protocol (TCP) menggunakan proses Three-Way Handshake untuk membangun koneksi antara client dan server. Sebelum data dapat ditransmisikan di antara keduanya (baca juga Bagaimana Website dapat diakses di Browser?), proses "handshake" ini harus dilakukan terlebih dahulu untuk memastikan bahwa kedua belah pihak telah menyepakati parameter komunikasi seperti nomor urut (sequence number). Proses ini memastikan bahwa client dan server telah tersinkronisasi dengan baik dan siap untuk berkomunikasi satu sama lain secara andal. Setelah proses handshake ini selesai, TCP akan memulai fungsinya dalam mengirimkan data. Dalam artikel ini, kita akan membahas secara rinci proses Three-Way Handshake dalam TCP untuk membangun koneksi antara client dan server.

APA ITU TCP SEGMENT?

Ketika client dan server ingin berkomunikasi, keduanya perlu membangun koneksi yang andal di antara mereka dengan mengirimkan unit data, yaitu TCP segment. Segmen ini terdiri dari dua bagian utama: header dan data.

Ilustrasi header TCL
Ilustrasi struktur header TCP. Sumber: www.geeksforgeeks.org.
STRUKTUR TCP SEGMENT
  • Header: Bagian ini berisi informasi kontrol dan meta-data yang diperlukan untuk mengelola transmisi data. Panjang header TCP bervariasi antara 20 hingga 60 byte, tergantung pada opsi yang digunakan. Jika tanpa opsi tambahan, panjang header adalah 20 byte. Header dapat diperpanjang hingga 40 byte lagi jika ada opsi-opsi tertentu. Header TCP mencakup beberapa parameter penting, antara lain:
    • Source Port Address: Parameter 16 bit (2 byte) yang menunjukkan port asal dari sisi client yang mengirimkan data segment. Ini digunakan untuk mengidentifikasi aplikasi atau proses tertentu pada client yang menginisiasi komunikasi. Nilai ini harus unik dalam konteks perangkat pengirim untuk menghindari bentrokan dengan aplikasi atau layanan lain yang mungkin menggunakan port yang sama.
    • Destination Port Address: Parameter 16 bit (2 byte) yang menunjukkan port tujuan dari sisi server yang menerima data segment dari client. Ini digunakan untuk mengidentifikasi aplikasi atau layanan tertentu pada server yang akan menangani data yang diterima. Misalnya, port 80 biasanya digunakan untuk HTTP, dan port 443 untuk HTTPS.
    • Sequence Number: Parameter 32 bit (4 byte) yang berisi nomor urut data. Nomor ini digunakan untuk memastikan data dapat diurutkan kembali dengan benar ketika diterima oleh penerima. Saat koneksi pertama kali dibuat, TCP memilih nomor urut awal (Initial Sequence Number atau ISN) yang digunakan untuk sinkronisasi. Setelah itu, setiap byte yang dikirim akan meningkatkan nomor urut ini, sehingga penerima dapat memastikan semua data diterima tanpa kehilangan paket.
    • Acknowledgment Number: Parameter 32 bit (4 byte) yang digunakan untuk mengonfirmasi penerimaan data dari pengirim. Angka ini menunjukkan nomor byte berikutnya yang diharapkan akan diterima oleh penerima, sehingga dapat mengidentifikasi apakah ada data yang hilang selama transmisi. Ini juga berfungsi untuk mengonfirmasi penerimaan data sebelumnya dan menjaga aliran data tetap konsisten dan terkoordinasi antara client dan server.
    • Header Length (HLEN): Parameter 4 bit yang menunjukkan panjang header TCP dalam satuan 32-bit (4 byte) kata (word). Panjang ini dibutuhkan untuk mengetahui di mana data payload dimulai setelah bagian header. Nilai ini penting untuk penerima agar dapat membedakan data sebenarnya dari header dan memproses data dengan benar.
    • Control Flags: Terdiri dari enam flag yang berfungsi untuk mengontrol berbagai aspek transmisi:
      • URG: Menandakan bahwa urgent pointer valid.
      • ACK: Menandakan bahwa acknowledgment number valid.
      • PSH: Meminta agar data diteruskan ke aplikasi penerima sesegera mungkin.
      • RST: Mengatur ulang koneksi.
      • SYN: Digunakan untuk sinkronisasi nomor urut selama pembentukan koneksi.
      • FIN: Digunakan untuk mengakhiri koneksi.
    • Window Size: Parameter 16 bit (2 byte) yang menyatakan ukuran buffer data yang dapat diterima oleh penerima pada satu waktu tanpa perlu menerima acknowledgment lebih lanjut. Ini digunakan untuk kontrol aliran data.
    • Checksum: Parameter 16 bit (2 byte) yang digunakan untuk mendeteksi kesalahan yang terjadi selama transmisi data dari pengirim ke penerima. Nilai checksum ini memastikan bahwa data yang diterima oleh penerima adalah sama dengan data yang dikirim oleh pengirim dengan membandingkan nilai checksum yang dihitung ulang oleh penerima dengan yang ada di segmen data.
    • Urgent Pointer: Parameter yang menunjukkan lokasi akhir data yang harus diproses segera (urgent data). Urgent pointer digunakan bersama dengan URG flag untuk menandai data penting yang perlu diprioritaskan pemrosesannya di luar urutan normal aliran data.
  • Data: Bagian ini berisi data aplikasi yang sedang ditransmisikan dari pengirim ke penerima. Data ini mengikuti header dan merupakan bagian dari pesan yang dikirim oleh TCP.
MEMULAI HANDKSHAKE PROCESS

Proses Three-Way Handshake dilakukan melalui tiga langkah berikut:

  • Langkah 1 (SYN): Client mengirimkan TCP segment dengan flag SYN kepada server. Segmen ini berisi Initial Sequence Number (ISN) dari client. Ini merupakan permintaan untuk memulai koneksi dan sinkronisasi nomor urut.
  • Langkah 2 (SYN-ACK): Server menerima permintaan dari client dan membalas dengan mengirimkan TCP segment dengan flag SYN-ACK. Segmen ini berisi acknowledgment number, yaitu ISN dari client + 1, serta ISN dari server.
  • Langkah 3 (ACK): Client menerima segmen SYN-ACK dari server dan merespons dengan mengirimkan segmen terakhir dengan flag ACK. Ini menunjukkan bahwa client telah menerima ISN dari server dan siap memulai transmisi data.
Ilustrasi handshake
Ilustrasi proses three-way handshake pada TCP. Sumber: www.geeksforgeeks.org.

Setelah ketiga langkah ini selesai, koneksi TCP dianggap telah terbangun dan siap digunakan untuk transmisi data. Proses Three-Way Handshake memastikan bahwa kedua belah pihak (client dan server) telah menyetujui parameter komunikasi dan siap untuk bertukar data dengan urutan yang benar. Proses ini menjamin transmisi data yang andal dan mengatur bagaimana data diproses dan dikirim antara dua titik dalam jaringan.

Komentar

Postingan Populer