TCP dan UDP merupakan dua protokol penting pada Transport Layer yang digunakan untuk mengirimkan data melalui jaringan. Keduanya sama-sama berada di atas IP, tetapi memiliki cara kerja, karakteristik, dan tujuan penggunaan yang berbeda.

Perbedaan TCP dan UDP sering menjadi materi dasar networking karena keduanya digunakan oleh banyak layanan internet sehari-hari.

Contohnya:

TCP
↓
Web
HTTPS
SSH
FTP
Email

UDP
↓
DNS
VoIP
Streaming tertentu
Game online
DHCP

Meskipun sama-sama digunakan untuk komunikasi end-to-end, TCP lebih menekankan reliability dan ordered delivery, sedangkan UDP lebih sederhana dan tidak menyediakan mekanisme koneksi, retransmission, maupun jaminan urutan paket pada level protokol.

Karena itu, pertanyaan yang lebih tepat bukan:

"TCP lebih bagus atau UDP lebih bagus?"

Tetapi:

"Protokol mana yang sesuai dengan kebutuhan aplikasi?"


Apa Itu TCP?

TCP atau Transmission Control Protocol adalah protokol transport yang dirancang untuk komunikasi yang andal antara dua endpoint.

TCP menyediakan mekanisme untuk:

Connection establishment
Reliable delivery
Ordering
Retransmission
Flow control
Congestion control

Artinya, aplikasi dapat mengirim data melalui TCP tanpa harus mengimplementasikan sendiri seluruh mekanisme tersebut.

Secara sederhana:

Client
  ↓
TCP Connection
  ↓
Server

Sebelum data aplikasi dikirim, TCP biasanya melakukan proses pembentukan koneksi.


Apa Itu UDP?

UDP atau User Datagram Protocol adalah protokol transport yang lebih sederhana dibandingkan TCP.

UDP tidak membuat koneksi seperti TCP dan tidak menyediakan jaminan bahwa datagram:

akan sampai
akan datang satu kali
akan datang berurutan

Secara sederhana:

Client
  ↓
UDP Datagram
  ↓
Server

Setiap datagram dikirim secara independen.

Jika aplikasi membutuhkan:

reliability
ordering
retransmission

maka mekanisme tersebut perlu ditangani oleh aplikasi atau protokol yang berada di atas UDP.


Perbedaan TCP dan UDP Secara Singkat

Karakteristik TCP UDP
Tipe komunikasi Connection-oriented Connectionless
Reliability Ya Tidak dijamin
Ordering Ya Tidak dijamin
Retransmission Ya Tidak
Flow control Ya Tidak
Congestion control Ya Tidak pada UDP dasar
Header Lebih besar Lebih kecil
Overhead Lebih tinggi Lebih rendah
Latency Dapat lebih tinggi Umumnya lebih rendah
Cocok untuk Data yang harus konsisten Data real-time atau loss-tolerant

Perlu diperhatikan bahwa "UDP lebih cepat" bukan hukum mutlak. Performa sebenarnya tetap dipengaruhi aplikasi, jaringan, ukuran data, congestion, implementasi, dan mekanisme reliability yang digunakan aplikasi.


TCP dan UDP Berada di Layer Berapa?

Dalam model TCP/IP, TCP dan UDP berada pada Transport Layer.

Secara sederhana:

Application
HTTP
DNS
SSH
Game
   ↓
Transport
TCP / UDP
   ↓
Internet
IP
   ↓
Link
Ethernet / Wi-Fi

Karena berada pada layer yang sama, keduanya sama-sama menggunakan IP sebagai mekanisme addressing jaringan, tetapi menyediakan service transport yang berbeda.


Cara Kerja TCP

TCP memiliki mekanisme koneksi sebelum komunikasi normal dimulai.

Salah satu konsep paling terkenal adalah three-way handshake.

Urutannya:

Client                  Server

  | ---- SYN ----------> |
  | <--- SYN-ACK ------- |
  | ---- ACK ----------> |

Setelah proses tersebut selesai:

Connection Established

Barulah aplikasi dapat mengirim data melalui koneksi tersebut.


Apa Fungsi SYN?

SYN digunakan untuk memulai sinkronisasi koneksi TCP.

Secara konseptual:

Client:
"Saya ingin membuat koneksi."

        ↓ SYN

Server:
"Saya menerima dan siap."

        ↓ SYN-ACK

Client:
"Baik, koneksi siap."

        ↓ ACK

Setelah handshake selesai, kedua sisi memiliki informasi state yang diperlukan untuk komunikasi TCP.


Bagaimana TCP Menjaga Data Tetap Berurutan?

Misalnya aplikasi mengirim:

A
B
C
D

Data dapat dibagi menjadi beberapa segment dan tiba dalam urutan yang berbeda karena kondisi jaringan.

Misalnya:

B
D
A
C

TCP menggunakan sequence number dan mekanisme acknowledgement untuk membantu receiver menyusun kembali aliran data dan mendeteksi data yang hilang.

Hasil yang diberikan kepada aplikasi tetap berupa stream yang berurutan:

A
B
C
D

Inilah salah satu alasan TCP cocok untuk:

file transfer
web page
SSH session
database connection

karena kehilangan atau perubahan urutan data tidak dapat begitu saja dibiarkan.


Bagaimana TCP Menangani Packet Loss?

Misalnya:

Packet 1 ✅
Packet 2 ✅
Packet 3 ❌
Packet 4 ✅

TCP memiliki mekanisme acknowledgement dan retransmission.

Secara sederhana:

Packet 3 hilang
     ↓
Receiver mendeteksi gap
     ↓
Sender melakukan retransmission
     ↓
Data dilengkapi kembali

Akibatnya aplikasi dapat menerima data secara reliable.

Namun mekanisme ini memiliki konsekuensi:

retransmission
+
acknowledgement
+
connection state
=
overhead

Bagaimana UDP Bekerja?

UDP tidak melakukan three-way handshake seperti TCP.

Misalnya:

Client
  |
  | Datagram
  ↓
Server

Kemudian datagram berikutnya:

Client
  |
  | Datagram
  ↓
Server

Tidak ada konsep koneksi TCP yang harus dibentuk terlebih dahulu.

Karena itu UDP cocok untuk aplikasi yang lebih mengutamakan:

low latency
simplicity
high message rate

dibandingkan reliabilitas bawaan.


Apa yang Terjadi Jika Paket UDP Hilang?

Misalnya aplikasi mengirim:

A
B
C
D

tetapi jaringan kehilangan:

C

maka server dapat menerima:

A
B
D

UDP sendiri tidak secara otomatis mengatakan:

"Paket C hilang, kirim ulang."

Jika aplikasi memerlukan mekanisme tersebut, aplikasilah yang harus merancangnya.

Contoh:

Game
Voice
Video

dapat memilih untuk tidak mengirim ulang data lama karena informasi tersebut mungkin sudah tidak relevan.


Mengapa UDP Sering Dipakai untuk Game?

Bayangkan game online mengirim posisi pemain:

X = 100
Y = 200

beberapa milidetik kemudian:

X = 105
Y = 201

Jika packet pertama hilang:

X = 100

mungkin tidak terlalu penting karena posisi terbaru:

X = 105

sudah tersedia.

Dalam konteks seperti ini:

Latency
>
Perfect reliability

dapat menjadi prioritas.

Namun game modern tidak semuanya menggunakan UDP secara langsung. Beberapa menggunakan protokol tambahan di atas UDP untuk memperoleh reliability atau fitur tertentu.


Mengapa TCP Cocok untuk File Transfer?

Bayangkan Anda mengunduh:

report.pdf

Ukuran:

10 MB

Jika beberapa byte hilang, file dapat rusak.

Karena itu:

loss
↓
retransmission
↓
complete data

sangat penting.

Untuk file transfer, integritas data biasanya jauh lebih penting dibandingkan mempertahankan latency serendah mungkin.


Apakah TCP Selalu Lebih Lambat?

Tidak sesederhana itu.

TCP memang memiliki overhead tambahan seperti:

handshake
ACK
sequence
retransmission
flow control
congestion control

Tetapi implementasi TCP modern sangat dioptimalkan.

Dalam transfer data berukuran besar pada jaringan yang stabil, TCP dapat bekerja sangat efisien.

Karena itu:

TCP = lambat

adalah generalisasi yang terlalu sederhana.

Lebih tepat:

TCP memiliki lebih banyak mekanisme sehingga overhead protokolnya lebih tinggi daripada UDP.


Apakah UDP Selalu Lebih Cepat?

Juga tidak.

UDP menyediakan primitive transport yang sederhana, tetapi aplikasi bisa menambahkan mekanisme sendiri.

Misalnya:

UDP
+
reliability layer
+
encryption
+
ordering
+
acknowledgement

Pada akhirnya protocol stack tersebut bisa menjadi cukup kompleks.

Jadi:

UDP ≠ otomatis sangat cepat

Performa sebenarnya harus diukur pada workload yang nyata.


Contoh Pengujian TCP dan UDP

Agar perbedaan tidak hanya dipahami secara teori, kita dapat melakukan eksperimen menggunakan iperf3 di jaringan lokal atau lab.

Arsitektur:

PC A
192.168.1.10
   │
   │ LAN
   │
PC B
192.168.1.20

PC A menjadi client.

PC B menjadi server.


Instalasi iPerf3

Pada Linux:

sudo apt install iperf3

Pada Windows, instalasi dapat dilakukan menggunakan build iPerf3 yang tersedia untuk Windows.

Cek:

iperf3 --version

Menjalankan TCP Test

Pada PC server:

iperf3 -s

Kemudian pada client:

iperf3 -c 192.168.1.20

Hasil kurang lebih akan terlihat seperti:

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00 sec    112 MBytes    941 Mbits/sec
[  5]   1.00-2.00 sec    111 MBytes    931 Mbits/sec
[  5]   2.00-3.00 sec    113 MBytes    948 Mbits/sec

Nilai tersebut hanya contoh. Hasil sebenarnya sangat tergantung pada:

NIC
Wi-Fi
Ethernet
CPU
driver
switch
router
network congestion

Menjalankan UDP Test

Server tetap:

iperf3 -s

Client:

iperf3 -c 192.168.1.20 -u -b 100M

-u digunakan untuk UDP.

-b 100M menetapkan target bitrate.

Output dapat terlihat seperti:

[ ID] Interval           Transfer     Bitrate         Jitter
[  5]   0.00-1.00 sec    11.9 MBytes   100 Mbits/sec   0.12 ms
[  5]   1.00-2.00 sec    11.9 MBytes   100 Mbits/sec   0.15 ms

Pada hasil UDP, kita juga dapat memperhatikan:

Lost/Total Datagrams
Lost %
Jitter

Karena UDP tidak menyediakan reliability sendiri seperti TCP.


Hasil Perbandingan TCP dan UDP

Contoh hasil:

Parameter TCP UDP
Throughput 941 Mbps 100 Mbps
Packet loss Ditangani TCP 0.7%
Jitter Tidak menjadi metrik utama transport 0.15 ms
Retransmission Ya Tidak
Connection setup Ya Tidak
Reliability Tinggi Tidak dijamin

Perlu diingat bahwa tabel tersebut hanya contoh hasil ilustrasi, bukan benchmark universal.

Pada pengujian UDP, bitrate harus ditentukan secara eksplisit agar sesuai dengan tujuan eksperimen. Jika bandwidth UDP dibuat terlalu tinggi, packet loss bisa meningkat drastis.


Apa yang Sebenarnya Kita Temukan dari Pengujian?

Dari eksperimen tersebut, kita dapat melihat karakteristik mendasar:

TCP

Connection
   ↓
Reliable stream
   ↓
Ordering
   ↓
Retransmission

UDP

Datagram
   ↓
No connection
   ↓
No delivery guarantee
   ↓
Application decides what to do

Jadi perbedaan paling mendasar bukan sekadar:

TCP cepat
UDP lambat

atau:

TCP lambat
UDP cepat

Melainkan:

TCP
→ reliability-oriented transport

UDP
→ lightweight datagram transport

Pengujian Packet Loss

Kita juga dapat menguji apa yang terjadi ketika jaringan mengalami packet loss.

Secara konsep:

Normal:

A B C D E F


Packet loss:

A B _ D E F

Pada TCP:

A B _ D E F
      ↓
Retransmission
      ↓
A B C D E F

Pada UDP:

A B _ D E F

Aplikasi menerima apa yang sampai.

Jika aplikasi ingin mengatasi kehilangan:

UDP
↓
Application protocol
↓
Sequence / ACK / retransmission

harus menangani mekanisme tersebut sendiri.


TCP dan UDP dari Sisi Security

Dalam cybersecurity, memahami TCP dan UDP sangat penting karena banyak aktivitas network security berkaitan dengan port dan protocol.

Misalnya:

TCP/22
SSH

TCP/80
HTTP

TCP/443
HTTPS

UDP/53
DNS

UDP/67-68
DHCP

Ketika melakukan reconnaissance:

Port
 ↓
Protocol
 ↓
Service
 ↓
Attack Surface

sangat penting untuk mengetahui apakah port tersebut menggunakan TCP atau UDP.


Mengapa Nmap Memisahkan TCP dan UDP?

Karena perilaku keduanya berbeda.

TCP scan:

nmap -sT 192.168.1.20

atau pada kondisi tertentu:

nmap -sS 192.168.1.20

Sedangkan UDP:

nmap -sU 192.168.1.20

UDP scanning cenderung lebih lambat dan interpretasi hasilnya berbeda karena karakteristik UDP tidak mempunyai handshake TCP.

Ini menunjukkan bahwa di dunia penetration testing:

TCP reconnaissance
≠
UDP reconnaissance

TCP SYN dan UDP dalam Network Security

Contoh sederhana:

TCP
SYN
 ↓
Server
SYN-ACK
 ↓
Client
ACK

Sedangkan UDP:

UDP packet
 ↓
Server

Tidak ada SYN-ACK.

Hal tersebut juga menjelaskan mengapa network security engineer perlu memahami state connection.


TCP untuk Web

Sebagian besar komunikasi web tradisional menggunakan TCP.

Contohnya:

HTTP
HTTPS

Secara konseptual:

Browser
 ↓
TCP
 ↓
IP
 ↓
Server

Untuk HTTPS:

Browser
 ↓
TCP
 ↓
TLS
 ↓
HTTP

Namun arsitektur web modern juga menggunakan HTTP/3 yang berjalan di atas QUIC, dan QUIC menggunakan UDP sebagai transport substrate.

Jadi:

Modern Web

tidak selalu identik dengan:

HTTP → TCP

UDP untuk DNS

DNS secara tradisional banyak menggunakan UDP untuk query biasa karena pesan DNS umumnya kecil dan membutuhkan komunikasi yang cepat.

Secara konsep:

Client
 ↓
UDP/53
 ↓
DNS Server

Namun DNS juga dapat menggunakan TCP dalam kondisi tertentu, misalnya ketika respons membutuhkan mekanisme yang tidak dapat ditangani dengan transport UDP biasa atau dalam transfer zone tertentu.


UDP untuk VoIP

Voice over IP memerlukan:

low latency
low delay

Jika satu paket suara hilang:

audio
↓
packet missing
↓
sedikit gangguan

sering kali lebih baik daripada menunggu retransmission yang terlambat.

Ini sebabnya media real-time dapat menggunakan transport yang berbasis UDP atau protokol lain yang dibangun di atas UDP.


TCP untuk SSH

SSH membutuhkan:

reliable byte stream

Bayangkan Anda mengetik:

sudo systemctl restart nginx

Jika karakter:

s

hilang dan tidak dipulihkan:

udo systemctl restart nginx

perintah berubah.

Karena itu model reliable stream TCP sangat sesuai untuk SSH.


Perbedaan TCP dan UDP dalam Kehidupan Sehari-hari

Secara sederhana:

TCP
→ "Pastikan semuanya sampai dengan benar."

UDP
→ "Kirim sekarang, aplikasi menangani konsekuensinya."

Analogi:

TCP seperti mengirim dokumen resmi

Anda ingin:

semua halaman
+
urutan benar
+
tidak ada halaman hilang

UDP seperti memberi update posisi secara real-time

Yang penting:

informasi terbaru

bukan selalu:

setiap informasi lama harus dikirim ulang

Kelebihan TCP

TCP memiliki beberapa keunggulan:

Reliable delivery
Ordered delivery
Retransmission
Flow control
Congestion control
Established connection state

Cocok untuk:

Web
SSH
File transfer
Database
Email transport

Kekurangan TCP

Karena banyak mekanisme tambahan:

handshake
ACK
retransmission
state
congestion control

maka TCP memiliki overhead lebih tinggi dibandingkan UDP.

Untuk aplikasi yang sangat sensitif terhadap latency, karakteristik tersebut dapat menjadi pertimbangan.


Kelebihan UDP

UDP memiliki desain yang sederhana:

No handshake
Low protocol overhead
Datagram-oriented
Flexible

Cocok untuk aplikasi yang:

latency sensitive
loss tolerant
high frequency

contohnya dapat mencakup:

DNS
VoIP
real-time communication
gaming
streaming tertentu

Kekurangan UDP

UDP tidak menyediakan jaminan bawaan untuk:

delivery
ordering
duplicate suppression
retransmission

Akibatnya developer mungkin harus menambahkan mekanisme tersebut pada application layer jika diperlukan.


TCP vs UDP untuk Gaming

Tidak ada jawaban universal.

Game yang sangat real-time bisa lebih menyukai mekanisme berbasis UDP karena kehilangan satu update lama dapat ditoleransi.

Namun sebagian game juga membutuhkan reliability untuk jenis data tertentu.

Karena itu sistem modern dapat menggunakan pendekatan hybrid:

Real-time state
→ UDP-like transport

Critical reliable event
→ reliability layer

Bahkan protokol modern seperti QUIC menunjukkan bahwa reliability, stream, dan congestion control dapat dibangun di atas UDP.


TCP vs UDP untuk Streaming

Streaming real-time juga tidak sederhana.

Untuk:

live audio
live video

keterlambatan sering sangat penting.

Namun untuk:

file video
download

reliability menjadi lebih penting.

Jadi jenis aplikasinya menentukan pilihan transport.


TCP vs UDP untuk API

API tradisional seperti:

REST API

sering berjalan melalui:

HTTP
↓
TCP

karena request/response membutuhkan data yang konsisten.

Namun HTTP/3 menggunakan QUIC di atas UDP dan tetap menyediakan reliability pada level QUIC.

Ini merupakan contoh penting:

UDP sebagai dasar transport tidak berarti aplikasi harus kehilangan reliability.

Mekanisme tersebut dapat diberikan oleh protokol di atas UDP.


TCP vs UDP: Mana yang Lebih Aman?

Tidak tepat mengatakan salah satunya "lebih aman" hanya berdasarkan nama protokol.

Security bergantung pada:

application
protocol design
authentication
encryption
implementation
configuration
network architecture

Contohnya:

HTTPS

memberikan encryption melalui TLS, bukan karena TCP secara inheren aman.

Begitu juga:

UDP

tidak otomatis berarti tidak aman.

QUIC, misalnya, menggabungkan transport modern dengan TLS.


Cara Memilih TCP atau UDP

Gunakan pertanyaan berikut:

Apakah semua data harus sampai?
    ↓
Ya → TCP / reliable transport

Apakah urutan harus dipertahankan?
    ↓
Ya → TCP atau reliable protocol di atas UDP

Apakah latency sangat penting?
    ↓
UDP-based transport bisa lebih sesuai

Apakah data lama bisa dibuang?
    ↓
UDP-based transport bisa lebih sesuai

Tetapi arsitektur nyata tetap perlu melihat requirement secara menyeluruh.


Kesimpulan TCP vs UDP

TCP dan UDP memiliki tujuan yang berbeda.

TCP
=
Reliable + Ordered + Connection-oriented
UDP
=
Lightweight + Datagram-oriented + No built-in delivery guarantee

Perbandingan sederhananya:

TCP
Client
 ↓
Handshake
 ↓
Connection
 ↓
Reliable Data
 ↓
Retransmission
 ↓
Ordered Stream


UDP
Client
 ↓
Datagram
 ↓
Datagram
 ↓
Datagram

Hasil pengujian menggunakan tool seperti iPerf3 juga menunjukkan bahwa TCP dan UDP tidak sekadar berbeda pada nama. Keduanya memiliki karakteristik berbeda dalam hal reliability, loss handling, connection management, jitter, dan cara aplikasi menangani data.

Karena itu pilihan protokol harus berdasarkan kebutuhan aplikasi:

File Transfer
→ TCP

SSH
→ TCP

Traditional HTTP/1.1 dan HTTP/2
→ TCP

DNS query
→ UDP pada banyak kasus

Real-time traffic
→ UDP-based transport sering digunakan

HTTP/3
→ QUIC di atas UDP

Hal terpenting dalam mempelajari networking adalah memahami mengapa suatu aplikasi menggunakan transport tertentu, bukan sekadar menghafalkan port.

Ketika Anda memahami TCP dan UDP, Anda juga akan lebih mudah mempelajari:

Nmap
Wireshark
Firewall
IDS/IPS
DDoS
Network Security
Socket Programming
Penetration Testing
Troubleshooting