UDP: apa itu, protokol tanpa koneksi dan cara kerjanya

Penulis: IT Sectr Diterbitkan: 2026-03-06 Waktu membaca: 8 mnt

UDP (User Datagram Protocol) — protokol transmisi data tanpa koneksi, bekerja di atas IP dan memberikan latensi minimal saat mengirim datagram. Berbeda dengan TCP, UDP tidak menjamin pengiriman, urutan paket, atau perlindungan dari duplikasi. Menurut data IETF RFC 768 (2024), UDP memproses lebih dari 40% lalu lintas internet global berkat panggilan video, streaming, dan permintaan DNS.

Poin utama

  • UDP — protokol tanpa koneksi, mengirim datagram tanpa konfirmasi pengiriman
  • Latensi minimal dicapai karena tidak adanya handshake, kontrol kemacetan, dan transmisi ulang
  • Digunakan dalam panggilan video, game online, DNS, DHCP, dan siaran streaming
  • Datagram UDP memiliki header hanya 8 byte dibandingkan 20–60 byte pada TCP
  • Kehilangan paket dikompensasi di tingkat aplikasi melalui FEC, transmisi ulang, atau redundansi data

Apa itu UDP?

UDP (User Datagram Protocol) — salah satu protokol kunci dari lapisan transport model TCP/IP, dikembangkan oleh David Reed pada tahun 1980. Protokol ini menyediakan mekanisme transmisi data minimal: aplikasi mengirim datagram, dan protokol tidak melacak apakah telah sampai ke penerima.

Header UDP hanya terdiri dari empat bidang: port sumber, port tujuan, panjang, dan checksum. Setiap bidang membutuhkan 2 byte, sehingga ukuran total header adalah 8 byte. Sebagai perbandingan, header TCP tanpa opsi membutuhkan 20 byte, dan dengan opsi — hingga 60 byte.

Protokol tidak mendukung fragmentasi pada levelnya sendiri — jika datagram melebihi MTU (Maximum Transmission Unit), ia difragmentasi di level IP. Jika satu fragmen hilang, seluruh datagram dibuang, karena UDP tidak dapat meminta transmisi ulang fragmen individual. Pengembang harus mengontrol ukuran datagram — untuk jaringan mobile, MTU sering kali 1400 byte, sehingga ukuran maksimum tidak boleh melebihi nilai ini.

Bagaimana UDP bekerja

Aplikasi yang menggunakan UDP membuat socket tipe SOCK_DGRAM, menentukan port dan alamat IP tujuan, dan mengirim datagram. Protokol menambahkan header minimal dan meneruskan paket ke lapisan IP. Penerima mendengarkan portnya dan mengekstrak data dari datagram yang masuk.

UDP tidak melakukan kontrol kemacetan — aplikasi dapat mengirim datagram dengan kecepatan maksimum yang didukung jaringan. Ini dapat menyebabkan kelebihan beban saluran, tetapi dalam skenario real-time, agresivitas semacam itu dapat dibenarkan: untuk panggilan video, aliran data dengan kemungkinan kehilangan lebih penting daripada menghentikan transmisi.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

Dalam contoh, dibuat socket SOCK_DGRAM untuk UDP. Metode sendto mengirim datagram tanpa koneksi — cukup mengetahui IP dan port penerima. Metode recvfrom di sisi server mengembalikan data dan alamat pengirim untuk respons. Socket UDP di platform mobile dikonfigurasi serupa, tetapi memerlukan izin tambahan: di iOS perlu menambahkan NSAppTransportSecurity untuk koneksi UDP tidak terenkripsi, dan di Android — izin INTERNET di manifes.

Kelebihan dan kekurangan UDP

Pemilihan UDP dapat dibenarkan dalam skenario di mana kecepatan lebih penting daripada keandalan. Protokol tidak membuang waktu untuk koneksi, konfirmasi, dan transmisi ulang — ini memberikan latensi minimal, tetapi mengharuskan pengembang untuk menangani kehilangan secara mandiri.

KelebihanKekurangan
Latensi rendah — tanpa handshakeTidak ada jaminan pengiriman
Header lebih kecil — 8 byteTidak ada kontrol kemacetan
Dukungan broadcast dan multicastKemungkinan duplikat paket
Independensi datagram — tanpa antrianUkuran datagram dibatasi MTU

Di aplikasi mobile, UDP digunakan melalui framework seperti WebRTC, yang menambahkan kontrol kehilangan, bitrate adaptif, dan jitter buffer di atas UDP. Ini memberikan kelebihan kecepatan tanpa kekurangan protokol mentah.

Aspek penting lain dari UDP adalah tidak adanya kontrol kemacetan. Di TCP, algoritma Slow Start dan Congestion Avoidance mengurangi kecepatan transmisi saat kehilangan paket agar tidak membebani jaringan. UDP tidak memiliki mekanisme seperti itu, sehingga pengembang harus mengimplementasikan strategi kontrol kecepatan mereka sendiri — misalnya, bitrate adaptif dalam panggilan video atau rate limiting di server game untuk mencegah kelebihan beban saluran jaringan yang berlebihan.

Di mana UDP digunakan

UDP sangat diperlukan dalam skenario di mana toleransi latensi lebih penting daripada toleransi kehilangan paket. Mari kita lihat area utama penerapan protokol dalam pengembangan mobile dan web.

Streaming audio dan video

Protokol RTP dan RTSP, yang bekerja di atas UDP, digunakan untuk mentransmisikan aliran audio dan video secara real-time. WebRTC — standar untuk panggilan video di browser dan aplikasi mobile — menggunakan UDP sebagai transport utama untuk data media dan TCP untuk sinyal. Kehilangan satu paket dalam video 30 fps tidak terlihat oleh pengguna, berbeda dengan latensi transmisi ulang yang menyebabkan pembekuan gambar yang terlihat.

Game online

Game tembak-menembak multipemain dan MOBA memerlukan latensi kurang dari 50 ms untuk sinkronisasi yang benar. UDP mentransmisikan posisi pemain, tembakan, dan peristiwa lebih cepat daripada TCP, dan kehilangan paket diabaikan saja — pembaruan berikutnya akan tiba dalam 16–33 ms. Mesin game populer, termasuk Unity dan Unreal Engine, menggunakan UDP melalui lapisan transport mereka sendiri dengan menambahkan keandalan untuk peristiwa kritis melalui konfirmasi di tingkat aplikasi.

DNS dan DHCP

Permintaan DNS menggunakan UDP di port 53, karena setiap permintaan adalah satu datagram kecil (biasanya hingga 512 byte). Jika respons tidak tiba, klien cukup mengulangi permintaan setelah timeout, yang lebih cepat daripada membuat koneksi TCP dengan jabat tangan tiga langkahnya. DHCP juga bekerja di atas UDP, karena klien belum memiliki alamat IP dan tidak dapat membuat koneksi TCP, dan paket UDP broadcast memungkinkan menemukan server DHCP di jaringan lokal.

Perbandingan UDP dan TCP

Pilihan antara UDP dan TCP adalah kompromi antara kecepatan dan keandalan. Setiap protokol optimal untuk kelas tugasnya sendiri, dan memahami perbedaannya membantu mengambil keputusan arsitektural yang tepat saat merancang interaksi jaringan di aplikasi mobile.

KriteriaUDPTCP
Pembuatan koneksiTidak diperlukanJabat tangan tiga langkah
Header8 byte20–60 byte
Jaminan pengirimanTidakYa, dengan konfirmasi
PengurutanTidakYa
Kontrol kemacetanTidakYa (AIMD, Slow Start)
PenerapanStreaming, game, DNSWeb, email, file, API

Dalam proyek mobile, sering digunakan pendekatan hibrida: TCP untuk permintaan andal (otorisasi, pemuatan data) dan UDP untuk aliran media. QUIC — protokol modern Google yang bekerja di atas UDP — menggabungkan kecepatan UDP dengan keandalan TCP dan sudah digunakan di HTTP/3.

Contoh kode UDP

Mari kita lihat server UDP sederhana di Python yang menerima pesan dari klien dan mengirim respons. Server mendengarkan di port 8888 dan memproses datagram yang masuk dalam loop tak terbatas.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('Server UDP berjalan di port 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Diterima dari {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

Server membuat socket UDP, mengikat ke port 8888, dan menunggu datagram masuk. recvfrom mengembalikan data dan alamat klien, memungkinkan respons melalui sendto. Berbeda dengan TCP, server tidak menyimpan status koneksi — setiap datagram diproses secara independen. Ini membuat server UDP dapat diskalakan: satu server dapat menangani jutaan klien tanpa mengalokasikan memori untuk setiap koneksi terpisah, yang penting untuk server DNS dan sistem matchmaking game.

Dalam pengembangan mobile, UDP sering digunakan melalui library tingkat tinggi. Misalnya, CocoaAsyncSocket untuk iOS menyediakan socket UDP dengan delegasi dan GCD untuk pemrosesan peristiwa asinkron. Di Android, kelas DatagramSocket adalah bagian dari library standar java.net dan tidak memerlukan dependensi tambahan. Untuk Flutter, ada paket udp yang menyediakan antarmuka sederhana untuk mengirim dan menerima datagram tanpa mengonfigurasi socket native.

Penting untuk dicatat bahwa banyak jaringan mobile dan firewall perusahaan memblokir lalu lintas UDP, terutama di port di atas 1024. Jika aplikasi Anda menggunakan UDP, perlu menyediakan fallback ke TCP atau pemeriksaan ketersediaan protokol melalui server STUN, seperti yang dilakukan WebRTC. Di iOS, framework sistem Network.framework dengan NWConnection mendukung TCP dan UDP, secara otomatis memilih protokol optimal berdasarkan ketersediaan. Untuk aplikasi real-time, juga disarankan untuk mengimplementasikan bitrate adaptif, yang mengurangi kualitas aliran saat kehilangan paket, memastikan kelancaran pemutaran bahkan pada saluran tidak stabil dengan tingkat kesalahan tinggi.

Pertanyaan yang sering diajukan

Apa perbedaan UDP dengan TCP?

UDP tidak membuat koneksi dan tidak menjamin pengiriman paket, yang membuatnya lebih cepat dari TCP. Header UDP — 8 byte dibandingkan 20–60 byte pada TCP. UDP cocok untuk streaming dan game, TCP — untuk permintaan web dan transfer file.

Apa itu datagram dalam UDP?

Datagram — paket data independen dengan header UDP (port sumber, port tujuan, panjang, checksum). Setiap datagram diproses secara independen, tanpa hubungan dengan yang sebelumnya. Ukuran datagram dibatasi oleh MTU jaringan dan menurut spesifikasi — hingga 65507 byte.

Bagaimana keandalan dijamin saat menggunakan UDP?

UDP tidak menyediakan keandalan di tingkat transport — ini diimplementasikan oleh aplikasi. Pengembang menambahkan nomor urut, checksum, permintaan ulang, dan koreksi kesalahan. FEC (Forward Error Correction) memungkinkan pemulihan paket yang hilang tanpa transmisi ulang.

Kapan tidak boleh menggunakan UDP?

UDP tidak cocok untuk skenario di mana integritas data sangat penting: transfer file, transaksi bank, REST-API. Dalam kasus ini, TCP menjamin bahwa setiap byte akan tiba dalam urutan yang benar. UDP juga tidak disarankan pada saluran tidak stabil dengan tingkat kehilangan tinggi.

Apa itu QUIC dan bagaimana hubungannya dengan UDP?

QUIC — protokol transport yang bekerja di atas UDP, dikembangkan oleh Google dan distandarisasi oleh IETF sebagai RFC 9000. Ini menggabungkan kecepatan UDP dengan keandalan TCP, mendukung multipleksing tanpa pemblokiran dan enkripsi bawaan. HTTP/3 menggunakan QUIC sebagai lapisan transport.

Kesimpulan

  • UDP — protokol tanpa koneksi dengan latensi minimal dan header 8 byte
  • Tidak menjamin pengiriman, urutan paket, atau perlindungan dari duplikasi
  • Digunakan dalam panggilan video, game online, DNS, DHCP, dan siaran streaming
  • Pilihan UDP atau TCP tergantung pada keseimbangan kecepatan dan keandalan dalam skenario tertentu
  • Kehilangan paket dikompensasi di tingkat aplikasi melalui FEC, permintaan ulang, atau redundansi
  • QUIC di atas UDP menggabungkan kecepatan UDP dengan keandalan TCP dalam protokol HTTP/3
  • Pengembang harus mengontrol ukuran datagram dan menyediakan fallback ke TCP saat UDP diblokir atau difilter di jaringan

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga