UDP dan TCP

* UDP (User Datagram Protocol)

UDP adalah sebuah connectionless transport protocol yang tidak memiliki connection setup, flow control, congestion control dan juga tidak reliable. Terlepas dari ketidakreliableannya, UDP mampu mengirim data dengan rate berapa saja walaupun tentu saja tidak djiamin data pasti akan sampai di penerima (ada kemungkinan terjadi data loss).

  • Port UDP

Seperti halnya TCP, UDP juga memiliki saluran untuk mengirimkan informasi antar host, yang disebut dengan UDP Port. Untuk menggunakan protokol UDP, sebuah aplikasi harus menyediakan alamat IP dan nomor UDP Port dari host yang dituju. Sebuah UDP port berfungsi sebagai sebuah multiplexed message queue, yang berarti bahwa UDP port tersebut dapat menerima beberapa pesan secara sekaligus. Setiap port diidentifikasi dengan nomor yang unik, seperti halnya TCP, tetapi meskipun begitu, UDP Port berbeda dengan TCP Port meskipun memiliki nomor port yang sama. Tabel di bawah ini mendaftarkan beberapa UDP port yang telah dikenal secara luas.







  • Header UDP

Header UDP diwujudkan sebagai sebuah header dengan 4 buah field memiliki ukuran yang tetap seperti tersebutkan dalam tabel, Penggunaan dua dari mereka adalah opsional (latar belakang merah terang dalam diagram) seperti seperti pada gambar.










  • Karakterisik UDP

1. Membutuhkan response yang cepat. UDP tidak memiliki connection state dan connection establishment sehingga mampu memberikan response yg cepat atas setiap request dari client.

2. Mentolerir data loss. Beberapa applikasi tidak terlalu sensitive terhadap kehilangan data (selama kehilangan tersebut tidak significant), sehingga ketidak reliablean UDP tidak begitu masalah bagi applikasi seperti ini.

3. Membutuhkan kontrol yang lebih baik atas apa yang akan dikirim dan kapan data akan dikirim. Mekanisme kontrol koneksi yg dimiliki TCP akan membuat applikasi menjadi tidak luwes untuk menentukan kapan saat yg tepat untuk mengirim data sehingga bisa menimbulkan delay yg tidak dapat ditoleransi. Di samping itu, TCP akan tetap berusaha mengirimkan data (walaupun akan membutuhkan waktu yg lama) ketika terjadi kongesti, padahal beberapa aplikasi membutuhkan rate pengiriman yang

4. Memerlukan pengiriman data pada lebih dari 1 client, baik applikasi broadcast ataupun multicast. TCP tidak mampu melakukan broardcast ataupun multicast.

  • UDP tidak menyediakan layanan-layanan antar-host berikut :

1. UDP tidak menyediakan mekanisme penyanggaan (buffering) dari data yang masuk ataupun data yang keluar. Tugas buffering merupakan tugas yang harus diimplementasikan oleh protokol lapisan aplikasi yang berjalan di atas UDP.

2. UDP tidak menyediakan mekanisme segmentasi data yang besar ke dalam segmen-segmen data, seperti yang terjadi dalam protokol TCP. Karena itulah, protokol lapisan aplikasi yang berjalan di atas UDP harus mengirimkan data yang berukuran kecil (tidak lebih besar dari nilai Maximum Transfer Unit/MTU) yang dimiliki oleh sebuah antarmuka di mana data tersebut dikirim. Karena, jika ukuran paket data yang dikirim lebih besar dibandingkan nilai MTU, paket data yang dikirimkan bisa saja terpecah menjadi beberapa fragmen yang akhirnya tidak jadi terkirim dengan benar.

3. UDP tidak menyediakan mekanisme flow-control, seperti yang dimiliki oleh TCP.


  • Penggunaan UDP

UDP sering digunakan dalam beberapa tugas berikut :

1. Protokol yang "ringan" (lightweight): Untuk menghemat sumber daya memori dan prosesor, beberapa protokol lapisan aplikasi membutuhkan penggunaan protokol yang ringan yang dapat melakukan fungsi-fungsi spesifik dengan saling bertukar pesan. Contoh dari protokol yang ringan adalah fungsi query nama dalam protokol lapisan aplikasi Domain Name System.

2. Protokol lapisan aplikasi yang mengimplementasikan layanan keandalan: Jika protokol lapisan aplikasi menyediakan layanan transfer data yang andal, maka kebutuhan terhadap keandalan yang ditawarkan oleh TCP pun menjadi tidak ada. Contoh dari protokol seperti ini adalah Trivial File Transfer Protocol (TFTP) dan Network File System (NFS).

3. Protokol yang tidak membutuhkan keandalan. Contoh protokol ini adalah protokol Routing Information Protocol (RIP).

4. Transmisi broadcast: Karena UDP merupakan protokol yang tidak perlu membuat koneksi terlebih dahulu dengan sebuah host tertentu, maka transmisi broadcast pun dimungkinkan. Sebuah protokol lapisan aplikasi dapat mengirimkan paket data ke beberapa tujuan dengan menggunakan alamat multicast atau broadcast. Hal ini kontras dengan protokol TCP yang hanya dapat mengirimkan transmisi one-to-one. Contoh: query nama dalam protokol NetBIOS Name Service.


* TCP (Transmission Control Protocol)

TCP adalah protokol yang memungkinkan program-program aplikasi untuk mengakses/menggunakan layanan komunikasi bersifat connection-oriented. TCP mampu memberikan jasa pengiriman yang dapat diandalkan (reliable) sekaligus bersifat flow-controlled. Sifat flow-controlled ini memungkinkan peralatan-peralatan jaringan yang berkecepatan rendah (slower-speed network devices) dapat berhubungan dengan peralatan-peralatan jaringan yang berkecepatan tinggi (higher-speed network devices).

  • Port TCP

Port TCP mampu mengindikasikan sebuah lokasi tertentu untuk menyampaikan segmen-segmen TCP yang dikirimkan yang diidentifikasi dengan TCP Port Number. Nomor-nomor di bawah angka 1024 merupakan port yang umum digunakan dan ditetapkan oleh IANA (Internet Assigned Number Authority).

  • Karakteristik TCP

TCP memiliki karakteristik sebagai berikut:

1. Berorientasi sambungan (connection-oriented): Sebelum data dapat ditransmisikan antara dua host, dua proses yang berjalan pada lapisan aplikasi harus melakukan negosiasi untuk membuat sesi koneksi terlebih dahulu. Koneksi TCP ditutup dengan menggunakan proses terminasi koneksi TCP (TCP connection termination).

2. Full-duplex: Untuk setiap host TCP, koneksi yang terjadi antara dua host terdiri atas dua buah jalur, yakni jalur keluar dan jalur masuk. Dengan menggunakan teknologi lapisan yang lebih rendah yang mendukung full-duplex, maka data pun dapat secara simultan diterima dan dikirim. Header TCP berisi nomor urut (TCP sequence number) dari data yang ditransmisikan dan sebuah acknowledgment dari data yang masuk.

3. Dapat diandalkan (reliable): Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan sebuah nomor urut paket dan akan mengharapkan paket positive acknowledgment dari penerima. Jika tidak ada paket Acknowledgment dari penerima, maka segmen TCP (protocol data unit dalam protokol TCP) akan ditransmisikan ulang. Pada pihak penerima, segmen-segmen duplikat akan diabaikan dan segmen-segmen yang datang tidak sesuai dengan urutannya akan diletakkan di belakang untuk mengurutkan segmen-segmen TCP. Untuk menjamin integritas setiap segmen TCP, TCP mengimplementasikan penghitungan TCP Checksum.

4. Byte stream: TCP melihat data yang dikirimkan dan diterima melalui dua jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan (kontigu). Nomor urut TCP dan nomor acknowlegment dalam setiap header TCP didefinisikan juga dalam bentuk byte. Meski demikian, TCP tidak mengetahui batasan pesan-pesan di dalam byte stream TCP tersebut. Untuk melakukannya, hal ini diserahkan kepada protokol lapisan aplikasi (dalam DARPA Reference Model), yang harus menerjemahkan byte stream TCP ke dalam "bahasa" yang ia pahami.

5. Memiliki layanan flow control: Untuk mencegah data terlalu banyak dikirimkan pada satu waktu, yang akhirnya membuat "macet" jaringan internetwork IP, TCP mengimplementasikan layanan flow control yang dimiliki oleh pihak pengirim yang secara terus menerus memantau dan membatasi jumlah data yang dikirimkan pada satu waktu. Untuk mencegah pihak penerima untuk memperoleh data yang tidak dapat disangganya (buffer), TCP juga mengimplementasikan flow control dalam pihak penerima, yang mengindikasikan jumlah buffer yang masih tersedia dalam pihak penerima.

6. Melakukan segmentasi terhadap data yang datang dari lapisan aplikasi (dalam DARPA Reference Model)

7. Mengirimkan paket secara "one-to-one": hal ini karena memang TCP harus membuat sebuah sirkuit logis antara dua buah protokol lapisan aplikasi agar saling dapat berkomunikasi. TCP tidak menyediakan layanan pengiriman data secara one-to-many.



*Perbedaan antara TCP dan UDP





* TCP vs UDP

TCP vs UDP telah menjadi bahan pembicaraan yang hangat di kalangan kita. Sebagaimana kita ketahui kedua teknologi tersebut mengalami revolusi yang berbeda (atau bahkan berlawanan). TCP lahir sebagai sebuah teknologi yang berdasar pada koneksi, menjaga sesi aplikasi, dan menjamin tingkat komunikasi yang handal dan memiliki standarisasi pada tingkat flow control. UDP tidak memiliki kesemua fitur tersebut dan sangat bergantung pada aplikasi untuk menghasilkan sekumpulan fitur yang mencukupi. UDP dapat dikatakan sebagai protokol yang tidak terikat aturan. Pada saat menggunakan UDP kita dapat membuat paket yang kita kirimkan memiliki checksum atau tidak, mengirimkan paket ke satu atau banyak penerima, hingga memilih port komunikasi yang digunakan secara bebas. UDP tidak menjaga sesi koneksi dan paket yang dikirimkan bersifat independen dari satu paket ke paket yang lain sehingga urutan paket yang datang bukanlah sebuah jaminan dari protokol ini. Hal yang menarik lagi dari dukungan sekuritas, UDP tidak menawarkan mekanisme sekuritas secara built-in.
Berdasar pada argumen di atas maka dapat dipastikan membuat aplikasi berbasis UDP harus kita pikirkan dari segi manfaatnya. Sebagai contohnya UDP akan sangat sesuai apabila diimplementasikan pada presentasi serentak sebanyak 20 klien.
Hal lain yang mungkin menjadi pertimbangan pemilihan antara UDP dan TCP adalah kecepatan. Pada TCP dibutuhkan sekurang kurangnya tiga pertukaran paket. Sebagai contoh komunikasi antara Yogyakarta dan Jakarta membutuhkan tiga paket dan masing-masing adalah 200ms maka dibutuhkan waktu 600ms. Pada UDP hanya terjadi sebuah pertukaran paket seperti pada gambar berikut. Hal ini tentunya menunjukkan bahwa pada suatu waktu (terutama bila paket TCP yang dikirimkan kecil) timbul overhead yang tidak perlu. Hal ini dapat dihindarkan dengan menggunakan UDP. Hal lain tentang perbedaan TCP dan UDP adalah urutan paket. Pada aplikasi tertentu urutan paket menjadi penting sebagai contoh aplikasi transfer berkas tetapi pada kasus tertentu paket yang hilang atau tidak urut tidak terlalu berpengaruh pada aplikasi video streaming yang mendukung frame skipping.
Sebuah kesimpulan pada sisi ini adalah TCP memberikan fitur yang lebih dari sisi keamanan, fleksibilitas, dan juga kualitas. Programmer akan mudah melakukan pemrograman TCP terlebih lagi hal-hal detil tentang keamanan telah dicakup juga pada TCP. Sementara pada UDP, hal tersebut tidak ditemukan, UGP unggul dalam suatu keadaan jaringan yang membutuhkan performa tetapi dengan ketahanan yang tidak terlalu tinggi.

* Kapan menggunakan TCP dan UDP

DNS menggunakan TCP dan UDP di port komputer 53 untuk melayani permintaan DNS. Nyaris semua permintaan DNS berisi permintaan UDP tunggal dari klien yang diikuti oleh jawaban UDP tunggal dari server. Dan pada saat kapan protocol TCP digunakan? Umumnya TCP dipergunakanhanya ketika ukuran data jawaban melebihi 512 byte, atau untuk pertukaran zona DNS zone transfer. DNS zone transfer adalah sebuah mekanisme untukmereplikasi DNS data dari satu DNS ke DNS server lain. Zone transfer digunakan pada saat kita ingin mereplikasi DNS data pada DNS server kita dalam upaya menghemat bandwidth, untuk meningkatkankecepatan terhadap suatu permintaaan atau untuk membuat DNS data selalu tersedia pada saat DNS server pada internet terputus.

Read More...