TCP vs UDP: Perbedaan Cara Kerja, Kecepatan dan Penggunaannya
Kalau sering melihat istilah TCP dan UDP ketika mengatur firewall, proxy, game server, DNS, VPN, atau aplikasi jaringan, keduanya sebenarnya sedang membahas dua cara yang berbeda untuk mengirim data di internet.
TCP lebih fokus pada komunikasi yang reliable dan terurut. Data yang hilang bisa dikirim ulang, urutannya dijaga, dan koneksi dibuat terlebih dahulu sebelum data aplikasi dipertukarkan.
UDP mengambil pendekatan yang lebih ringan. Aplikasi dapat mengirim datagram tanpa membangun koneksi seperti TCP terlebih dahulu. Tetapi sebagai gantinya, UDP sendiri tidak menjamin paket sampai, tidak menjamin urutannya, dan tidak otomatis mengirim ulang data yang hilang.
Karena sifatnya berbeda, pertanyaan “TCP atau UDP mana yang lebih bagus?” sebenarnya kurang tepat. Keduanya dibuat untuk kebutuhan yang berbeda.
Apa Itu TCP?
TCP adalah singkatan dari Transmission Control Protocol. TCP merupakan transport-layer protocol yang menyediakan komunikasi berbasis koneksi dan dirancang untuk memberikan aliran data yang reliable antar-endpoint.
Dalam penggunaan sederhana, sebelum client mengirim data aplikasi, koneksi TCP perlu dibentuk terlebih dahulu.
RFC 9293 menjadi spesifikasi modern TCP dan menggantikan RFC 793 sebagai spesifikasi dasar utama TCP.
Referensinya dapat dibaca di RFC 9293 — Transmission Control Protocol.
Apa Itu UDP?
UDP adalah singkatan dari User Datagram Protocol.
UDP menggunakan model komunikasi datagram dengan mekanisme transport yang jauh lebih sederhana daripada TCP.
Aplikasi dapat mengirim datagram tanpa harus membuat koneksi terlebih dahulu seperti TCP.
UDP menyediakan port source dan destination serta checksum, tetapi protokol dasarnya tidak memberikan jaminan delivery, ordering, atau duplicate protection.
Spesifikasi dasarnya berasal dari RFC 768 — User Datagram Protocol.
TCP vs UDP Secara Singkat
| Aspek | TCP | UDP |
|---|---|---|
| Connection | Connection-oriented | Connectionless |
| Reliability | Ya | Tidak dijamin oleh protokol dasar |
| Ordering | Menjaga urutan data | Tidak menjamin urutan |
| Retransmission | Ada | Tidak otomatis |
| Handshake | Ada | Tidak seperti TCP |
| Overhead | Lebih besar | Lebih kecil |
| Cocok untuk | Data yang harus lengkap dan terurut | Traffic yang mengutamakan latency rendah atau aplikasi yang mengatur reliability sendiri |
Apa Maksud TCP Connection-Oriented?
TCP tidak langsung mengirim data aplikasi begitu saja. Client dan server membangun state koneksi terlebih dahulu.
Proses awal TCP dikenal sebagai three-way handshake.
SYN
SYN-ACK
ACK
Setelah koneksi terbentuk, kedua sisi dapat mulai bertukar data.
Three-way handshake akan kita bahas lebih detail di artikel tersendiri supaya pembahasan TCP vs UDP ini tidak terlalu tumpang tindih.
UDP Tidak Memerlukan Handshake Seperti TCP
UDP tidak membangun state koneksi dengan proses SYN, SYN-ACK, dan ACK sebelum datagram dikirim.
Aplikasi dapat langsung membuat datagram dan mengirimkannya menuju destination.
Ini mengurangi overhead awal, tetapi aplikasi kehilangan berbagai jaminan yang disediakan TCP.
Apa Maksud Reliable pada TCP?
TCP dirancang agar byte stream yang dikirim dapat diterima secara reliable oleh aplikasi di sisi lain selama koneksi masih dapat dipertahankan.
TCP mempunyai mekanisme seperti:
- sequence number,
- acknowledgement,
- retransmission,
- flow control,
- congestion control.
Kalau sebagian data hilang di jaringan, TCP dapat mendeteksi kondisi tersebut dan mengirim ulang data yang diperlukan.
Contoh Paket Hilang pada TCP
Bayangkan data dikirim:
dan bagian nomor 3 tidak sampai.
TCP mempunyai mekanisme agar data yang hilang dapat dikirim ulang sehingga aplikasi menerima aliran data secara benar.
Data yang diperlukan dapat diretransmit sebelum aliran dianggap lengkap.
Bagaimana UDP Menangani Packet Loss?
UDP sendiri tidak otomatis mengirim ulang datagram yang hilang.
Misalnya:
UDP tidak mempunyai mekanisme bawaan yang berkata:
Kalau aplikasi membutuhkan mekanisme seperti itu, aplikasinya sendiri harus menambahkannya atau menggunakan protokol lain di atas UDP.
Apakah UDP Berarti Data Selalu Hilang?
Tidak.
UDP hanya berarti protokolnya tidak memberikan guarantee bahwa delivery akan terjadi.
Pada jaringan yang baik, banyak datagram UDP tentu tetap sampai dengan benar.
Perbedaannya adalah aplikasi tidak boleh mengasumsikan bahwa:
- semua datagram pasti sampai,
- datagram datang tepat satu kali,
- datagram datang sesuai urutan pengiriman.
TCP Menjaga Urutan Data
TCP menyediakan ordered byte stream.
Misalnya data dikirim:
meskipun jaringan membawa segment dalam kondisi yang rumit, aplikasi menerima stream berdasarkan urutan yang dikelola TCP.
UDP Tidak Menjamin Urutan
Datagram UDP bersifat independen.
Pengirim bisa mengirim:
tetapi aplikasi penerima secara teori bisa melihat:
atau kehilangan salah satunya.
Kalau ordering penting, aplikasi harus menambah mekanisme sendiri.
Apakah UDP Selalu Lebih Cepat?
Tidak selalu.
UDP memang memiliki overhead protocol yang lebih kecil dan tidak membutuhkan TCP handshake, tetapi performa aplikasi tidak hanya ditentukan oleh header transport.
Kecepatan nyata juga dipengaruhi oleh:
- latency,
- packet loss,
- congestion,
- bandwidth,
- routing,
- algoritma aplikasi,
- server,
- protocol di atas transport.
Jika aplikasi akhirnya harus membuat mekanisme retry dan reliability sendiri, keuntungan sederhana dari “UDP lebih ringan” juga bisa berkurang.
Kenapa Real-Time App Sering Memakai UDP?
Pada komunikasi real-time, data yang terlambat terkadang sudah tidak berguna.
Contohnya suara atau posisi karakter pada game.
Bayangkan paket posisi karakter terlambat 3 detik. Mengirim ulang data lama tersebut mungkin tidak terlalu membantu karena posisi terbaru sudah tersedia.
Dalam kasus tertentu, kehilangan sebagian data lebih baik daripada menunggu retransmission yang meningkatkan delay.
Kapan TCP Lebih Cocok?
TCP cocok ketika data harus lengkap dan urut.
Contohnya:
- download file,
- HTTP/1.1,
- HTTP/2,
- SSH,
- email protocol tertentu,
- database connection,
- API request tradisional.
Kalau file ZIP kehilangan beberapa byte, hasilnya bisa rusak. Dalam kondisi seperti itu reliability sangat penting.
Kapan UDP Lebih Cocok?
UDP banyak digunakan ketika aplikasinya membutuhkan datagram, latency rendah, multicast/broadcast tertentu, atau reliability ditangani pada layer lain.
Contohnya bisa mencakup:
- DNS tradisional,
- real-time game traffic tertentu,
- voice/video real-time tertentu,
- QUIC / HTTP/3,
- network discovery tertentu.
Tetapi jangan menganggap semua game atau semua streaming selalu UDP. Banyak aplikasi menggunakan kombinasi beberapa protokol.
Ingin Menguji Proxy untuk Traffic TCP atau SOCKS?
GudangProxy menyediakan daftar proxy gratis berdasarkan protokol, negara, anonimitas, dan status koneksi. Kamu bisa membandingkan bagaimana aplikasi menggunakan jalur TCP maupun proxy yang mendukung kebutuhan jaringan tertentu.
Lihat Daftar Proxy Gratis →Apa Hubungan TCP dan UDP dengan Proxy?
Jenis proxy menentukan traffic apa yang dapat diteruskan.
HTTP proxy sangat dekat dengan traffic berbasis HTTP dan koneksi TCP.
SOCKS5 lebih umum dan mempunyai dukungan untuk:
- TCP CONNECT,
- UDP ASSOCIATE.
Karena itu SOCKS5 sering digunakan ketika aplikasi membutuhkan proxy yang tidak terbatas pada HTTP request biasa.
Pembahasan lebih lengkap tersedia di artikel SOCKS5 Proxy.
Apakah HTTP Proxy Bisa Meneruskan UDP?
HTTP proxy tradisional tidak dirancang sebagai generic UDP relay seperti SOCKS5 UDP ASSOCIATE.
HTTP CONNECT umumnya digunakan untuk membuat tunnel koneksi ke destination tertentu, terutama traffic berbasis TCP.
Namun protokol internet terus berkembang. Ada spesifikasi modern seperti HTTP Datagram dan UDP proxying melalui HTTP yang digunakan dalam sistem tertentu.
Jadi saat memilih proxy, selalu cek kemampuan implementasi server dan client, jangan hanya melihat nama “proxy”.
SOCKS5 dan TCP
Pada SOCKS5, client dapat meminta proxy membuat TCP connection menuju destination.
Setelah koneksi berhasil dibuat, traffic TCP diteruskan melalui proxy.
SOCKS5 dan UDP
SOCKS5 juga mempunyai command UDP ASSOCIATE.
Dengan mekanisme tersebut, client dapat meminta proxy menyediakan relay untuk datagram UDP.
Tetapi dukungan aktual tetap bergantung pada software dan provider proxy. Tidak semua SOCKS5 service mengaktifkan UDP relay.
Kenapa HTTP/1.1 dan HTTP/2 Menggunakan TCP?
HTTP membutuhkan transport yang reliable.
Dalam implementasi umum, HTTP/1.1 dan HTTP/2 menggunakan TCP.
MDN menjelaskan HTTP sebagai application-layer protocol yang secara tradisional dikirim melalui TCP atau koneksi TCP yang dilindungi TLS. :chatgpt-content-reference{index="2"}
TCP memastikan byte stream sampai dengan urutan yang sesuai kepada aplikasi.
Kalau HTTP Butuh Reliability, Kenapa HTTP/3 Menggunakan UDP?
Ini salah satu bagian menarik dari perkembangan web modern.
HTTP/3 menggunakan QUIC, dan QUIC berjalan di atas UDP.
Tetapi bukan berarti HTTP/3 menerima semua keterbatasan UDP mentah.
QUIC membangun fitur sendiri di atas UDP, termasuk:
- reliable streams,
- congestion control,
- connection management,
- security melalui TLS integration.
Jadi:
UDP dipakai sebagai dasar transport, sementara QUIC menambahkan mekanisme yang dibutuhkan aplikasi web modern.
Apa Itu QUIC?
QUIC adalah transport protocol modern yang menjadi dasar HTTP/3.
Salah satu keuntungan arsitekturnya adalah stream yang lebih independen sehingga packet loss pada satu stream tidak harus menahan seluruh stream lain seperti head-of-line blocking pada satu TCP connection.
MDN juga menjelaskan WebTransport berbasis HTTP/3 menggunakan QUIC dan mendukung reliable stream maupun UDP-like datagram. :chatgpt-content-reference{index="3"}
TCP vs UDP pada DNS
DNS sering dikenal menggunakan UDP port 53, tetapi DNS juga dapat menggunakan TCP.
Jadi aturan:
tidak benar.
DNS dapat memakai TCP dalam berbagai kondisi, termasuk response tertentu dan operasi yang memang membutuhkannya.
Kalau ingin memahami DNS dari awal, baca artikel Cara Kerja DNS.
UDP dan DNS over HTTPS
DNS over HTTPS atau DoH berbeda dari DNS tradisional.
DoH membawa DNS melalui HTTPS sehingga transport-nya mengikuti stack HTTP yang digunakan.
Artinya saat membahas DoH kita tidak lagi sekadar melihat paket UDP port 53 biasa.
Pembahasannya tersedia di artikel DNS over HTTPS vs DNS Biasa.
TCP dan UDP Menggunakan Port
Keduanya menggunakan port untuk membantu mengidentifikasi endpoint aplikasi.
Misalnya:
merupakan dua endpoint transport yang berbeda karena protocol transport-nya berbeda.
Nomor yang sama bisa digunakan oleh TCP dan UDP secara terpisah.
Kalau ingin memahami port lebih lengkap, baca artikel Port 80, 443, 8080, 3128 & 1080.
TCP Header vs UDP Header
Salah satu alasan UDP lebih ringan adalah header dasarnya jauh lebih sederhana.
UDP klasik hanya mempunyai beberapa field inti:
- Source Port,
- Destination Port,
- Length,
- Checksum.
TCP mempunyai lebih banyak informasi untuk mendukung fitur seperti reliability dan connection state, termasuk:
- sequence number,
- acknowledgement number,
- flags,
- window,
- checksum,
- options.
Apakah UDP Sekarang Punya Options?
Secara historis UDP dibuat sangat minimal. Namun pada 2025, RFC 9868 memperbarui RFC 768 dengan mekanisme UDP Transport Options.
Ekstensi tersebut menyediakan area option setelah UDP user data pada kondisi yang ditentukan spesifikasi.
Namun hal ini tidak mengubah prinsip utama bahwa UDP tetap merupakan datagram protocol yang tidak otomatis memberikan reliability dan ordering seperti TCP.
TCP Flow Control
TCP mempunyai flow control untuk mencegah pengirim membanjiri receiver dengan data lebih cepat daripada yang bisa diproses.
Receiver dapat mengiklankan window yang membantu pengirim menentukan jumlah data yang bisa dikirim sebelum menunggu acknowledgement lebih lanjut.
UDP Tidak Punya Flow Control Bawaan seperti TCP
UDP dasar tidak menyediakan flow control transport seperti TCP.
Kalau aplikasi mengirim terlalu cepat:
packet loss bisa meningkat jika jaringan atau receiver tidak mampu mengimbanginya.
Aplikasi yang menggunakan UDP pada skala besar perlu mempunyai strategi sendiri untuk pacing, congestion handling, atau flow control jika diperlukan.
Apa Itu Congestion Control?
Congestion terjadi ketika jaringan membawa traffic lebih banyak daripada kapasitas yang tersedia.
TCP mempunyai congestion-control behavior sebagai bagian penting dari cara TCP beroperasi di internet.
Pengirim menyesuaikan rate berdasarkan kondisi jaringan daripada terus mengirim sebanyak mungkin tanpa batas.
UDP sendiri tidak menyediakan congestion control dasar seperti TCP, sehingga aplikasi UDP bertanggung jawab menghindari perilaku yang merusak jaringan.
Apakah UDP Tidak Aman?
Istilah “unreliable” pada UDP tidak berarti UDP adalah malware atau tidak aman digunakan.
Unreliable di konteks transport berarti protocol tidak menjamin:
- delivery,
- ordering,
- duplicate protection.
Keamanan dan enkripsi adalah masalah lain.
Sebuah aplikasi UDP bisa saja menggunakan security protocol di atasnya.
QUIC misalnya menggunakan UDP tetapi mengintegrasikan TLS untuk keamanan koneksi.
TCP Juga Tidak Otomatis Berarti Terenkripsi
Sama seperti UDP, TCP sendiri bukan encryption protocol.
Contoh:
bisa berjalan tanpa TLS.
Sementara:
mempunyai encryption dari TLS.
Jadi jangan menyamakan reliability TCP dengan confidentiality.
TCP dan Firewall
Firewall dapat mempunyai rule berbeda untuk TCP dan UDP.
Contohnya:
bisa membuat HTTP/1.1 dan HTTP/2 tetap berjalan, tetapi HTTP/3 yang memakai QUIC/UDP 443 tidak dapat digunakan dan client mungkin fallback ke transport lain.
Kenapa Game Bisa Bermasalah Kalau UDP Diblokir?
Beberapa game menggunakan UDP untuk traffic real-time.
Kalau firewall memblokir port atau datagram tersebut, efeknya bisa berupa:
- tidak bisa connect ke fitur tertentu,
- voice chat gagal,
- matchmaking bermasalah,
- gameplay real-time tidak bekerja.
Tetapi setiap game mempunyai arsitektur berbeda, jadi jangan berasumsi semua game membutuhkan port UDP yang sama.
Kenapa TCP Bisa Terasa Lambat Saat Packet Loss Tinggi?
Karena TCP harus mempertahankan reliability.
Kalau paket hilang, data perlu diretransmit dan stream harus tetap diberikan secara benar kepada aplikasi.
Pada jaringan buruk, proses ini dapat meningkatkan latency yang dirasakan.
UDP bisa terus mengirim datagram berikutnya, tetapi aplikasi harus siap menerima kehilangan data.
TCP Head-of-Line Blocking
Dalam satu TCP byte stream, data harus diberikan secara berurutan.
Kalau bagian awal hilang, data setelahnya dapat menunggu sampai bagian yang hilang diperbaiki.
Fenomena ini sering disebut head-of-line blocking pada level TCP.
Salah satu alasan QUIC menarik untuk HTTP/3 adalah kemampuannya menggunakan stream yang lebih independen.
TCP vs UDP untuk API
API web tradisional melalui HTTP/1.1 atau HTTP/2 umumnya berjalan melalui TCP.
Contohnya:
Namun jika layanan menggunakan HTTP/3:
Jadi layer aplikasi yang sama bisa berkembang menggunakan transport berbeda.
TCP vs UDP untuk Streaming
Jangan menganggap semua streaming otomatis memakai UDP.
Banyak video streaming modern menggunakan HTTP melalui CDN, sehingga bisa menggunakan TCP pada HTTP/1.1/2 atau QUIC/UDP pada HTTP/3.
Sementara real-time communication seperti video conference bisa menggunakan teknologi berbeda yang lebih sensitif terhadap latency.
TCP vs UDP untuk File Transfer
File yang harus sampai lengkap biasanya cocok menggunakan reliable transport.
Kalau file:
kehilangan beberapa megabyte di tengah dan tidak ada mekanisme recovery, file dapat rusak.
Karena itu protocol transfer file tradisional banyak memanfaatkan TCP atau menambahkan reliability sendiri jika menggunakan transport lain.
TCP vs UDP untuk DNS
| Kondisi | Transport |
|---|---|
| DNS query umum | UDP sering digunakan |
| Kondisi yang membutuhkan TCP | TCP tersedia |
| DNS over HTTPS | Melalui HTTP/HTTPS stack |
| DNS over TLS | TLS melalui TCP dalam penggunaan standar |
TCP vs UDP Mana yang Lebih Baik untuk Proxy?
Tergantung traffic.
Kalau hanya membutuhkan HTTP/HTTPS browsing, TCP proxy sudah cukup untuk banyak kebutuhan.
Kalau aplikasi membutuhkan UDP relay, pilih proxy dan client yang memang mendukung UDP, misalnya implementasi SOCKS5 dengan UDP ASSOCIATE.
| Kebutuhan | Proxy yang Relevan |
|---|---|
| HTTP web traffic | HTTP/HTTPS Proxy |
| Generic TCP connection | SOCKS5 |
| UDP relay | SOCKS5 dengan UDP support |
| Web HTTPS tunnel | HTTP CONNECT |
Kesalahan Umum Tentang TCP dan UDP
- Menganggap UDP selalu lebih cepat.
- Menganggap TCP berarti terenkripsi.
- Menganggap UDP tidak aman.
- Menganggap DNS hanya memakai UDP.
- Menganggap streaming selalu memakai UDP.
- Menganggap game selalu memakai UDP saja.
- Mengira HTTP selalu menggunakan TCP pada semua versi.
- Menganggap SOCKS5 selalu mendukung UDP pada setiap provider.
- Mengira nomor port TCP dan UDP adalah endpoint yang sama.
Ringkasan TCP vs UDP
| Kebutuhan | TCP | UDP |
|---|---|---|
| Reliability bawaan | Ya | Tidak |
| Ordering bawaan | Ya | Tidak |
| Handshake | Ya | Tidak seperti TCP |
| Retransmission bawaan | Ya | Tidak |
| Overhead | Lebih tinggi | Lebih ringan |
| Real-time traffic | Bisa | Sering relevan |
| Reliable file/data stream | Sangat cocok | Butuh reliability di layer lain |
FAQ TCP vs UDP
Apa itu TCP?
TCP adalah transport protocol berbasis koneksi yang menyediakan reliable, ordered byte stream antara endpoint.
Apa itu UDP?
UDP adalah datagram transport protocol dengan mekanisme yang lebih minimal dan tidak menjamin delivery, ordering, atau duplicate protection.
Apa beda utama TCP dan UDP?
TCP menyediakan koneksi, reliability, ordering, acknowledgement, dan retransmission. UDP mengirim datagram dengan mekanisme yang lebih sederhana dan menyerahkan reliability tambahan kepada aplikasi jika diperlukan.
Apakah UDP lebih cepat dari TCP?
Tidak selalu. UDP mempunyai overhead yang lebih kecil, tetapi performa aplikasi juga dipengaruhi packet loss, latency, routing, congestion, dan mekanisme reliability yang dibangun aplikasi.
Apakah TCP terenkripsi?
Tidak. TCP sendiri tidak menyediakan encryption. HTTPS menggunakan TLS di atas transport untuk mengenkripsi traffic.
Apakah UDP tidak aman?
Tidak. UDP hanya tidak memberikan reliability bawaan seperti TCP. Aplikasi tetap bisa menambahkan mekanisme keamanan sendiri.
Apakah DNS menggunakan UDP atau TCP?
Keduanya. DNS tradisional sering memakai UDP, tetapi TCP juga merupakan bagian dari protocol DNS dan digunakan pada kondisi tertentu.
Apakah HTTP menggunakan TCP?
HTTP/1.1 dan HTTP/2 umumnya menggunakan TCP. HTTP/3 menggunakan QUIC yang berjalan di atas UDP.
Apakah SOCKS5 mendukung UDP?
Protocol SOCKS5 menyediakan UDP ASSOCIATE, tetapi server dan provider harus benar-benar mengaktifkan dukungan tersebut.
Mana yang lebih baik untuk proxy, TCP atau UDP?
Tergantung aplikasi. HTTP browsing biasanya cukup menggunakan TCP proxy, sedangkan aplikasi yang membutuhkan UDP harus memakai proxy yang memang mendukung UDP relay.
