
UDP (User Datagram Protocol) merupakan salah satu protokol pada lapisan transport yang digunakan untuk mengirimkan data melalui jaringan berbasis IP. UDP dirancang dengan mekanisme yang sederhana dan overhead yang rendah sehingga dapat digunakan ketika aplikasi membutuhkan komunikasi dengan latensi rendah.
Berbeda dengan TCP yang menyediakan mekanisme koneksi, acknowledgment, retransmission, dan pengurutan data, UDP mengirimkan datagram tanpa melakukan pembentukan koneksi terlebih dahulu. RFC 768 mendefinisikan UDP sebagai mekanisme pengiriman pesan dengan mekanisme protokol minimum, sehingga pengiriman dan perlindungan terhadap duplikasi tidak dijamin oleh UDP itu sendiri.
Dalam dunia industri, pemahaman mengenai UDP penting karena komunikasi antara PLC, Industrial PC, SCADA, server, perangkat monitoring, dan aplikasi industri sering melibatkan komunikasi berbasis Ethernet dan IP.
Apa Itu UDP?
UDP adalah protokol transport yang bekerja di atas IP. Fungsi utamanya adalah membawa data dari suatu aplikasi pada satu perangkat menuju aplikasi pada perangkat lain menggunakan IP address dan port number.
Secara sederhana:
IP address menentukan perangkat tujuan, sedangkan port menentukan service atau aplikasi yang menjadi tujuan komunikasi.
Contohnya:
Source IP : 10.0.0.10
Source Port : 4000
Destination IP : 10.0.0.20
Destination Port : 5000
Data : Temperature = 25.6 °C
Artinya, sebuah aplikasi pada perangkat 10.0.0.10 mengirim data kepada aplikasi yang menggunakan UDP port 5000 pada perangkat 10.0.0.20.
Bagaimana Cara Kerja UDP?
Proses komunikasi UDP dapat dijelaskan melalui beberapa tahapan.
1. Aplikasi menghasilkan data
Pertama, aplikasi pada perangkat pengirim menghasilkan data yang akan dikirim.
Misalnya sebuah sistem monitoring memperoleh data:
Temperature = 25.6 °C
Pressure = 5.2 bar
Flow = 125 m³/h
Data tersebut kemudian diberikan kepada UDP melalui sistem operasi.
2. UDP menambahkan header
UDP kemudian menambahkan header ke data aplikasi.
Header UDP memiliki empat field utama:
- Source Port
- Destination Port
- Length
- Checksum
Struktur sederhananya:
+----------------------+----------------------+
| Source Port | Destination Port |
+----------------------+----------------------+
| Length | Checksum |
+----------------------+----------------------+
| Data |
+---------------------------------------------+
Struktur ini merupakan format dasar UDP yang didefinisikan dalam RFC 768.
3. Datagram UDP dikirim melalui IP
Setelah UDP membentuk datagram, datagram tersebut kemudian dibawa oleh IP.
Secara konseptual:
Application Data
↓
UDP Header + Data
↓
IP Header + UDP Header + Data
↓
Ethernet Frame
↓
Network
Pada jaringan Ethernet, paket kemudian diteruskan melalui switch, router, atau perangkat jaringan lainnya sesuai dengan konfigurasi jaringan.
4. Receiver menerima paket
Pada sisi penerima, proses berlangsung secara berlawanan:
Ethernet
↓
IP
↓
UDP
↓
Destination Port
↓
Application
UDP memproses datagram berdasarkan port tujuan dan menyerahkan data kepada aplikasi yang menggunakan port tersebut.
UDP Bersifat Connectionless
Salah satu karakteristik utama UDP adalah connectionless.
Artinya, UDP tidak melakukan proses pembentukan koneksi sebelum data dikirim.
Pada TCP terdapat proses seperti:
Client ── SYN ────────> Server
Client <─ SYN/ACK ──── Server
Client ── ACK ────────> Server
Setelah proses tersebut, komunikasi data dilakukan melalui koneksi TCP.
UDP tidak membutuhkan proses tersebut:
Sender ───── UDP DATA ─────> Receiver
RFC 8085 menjelaskan bahwa UDP tidak melakukan pembentukan koneksi end-to-end sehingga tidak memiliki overhead connection establishment dan teardown seperti protokol yang connection-oriented.
Hal tersebut membuat UDP memiliki mekanisme yang lebih sederhana.
UDP Tidak Menjamin Data Sampai
Hal penting yang harus dipahami adalah bahwa UDP tidak menyediakan reliability secara bawaan.
Misalnya pengirim mengirim lima datagram:
1 → 2 → 3 → 4 → 5
Receiver dapat saja menerima:
1 → 2 → 4 → 5
Datagram nomor 3 dapat hilang di perjalanan.
UDP juga tidak menjamin bahwa datagram akan diterima dalam urutan yang sama seperti ketika dikirim. Datagram dapat hilang, terduplikasi, atau datang tidak berurutan.
UDP sendiri juga tidak melakukan retransmission.
Jika sebuah aplikasi membutuhkan:
- acknowledgment,
- sequence number,
- timeout,
- retransmission,
- data ordering,
maka mekanisme tersebut harus disediakan oleh aplikasi atau protokol yang menggunakan UDP. Untuk aplikasi yang membutuhkan reliable dan ordered delivery, IETF merekomendasikan penggunaan protokol transport yang memang menyediakan fitur tersebut apabila memungkinkan.
UDP Memiliki Checksum
Walaupun UDP tidak menyediakan reliability seperti TCP, UDP memiliki mekanisme checksum untuk membantu mendeteksi kerusakan data.
Checksum dapat membantu receiver mengetahui apakah datagram mengalami perubahan atau kerusakan selama perjalanan.
Secara sederhana:
Sender
│
│ UDP Datagram
↓
Network
│
│ Data mengalami kerusakan
↓
Receiver
│
└── Checksum tidak sesuai
↓
Datagram dibuang
Namun checksum UDP bukan mekanisme keamanan atau jaminan integritas end-to-end yang kuat. Untuk kebutuhan integritas data yang lebih tinggi, aplikasi dapat menggunakan mekanisme tambahan seperti CRC atau hash sesuai kebutuhan sistem.
Mengapa UDP Memiliki Overhead Rendah?
UDP hanya menyediakan mekanisme transport yang relatif minimal.
UDP tidak menyediakan beberapa mekanisme seperti:
- Connection establishment
- ACK untuk setiap data
- Retransmission bawaan
- Sequence management untuk ordered delivery
- Flow control seperti TCP
Akibatnya, overhead protokol UDP relatif rendah.
Namun perlu dipahami bahwa UDP tidak otomatis berarti selalu lebih cepat daripada TCP dalam setiap kondisi. Keuntungan utamanya adalah mekanisme yang sederhana dan tidak memerlukan overhead koneksi serta reliability seperti TCP.
Contoh Komunikasi UDP pada Sistem Industri
Misalnya terdapat sistem:
┌─────────┐
│ PLC │
└────┬────┘
│
│ Ethernet
↓
┌──────────────┐
│ Industrial PC│
└──────┬───────┘
│
│ UDP
↓
┌──────────────┐
│ Application │
│ / Monitoring │
└──────────────┘
PLC dapat menghasilkan data proses secara periodik:
Time Data
0 ms 100
100 ms 101
200 ms 102
300 ms 103
400 ms 104
Jika satu datagram hilang:
100 → 101 → [102 hilang] → 103 → 104
Untuk aplikasi tertentu yang selalu menerima data terbaru, kehilangan satu data sesaat mungkin tidak terlalu penting karena data berikutnya segera datang.
Tetapi untuk data yang harus lengkap dan berurutan, mekanisme reliability harus dipertimbangkan dengan serius.
Pemilihan UDP atau TCP sebaiknya didasarkan pada kebutuhan aplikasi, bukan hanya berdasarkan anggapan bahwa UDP selalu lebih cepat.
IP Address dan Port pada UDP
Dalam komunikasi UDP terdapat dua informasi yang sangat penting:
IP Address
IP address digunakan untuk mengidentifikasi endpoint pada jaringan IP.
Contoh:
10.10.10.20
Port
Port digunakan untuk mengidentifikasi service atau aplikasi pada endpoint tersebut.
Contoh:
UDP Port = 5000
Sehingga alamat komunikasi dapat ditulis:
10.10.10.20:5000
Secara sederhana dapat dipahami:
IP address = alamat perangkat
Port = alamat service/aplikasi
UDP memang menggunakan source port dan destination port dalam header-nya.
Perbandingan UDP dan TCP
| Parameter | UDP | TCP |
|---|---|---|
| Jenis komunikasi | Connectionless | Connection-oriented |
| Connection setup | Tidak ada | Ada |
| ACK bawaan | Tidak ada | Ada |
| Retransmission | Tidak ada | Ada |
| Urutan data | Tidak dijamin | Dijaga |
| Reliability | Tidak disediakan UDP | Disediakan TCP |
| Flow control | Tidak ada | Ada |
| Overhead | Rendah | Lebih tinggi |
| Cocok untuk | Aplikasi yang membutuhkan mekanisme sederhana dan latency rendah | Data yang membutuhkan reliable dan ordered delivery |
UDP dan TCP memiliki tujuan yang berbeda. UDP menyediakan transport yang minimal, sedangkan TCP menyediakan berbagai mekanisme untuk reliable, ordered delivery.
Hal yang Perlu Diperhatikan Saat Menggunakan UDP
UDP memberikan fleksibilitas kepada aplikasi, tetapi tanggung jawab desain juga menjadi lebih besar.
Jika UDP digunakan untuk aplikasi tertentu, perancang sistem perlu mempertimbangkan:
1. Packet loss
Apa yang terjadi jika sebuah paket hilang?
Apakah sistem dapat melanjutkan operasi menggunakan data berikutnya?
2. Data ordering
Apakah urutan data penting?
Jika penting, aplikasi mungkin membutuhkan sequence number.
Contohnya:
Sequence 100
Sequence 101
Sequence 102
Sequence 103
Receiver dapat mengetahui apakah ada data yang hilang atau datang tidak berurutan.
3. Timeout
Aplikasi dapat menggunakan timeout untuk mengetahui apakah komunikasi masih aktif.
Contohnya:
Data terakhir diterima
↓
Timer
↓
Tidak ada data
↓
Communication Timeout
4. Retransmission
Jika data tertentu sangat penting, aplikasi dapat merancang mekanisme pengiriman ulang.
5. Congestion
UDP sendiri tidak menyediakan mekanisme congestion control seperti TCP. Karena itu, aplikasi yang menggunakan UDP perlu memperhatikan rate pengiriman agar tidak menyebabkan beban jaringan yang berlebihan. RFC 8085 memberikan pedoman khusus mengenai penggunaan UDP dan congestion control.
Kesimpulan
UDP (User Datagram Protocol) adalah protokol transport yang dirancang dengan mekanisme sederhana dan overhead rendah.
Cara kerja dasarnya adalah:
Aplikasi
↓
Data
↓
UDP Header
↓
IP
↓
Ethernet
↓
Network
↓
Receiver
↓
UDP
↓
Aplikasi
Karakteristik utama UDP adalah connectionless dan tidak menyediakan reliability, retransmission, ordering, maupun flow control seperti TCP.
Karena itu, UDP dapat menjadi pilihan untuk aplikasi yang membutuhkan komunikasi sederhana dengan latency rendah, sementara mekanisme reliability yang diperlukan harus dirancang pada tingkat aplikasi atau protokol di atas UDP.
Dalam sistem otomasi industri, pemahaman terhadap UDP menjadi penting ketika melakukan integrasi antara PLC, Industrial PC, SCADA, server, dan aplikasi berbasis jaringan.
Pada akhirnya, pemilihan UDP atau TCP harus mempertimbangkan kebutuhan sistem: apakah aplikasi lebih membutuhkan mekanisme transport yang minimal dan latency rendah, atau membutuhkan pengiriman data yang reliable dan berurutan.