Lapisan Transport

Pertemuan 5

Referensi Utama: Kurose & Ross — Computer Networking: A Top-Down Approach (8th Ed)

Dosen Pengampu:

Rajif Agung Yunmar, S.Kom., M.Cs.
I Wayan Wiprayoga Wisesa, S.Kom., M.Kom.
Hartanto Tantriawan, S.Kom., M.Kom.
Ilham Firman Ashari, S.Kom., M.T.

Outline Materi (100 Menit)

Bagian 1: Konsep Transport

  • Layanan Lapisan Transport
  • Multiplexing & Demultiplexing
  • Transport Connectionless: UDP
  • Prinsip Reliable Data Transfer (RDT)

Bagian 2: TCP & Congestion

  • Transport Connection-Oriented: TCP
  • Manajemen Koneksi (Handshake & Teardown)
  • Flow Control
  • TCP Congestion Control (AIMD)

1. Layanan Lapisan Transport

Peran Transport Layer

Menyediakan komunikasi logis ujung-ke-ujung (end-to-end) antara proses aplikasi yang berjalan di host yang berbeda.

  • Network Layer: Komunikasi logis antar Host (komputer).
  • Transport Layer: Komunikasi logis antar Proses (aplikasi/socket).
💡 Analogi Keluarga:
Rumah = Host
Anak-anak = Proses/Aplikasi
Petugas Pos = Network Layer (hanya mengantar ke rumah)
Kakak Tertua = Transport Layer (membagikan surat ke adik-adik yang tepat di dalam rumah)

Ilustrasi: Komunikasi Proses ke Proses

Proses ↔ Proses
Browser (Proses A)
TCP (Transport)
Jaringan Internet (IP)
Web Server (Proses B)
TCP (Transport)
Tugas utama transport layer adalah mengambil pesan dari aplikasi, memecahnya menjadi segmen-segmen kecil (jika perlu), dan menyerahkannya ke network layer. Di sisi penerima, menyusunnya kembali dan menyerahkannya ke aplikasi yang tepat.

2. Multiplexing & Demultiplexing

Konsep Mux & Demux

Di Sisi Pengirim (Multiplexing)
Mengumpulkan data dari banyak soket (aplikasi), menambahkan header transport (yang nantinya dipakai untuk demultiplexing), dan meneruskannya ke Network Layer lewat satu saluran.
Di Sisi Penerima (Demultiplexing)
Menggunakan informasi header (Port Numbers) untuk memilah dan mengantarkan segmen yang masuk ke soket yang tepat.
Ilustrasi Multiplexing dan Demultiplexing

Demultiplexing: UDP

Connectionless Demux (UDP)

  • Soket UDP diidentifikasi sepenuhnya oleh 2-tuple: (Dest IP, Dest Port).
  • Jika dua datagram dari IP pengirim (sumber) yang berbeda, atau dari Port sumber yang berbeda, menuju Port Tujuan yang sama, keduanya akan masuk ke satu soket UDP yang sama.
  • Sangat efisien untuk server yang melayani banyak klien sekaligus tanpa perlu melacak status tiap klien (contoh: DNS Server di Port 53).

Demultiplexing: TCP

Connection-Oriented Demux (TCP)

  • Soket TCP diidentifikasi secara unik oleh 4-tuple: (Src IP, Src Port, Dest IP, Dest Port).
  • Host penerima menggunakan keempat nilai ini untuk mengarahkan segmen ke soket yang tepat.
  • Web server (Apache/Nginx) membuat soket baru yang terpisah untuk setiap koneksi klien yang masuk, meskipun semuanya menuju port tujuan yang sama (Port 80/443).

Perbandingan Demux UDP vs TCP

UDP Demux

Client A (IP: A, Port: 111) ──┐
Client B (IP: B, Port: 222) ──┼─▶ Socket (Port 53)
Client C (IP: C, Port: 333) ──┘

Satu pintu (soket) melayani semua tamu yang datang ke alamat tersebut.

TCP Demux

Client A (IP: A, Port: 111) ──▶ Socket 1 (Port 80)
Client B (IP: B, Port: 222) ──▶ Socket 2 (Port 80)
Client C (IP: C, Port: 333) ──▶ Socket 3 (Port 80)

Setiap tamu (klien) dilayani di ruangan (soket) khusus yang berbeda, meskipun datang ke gedung (port) yang sama.

3. User Datagram Protocol (UDP)

UDP: Cepat Tapi Tidak Andal

  • No Frills, Bare Bones: Protokol transport yang sangat minimalis (RFC 768).
  • Connectionless: Tidak ada proses handshaking sebelum mengirim data. Langsung tembak!
  • Best Effort: Segmen UDP dapat hilang (lost) atau datang tidak berurutan (out of order).
  • No Congestion Control: UDP tidak peduli jaringan sedang macet, ia akan terus mengirim data.
Perbandingan TCP dan UDP

Mengapa UDP Masih Digunakan?

Meskipun tidak andal, UDP memiliki keunggulan telak dalam skenario tertentu:

  • Tanpa delay setup: Tidak perlu menunggu 3-way handshake selesai untuk mulai mengirim data (Sangat penting untuk DNS query yang butuh respon instan).
  • Tanpa state koneksi: Server tidak perlu menyimpan informasi buffer atau parameter koneksi klien, sehingga memori jauh lebih hemat.
  • Header sangat kecil: Hanya 8 byte overhead (dibandingkan TCP yang 20 byte).
  • Kontrol penuh di level aplikasi: Aplikasi bisa mengontrol kapan tepatnya data dikirim tanpa dihalangi oleh algoritma congestion control TCP.

Pentingnya UDP: Real-time & Low Latency

Dalam aplikasi real-time, kecepatan lebih penting daripada keutuhan 100%.

  • 🎮 Game Online: Kehilangan satu paket data pergerakan pemain tidak masalah, asalkan paket berikutnya datang sangat cepat tanpa delay. Jika menggunakan TCP, retransmisi akan menyebabkan lag/stuttering.
  • 📺 Live Streaming / VoIP: Hilangnya paket hanya menyebabkan sedikit glitch visual/audio sementara, yang lebih bisa ditoleransi manusia daripada video yang terus-terusan berhenti untuk buffering.
Ilustrasi pentingnya UDP untuk Gaming dan Streaming

4. Manajemen Koneksi TCP

Manajemen Koneksi (Karakteristik TCP)

  • Point-to-point: Satu pengirim, satu penerima.
  • Reliable, in-order byte stream: Data dijamin sampai dengan utuh dan berurutan.
  • Connection-oriented: Wajib melakukan handshaking sebelum bertukar data.
  • Full duplex data: Aliran data dua arah (bi-directional) dalam koneksi yang sama.
Sebelum mempertukarkan data aplikasi, pengirim dan penerima harus saling menyapa (handshake) untuk menyepakati parameter koneksi dan inisialisasi urutan (Sequence Number).

Animasi: TCP 3-Way Handshake

Client
1. SYN (seq=x)
2. SYN-ACK (seq=y, ack=x+1)
3. ACK (ack=y+1)
Server
Proses: 1) Klien kirim SYN (meminta koneksi). 2) Server membalas SYN-ACK (setuju & minta balik). 3) Klien membalas ACK (konfirmasi akhir). Koneksi terbentuk!

Menutup Koneksi TCP (Teardown)

Berbeda dengan saat membuka koneksi yang hanya butuh 3 langkah, menutup koneksi TCP butuh 4 langkah karena sifatnya yang asimetris.

  • Koneksi TCP adalah dua jalur komunikasi satu arah yang digabung (Full Duplex).
  • Setiap pihak harus menutup jalurnya masing-masing menggunakan bendera FIN (Finish).
  • Ketika Klien mengirim FIN, ia tidak bisa lagi mengirim data, tapi masih bisa menerima data dari Server sampai Server juga mengirim FIN.

Animasi: TCP 4-Way Teardown

Client
FIN_WAIT / CLOSED
1. FIN (Saya selesai kirim)
2. ACK (Oke, saya terima FIN)
3. FIN (Saya juga selesai)
4. ACK (Oke, Bye!)
Server
CLOSE_WAIT / CLOSED
Catatan: Terkadang langkah 2 dan 3 digabung menjadi satu paket (FIN+ACK) oleh server jika server memang sudah tidak ada data lagi untuk dikirim.

5. Flow Control (Kendali Aliran)

Flow Control: Melindungi Penerima

Masalah: Bagaimana jika aplikasi di sisi penerima sangat lambat membaca data dari buffer TCP, sementara pengirim menembakkan data dengan sangat cepat?

Akibat: Buffer overflow di penerima (data hilang / tertolak).

Solusi TCP (Flow Control):

  • Penerima secara eksplisit memberitahu pengirim berapa banyak ruang kosong yang tersisa di buffernya.
  • Nilai ini ditaruh di field rwnd (Receive Window) pada header TCP setiap kali penerima membalas dengan ACK.
  • Pengirim mematuhi aturan: jumlah data yang sedang melayang (un-ACKed data) tidak boleh melebihi nilai rwnd saat ini.

Ilustrasi Receive Window (rwnd)

Ilustrasi buffer di sisi penerima:

Total Receive Buffer Space (RcvBuffer)
Data Belum Dibaca App
Ruang Kosong = rwnd
Jika aplikasi lambat membaca, blok hijau membesar, ruang kosong (rwnd) mengecil. Pengirim akan memperlambat pengiriman secara otomatis.

6. TCP Congestion Control

Apa itu Congestion? (Kemacetan Jaringan)

Definisi: Terlalu banyak sumber yang mengirim terlalu banyak data, terlalu cepat, sehingga jaringan (router di tengah jalan) tidak sanggup menanganinya.

Ciri-ciri Kemacetan Jaringan:

  • Delay Ekstrem: Paket mengantre lama di dalam buffer router.
  • Packet Loss: Buffer router penuh, sehingga router terpaksa membuang paket yang baru datang (overflow).
⚠️ Perbedaan Penting:
Flow Control = Mencegah buffer Penerima penuh.
Congestion Control = Mencegah buffer Router Jaringan penuh.

Animasi: Terjadinya Kemacetan (Congestion)

Buffer Router Penuh → Paket Berikutnya Dibuang (Drop)
Biaya dari kemacetan: Paket yang sudah berhasil melewati setengah jalan internet terbuang percuma, menguras kapasitas jaringan secara global. Pengirim harus melakukan retransmisi.

TCP Congestion Control (AIMD)

TCP melakukan kontrol kemacetan secara End-to-End. TCP tidak bisa bertanya ke router, jadi ia menebak kemacetan dari adanya packet loss.

Algoritma AIMD (Additive Increase, Multiplicative Decrease):

  • Additive Increase (Probe Bandwidth): Selama tidak ada loss, perlahan-lahan tingkatkan kecepatan transmisi (+1 MSS setiap RTT) untuk meraba-raba batas bandwidth maksimal.
  • Multiplicative Decrease (Rem Darurat): Jika terjadi packet loss, segera potong kecepatan transmisi menjadi setengahnya.

Animasi: Pola Gigi Gergaji (Sawtooth)

Kecepatan Waktu Batas Kemacetan (Loss) Additive Increase Drop (1/2)
Perilaku ini menghasilkan pola "Gigi Gergaji" yang khas pada grafik throughput TCP. TCP terus "menggoda" batas maksimal jaringan secara berkelanjutan.

📝 Tugas Individu — Pertemuan 5

Dikerjakan analitik, ditulis tangan di kertas folio, difoto, dikirim ke e-learning.

1. Aplikasi video conference seperti Zoom dapat berjalan menggunakan TCP atau UDP. Mengapa pada kondisi jaringan yang ideal (loss rendah) aplikasi ini lebih memilih UDP dibandingkan TCP? Jelaskan dengan membandingkan mekanisme TCP RDT (Reliable Data Transfer) dan head-of-line blocking pada TCP.

2. Sebuah serangan SYN Flood Attack terjadi ketika penyerang mengirimkan ribuan paket TCP dengan bendera SYN=1, namun tidak pernah merespons dengan ACK terakhir (langkah ke-3). Jelaskan secara arsitektural (berdasarkan 3-Way Handshake) mengapa serangan ini dapat menyebabkan server lumpuh, dan memori apa yang dihabiskan oleh server!

3. Jelaskan perbedaan mendasar antara Flow Control dan Congestion Control pada TCP. Jika seorang pengguna mengunduh file besar dengan kecepatan 10 Mbps, lalu tiba-tiba kecepatannya turun menjadi 1 Mbps karena router di ISP kelebihan beban, mekanisme manakah yang sedang bekerja mengendalikan kecepatan pengguna tersebut?

Rangkuman Pertemuan 5

Transport Layer & UDP

  • Transport Layer: Komunikasi antar proses/socket (menggunakan Port Numbers).
  • Mux/Demux: Menggabungkan dan memisahkan aliran data.
  • UDP: Connectionless, unreliable, cepat. Cocok untuk DNS dan streaming realtime (Game/Video).

TCP

  • TCP: Connection-oriented, reliable, in-order byte-stream.
  • Manajemen Koneksi: 3-Way Handshake (buka), 4-Way Teardown (tutup).
  • Flow Control: Membatasi kecepatan agar buffer penerima (rwnd) tidak luber.
  • Congestion Control: Membatasi kecepatan agar router tidak macet (AIMD, pola gigi gergaji).

Tanya Jawab & Diskusi

Pertemuan berikutnya: IP Addressing & Subnetting

Referensi mandiri: Kurose & Ross Chapter 3 (Transport Layer)