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):

  1. SYN: Klien mengirim segmen TCP dengan flag SYN (Synchronize) aktif dan sebuah Initial Sequence Number (ISN) acak. Ini adalah permintaan untuk membuka koneksi.
  2. 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).
  3. 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:

  1. FIN: Klien (atau pihak mana pun yang ingin menutup) mengirim segmen dengan flag FIN aktif.
  2. 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.
  3. FIN: Ketika pihak kedua juga sudah selesai mengirim data, ia akan mengirim segmen FIN-nya sendiri.
  4. ACK: Pihak pertama merespons dengan ACK terakhir. Setelah menunggu beberapa saat (status Timed Wait), koneksi di kedua sisi akhirnya benar-benar ditutup.

Summary

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.