Back to IF2230 Jaringan Komputer
Topic
Questions/Cues
- Apa saja layanan yang ditawarkan TCP?
- Apa beda byte-stream & segmen?
- Apa itu Flow Control vs Congestion Control?
- Apa saja field penting di header TCP?
- Apa fungsi Sequence & ACK Number?
- Apa fungsi dari flag TCP (SYN, ACK, FIN)?
- Bagaimana cara kerja 3-Way Handshake?
- Bagaimana cara menutup koneksi TCP?
Reference Points
- Slides 25, 38
- Slides 28, 29
- Slide 27
- Slides 30-34
- Slides 31, 50-52
- Slides 34, 66-67
- Slide 35
- Slide 37
Layanan dan Konsep Dasar TCP
Layanan Utama TCP (Transmission Control Protocol): Tidak seperti UDP, TCP dirancang untuk menyediakan layanan komunikasi yang sangat andal.
- Reliable (Andal): Menjamin data sampai tanpa error, tidak hilang, dan sesuai urutan.
- Connection-Oriented (Berbasis Koneksi): Harus ada proses “jabat tangan” (handshake) untuk membangun koneksi logis sebelum data dapat dikirim.
- Byte-Stream Service (Layanan Aliran Byte): Bagi aplikasi, koneksi TCP terlihat seperti sebuah aliran data dua arah yang kontinu, seperti membaca atau menulis dari sebuah file, tanpa perlu tahu batasan-batasan paket di bawahnya.
Byte-Stream vs. Segmen:
- Aplikasi menulis data sebagai aliran byte (byte-stream) ke dalam send buffer TCP.
- TCP mengambil data dari buffer ini dan membungkusnya ke dalam unit-unit paket yang disebut segmen untuk dikirim melalui jaringan.
- Di sisi penerima, TCP mengeluarkan data dari segmen dan menempatkannya di receive buffer, di mana aplikasi dapat membacanya kembali sebagai byte-stream.
Flow Control vs. Congestion Control:
- Flow Control: Mekanisme untuk mencegah pengirim membanjiri buffer penerima. Ini adalah masalah antara dua titik akhir (end-to-end).
- Congestion Control: Mekanisme untuk mencegah terlalu banyak data yang disuntikkan ke dalam jaringan, yang bisa menyebabkan switch atau link kewalahan. Ini adalah masalah kestabilan jaringan secara keseluruhan.
Header TCP: Mesin Keandalan
Header TCP jauh lebih kompleks dari UDP karena harus membawa informasi untuk manajemen koneksi, keandalan, dan flow control.
- Source & Destination Port (16-bit each): Mengidentifikasi proses aplikasi pengirim dan penerima.
- Sequence Number (32-bit): Nomor urut byte pertama dalam segmen data. Jika flag SYN aktif, ini adalah Initial Sequence Number (ISN). Perhitungan dilakukan per byte, bukan per segmen.
- Acknowledgment Number (32-bit): Jika flag ACK aktif, field ini berisi sequence number dari byte berikutnya yang diharapkan oleh pengirim ACK. Ini secara implisit memberitahu bahwa semua byte sebelumnya telah diterima dengan baik.
- Header Length (4-bit): Menunjukkan panjang header TCP dalam kelipatan 32-bit (4-byte). Minimum 5 (20 byte), maksimum 15 (60 byte).
- Flags (6-bit): Bit kontrol yang sangat penting:
- SYN: Digunakan untuk memulai (sinkronisasi) koneksi.
- ACK: Menandakan bahwa field Acknowledgment Number valid.
- FIN: Digunakan oleh pengirim untuk menandakan tidak ada lagi data yang akan dikirim (mengakhiri koneksi).
- RST: Mereset koneksi secara paksa, biasanya karena ada error.
- PSH: Mendorong penerima untuk segera menyerahkan data ke aplikasi.
- URG: Menandakan ada data darurat (urgent).
- Receive Window (16-bit): Digunakan untuk flow control. Memberitahu pengirim berapa banyak byte yang masih tersedia di buffer penerima.
Manajemen Koneksi: Siklus Hidup TCP
Membangun Koneksi (Three-Way Handshake):
- SYN: Klien mengirim segmen TCP dengan flag SYN (Synchronize) aktif dan sebuah Initial Sequence Number (ISN) acak. Ini adalah permintaan untuk membuka koneksi.
- SYN-ACK: Server merespons dengan segmen yang memiliki flag SYN dan ACK aktif. Server membuat ISN-nya sendiri dan mengirim ACK untuk ISN klien (dengan menambahkan 1).
- ACK: Klien merespons kembali dengan segmen yang memiliki flag ACK aktif. ACK ini memberitahukan penerimaan ISN dari server. Setelah ini, koneksi dianggap terbuka (established) dan transfer data dapat dimulai.
Menutup Koneksi:
- FIN: Klien (atau pihak mana pun yang ingin menutup) mengirim segmen dengan flag FIN aktif.
- ACK: Pihak lain merespons dengan ACK untuk mengonfirmasi penerimaan permintaan FIN. Pada titik ini, koneksi masuk ke kondisi setengah-tertutup (half-closed); pihak yang menerima FIN masih bisa mengirim data.
- FIN: Ketika pihak kedua juga sudah selesai mengirim data, ia akan mengirim segmen FIN-nya sendiri.
- ACK: Pihak pertama merespons dengan ACK terakhir. Setelah menunggu beberapa saat (status Timed Wait), koneksi di kedua sisi akhirnya benar-benar ditutup.
TCP menyediakan layanan komunikasi yang andal dan berorientasi koneksi dengan memperlakukan data sebagai aliran byte (byte-stream). Keandalannya dimungkinkan oleh header TCP yang kompleks, terutama penggunaan Sequence Number dan Acknowledgment Number. Siklus hidup koneksi diatur secara ketat melalui proses Three-Way Handshake untuk memulai koneksi dan prosedur penutupan berbasis FIN/ACK untuk mengakhirinya.
Additional Information (Optional)
Randomisasi Initial Sequence Number (ISN)
- ISN tidak dimulai dari 0 atau 1, melainkan dipilih secara acak. Ini adalah mekanisme keamanan yang krusial untuk mencegah serangan TCP Session Hijacking. Jika ISN dapat diprediksi, penyerang bisa dengan mudah memalsukan segmen dan menyamar sebagai salah satu pihak dalam koneksi yang sudah terjalin.
State Machine TCP
- Seluruh siklus hidup koneksi TCP (mulai dari
CLOSED,LISTEN,SYN_SENT,ESTABLISHED,FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT, dll.) dapat digambarkan secara formal menggunakan sebuah Finite State Machine (FSM). Memahami diagram FSM ini memberikan gambaran yang sangat detail tentang bagaimana TCP menangani setiap kemungkinan skenario dalam manajemen koneksi.Eksplorasi Mandiri
- Analisis Handshake di Wireshark: Jalankan Wireshark, lalu gunakan command
curl http://example.comdi terminal Anda. Filter dengantcp. Anda akan dapat melihat dengan jelas tiga paket pertama yang merupakan prosesSYN,SYN-ACK, danACK. Periksa nilai Sequence Number dan Acknowledgment Number pada setiap paket untuk melihat bagaimana mereka berhubungan.


