TCP memiliki head-of-queue blocking, karena menjamin pengiriman lengkap dan sesuai pesanan, sehingga ketika suatu paket hilang dalam perjalanan, ia harus menunggu pengiriman ulang paket yang hilang, sedangkan UDP mengirimkan paket ke aplikasi saat mereka tiba , termasuk duplikat dan tanpa jaminan bahwa paket datang sama sekali atau urutan mana mereka tiba (itu sebenarnya IP dengan nomor port dan (opsional) payload checksum ditambahkan), tetapi itu tidak masalah untuk telepon, misalnya, di mana biasanya sama sekali tidak masalah ketika beberapa milidetik audio hilang, tetapi penundaan sangat mengganggu, sehingga Anda tidak repot dengan transmisi ulang, Anda hanya perlu menggandakan duplikat, mengurutkan paket-paket yang disusun ulang ke dalam urutan yang tepat untuk beberapa ratus milidetik buffer jitter , dan jika paket tidak muncul tepat waktu atau tidak, mereka hanya dilewati,mungkin diinterpolasi jika didukung oleh codec.
Juga, bagian utama dari TCP adalah kontrol aliran, untuk memastikan Anda mendapatkan sebanyak mungkin transfer, tetapi tanpa membebani jaringan (yang agak berlebihan, karena jaringan yang kelebihan beban akan menjatuhkan paket Anda, yang berarti Anda harus melakukan mentransmisikan kembali, yang melukai throughput), UDP tidak memiliki semua itu - yang masuk akal untuk aplikasi seperti telepon, karena telepon dengan codec tertentu membutuhkan sejumlah bandwidth, Anda tidak dapat "memperlambatnya", dan bandwidth tambahan juga tidak membuat panggilan lebih cepat.
Selain aplikasi real-time / latensi rendah, UDP masuk akal untuk transaksi yang sangat kecil, seperti pencarian DNS, hanya karena tidak memiliki koneksi TCP dan overhead teardown, baik dalam hal latensi maupun dalam hal penggunaan bandwidth. Jika permintaan Anda lebih kecil dari MTU biasa dan repsonse mungkin juga, Anda dapat dilakukan dalam satu perjalanan pulang-pergi, tanpa perlu menjaga status apa pun di server, dan mengontrol aliran serta memesan dan semua yang mungkin tidak terlalu berguna baik untuk penggunaan seperti itu.
Dan kemudian, Anda dapat menggunakan UDP untuk membangun pengganti TCP Anda sendiri, tentu saja, tetapi mungkin itu bukan ide yang baik tanpa pemahaman mendalam tentang dinamika jaringan, algoritma TCP modern cukup canggih.
Juga, saya kira harus disebutkan bahwa ada lebih dari UDP dan TCP, seperti SCTP dan DCCP. Satu-satunya masalah saat ini adalah bahwa (IPv4) internet penuh dengan gateway NAT yang membuatnya tidak mungkin untuk menggunakan protokol selain UDP dan TCP dalam aplikasi pengguna akhir.