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
Diskusi & Komentar