TCP merupakan protokol berorientasi connection. Ada kalanya dimana protokol berorientasi connectionless dibutuhkan, makanya UDP digunaka. UDP digunakan untuk trivial file transfer protocol (TFTP) dan remote call procedure (RCP). Komunikasi connectionless tidak mendukung reliabilitas, artinya tidak ada informasi yang yang diterima oleh mesin pengirim yang mengindikasikan data diterima oleh mesin penerima dengan benar. Protokol connctionless juga tidak memiliki kemampuan untuk melakukan recover terhadap data yang mengalami error. UDP lebih sederhana dinbanding TCP. UDP berhubungan langsung dengan IP tanpa adanya mekanisme flow control dan error-recovery.
Header message UDP lebih sederhana dibandingkan TCP. Sebagaimana terlihat pada gambar . Field padding dapat ditambahkan ke datagram untuk memastikan bahwa message terdiri atas multiple 16-bit.
Field-fieldnya adalah sebagai berikut:
- Source port: field optional dengan nomor port. Jika tidak ada nomor port yang ditentukan, field tersebut diset menjadi 0.
- Destination port: nomor port mesin tujuan.
- Length: panjang datagram, termasuk header dan data.
- Checksum: field dengan 16-bit komplement satu dari jumlah komplemen satu dari datagram, termasuk pseudoheadewr yang sama dengan TCP.
Field checksum pada UDP hanya merupakan optional, tetapi jika tidak digunakan, maka tidak akan ada checksum pada segmen data karena checksum IP hanya digunakan pada header IP. Jika checksum tidak digunakan, field ini akan diset menjadi 0.
UDP adalah protokol transport yang digunakan secara luas pada lapisan di atas IP. Seperti TCP, UDP menggunakan port dan menyediakan konektivitas end-to-end antara aplikasi client dan server. UDP merupakan protokol yang kecil dan efisien. Tetapi, berbeda dengan TCP, UDP tidak menjamin pengiriman – aplikasi harus mengimplementasikan mekanisme error recovery-nya sendiri — jika memerlukan mekanisme tersebut. Hal ini membuatnya cocok untuk beberapa aplikasi, tetapi tidak untuk beberapa yang lain.
Dalam beberapa hal, UDP mirip dengan TCP :
- UDP adalah protokol transport : UDP hanya berhubungan dengan komunikasi antara dua end point (misalnya aplikasi client pada mesin Anda, dan aplikasi server pada mesin remote). Intermediate router tidak berhubungan dengan data UDP dalam paket yang dikirimkannya – router hanya beroperasi pada layer IP atau network lower-down.
- UDP menggunakan port untuk membedakan antara trafic dari banyak aplikasi UDP pada mesin yang sama, dan untuk mengirim paket yang tepat ke aplikasi yang sesuai (ini disebut demultiplexing). UDP dan port-nya menyediakan interface antara program aplikasi dan layar networking IP.
UDP berbeda dari TCP dalam beberapa hal penting, karena:
- UDP adalah “datagram oriented”, TCP adalah “session-oriented”. Datagram adalah paket informasi self-contained; UDP berhubungan dengan datagram atau paket individu yang dikirim dari client ke server, atau sebaliknya.
- UDP adalah connectionless. Client tidak membangun koneksi ke server sebelum mengirim data – client hanya mengirim data secara langsung.
- UDP “tidak andal” dalam pengertian jaringan formal :
- Paket dapat hilang. UDP tidak dapat mendeteksinya.
- Program aplikasi – client atau server – (sebagai kebalikan TCP/IP stack sendiri) harus mendeteksi paket yang hilang dan menangani transmisi ulang, dan lain-lain. Aplikasi sering menunggu hingga timeout habis, dan kemudian mencoba lagi.
- Paket dapat mengalami kerusakan. Paket UDP berisi checksum semua data dalam paket. Checksum ini memungkinkan UDP mendeteksi kapan suatu paket mengalami kerusakan. Jika hal ini terjadi, maka paket tersebut dikeluarkan, dan sebagaimana biasa aplikasi-lah yang harus mendeteksi hal ini dan melakukan transmisi ulang sepenuhnya.
- Operasi checksum ini dapat dihentikan, dan beberapa aplikasi melakukannya untuk alasan unjuk kerja. Akan tetapi hal ini dapat berarti paket yang rusak tidak terdeteksi atau layer aplikasi harus melakukan pemeriksaan integritas data sendiri, hal ini merupakan false economy (penghematan finansial yang sebenarnya menuju pada pengeluaran yang lebih besar)
- Karena UDP adalah datagram-oriented dan pada level protokol setiap paket berdiri sendiri, maka UDP tidak memiliki konsep paket sesuai urutan, yang selanjutnya berarti tidak memerlukan nomor urut pada paket tersebut.
- Sejak pertama kali dikembangkan, TCP telah dilengkapi dengan mekanisme yang sangat canggih untuk mengendalikan kecepatan aliran dalam koneksinya, untuk menghindari kemacetan dan kehilangan paket yang berlebihan. Karena UDP hanya mengirim paket tunggal, yang berdiri sendiri, maka UDP tidak memerlukan mekanisme kontrol yang rumit. Hal ini membuat UDP lebih mudah dan lebih kecil (dalam baris data dan memori) untuk diimplementasikan, tetapi juga membuatnya tidak cocok untuk sejumlah besar data.
Jika suatu aplikasi diimplementasikan menggunakan UDP, bukannya TCP, maka aplikasi tersebut harus memiliki sendiri deteksi paket-hilang, retry, dan lain sebaginya.
UDP mewarisi sifat IP, yaitu connectionless dan tidak andal. UDP sebagai layer transport sangat tipis di atas IP untuk memberikan akses aplikasi ke fasilitas networking dasar IP, tanpa menambahkan fungsionalitas tambahan yang sangat banyak selain port dan checksum. (sebaliknya, TCP juga merupakan layer transport tetapi tidak melakukan banyak hal selain komunikasi paket IP dasar)
Pada kehidupan sehari-hari UDP dianalogikan seperti proses pengiriman pesan pada alat komunikasi telepon selular dengan menggunakan fasilitas SMS (Short Messsage Service) dimana kita tidak harus selalu berada ditempat untuk menunggu pesan karena pesan yang dikirim melalui fasilitas SMS akan sampai sekalipun telepon selular itu tidak diaktifkan. Sedang TCP dianalogikan seperti proses komunikasi langsung pada telepon dimana kita harus berada ditempat untuk menjawab langsung telepon dari seseorang yang berada ditempat lain.