Wednesday, April 3, 2013

UDP and TCP



Pada internet protocol suite , layer transport merupakan layer yang berada diatas layer network. Jika layer network berfungsi untuk mengatur transfer data antar end-system, maka fungsi dari layer transport ini adalah untuk mengatur transfer data antar proses. Proses yang terjadi pada saat transfer data ini bisa menggunakan berbagai macam protocol seperti ;UDP (User Datagram Protocol), TCP (Transmisson Control Protocol), DCCP (Diagram Congestion Control Protocol), SCTP (Stream Control Transmission Protocol), dan RSVP (Resource Reservation Protocol). Dimana tiap-tiap protocol tersebut memiliki karakteristik dan fungsi yang berbeda-beda.

Pada tulisan kali ini saya akan coba membandingkan dua protocol yang paling sering digunakan di internet yaitu UDP dan TCP. 

    UDP
UDP merupakan protocol internet yang mengutamakan kecepatan data. Protocol ini biasanya digunakan untuk streaming video ataupun fasilitas real-time yang lain. Oleh karena itu pada UDP ini tidak memerlukan adanya setup koneksi terlebih dahulu karena hal tersebut dapat menyebabkan adanya tambahan delay. Selain itu, protocol ini termasuk dalam protocol yang sederhana, artinya antara penerima dan pengirim tidak perlu menjaga session atau status koneksi , ukuran headernya juga sederhana. UDP ini juga tidak memerlukan congestion control (control kemacetan) pada koneksinya. Maksudnya adalah UDP dapat mengirimkan per segment tanpa dipengaruhi oleh kesibukan jaringan. Berikut karakteristik lebih lanjut dari Protokol UDP :
-      Connectionless, maksudnya adalah tidak ada aktifitas handshaking antaraa UDP dan penerimanya saat akan dilakukan pengiriman data sehingga data tersebut dikirim melalui jaringan dan mencapai ke computer tujuan tanpa membuat suatu koneksi langsung. Hal tersebut beresiko karena data yang dikirim bisa hilang
-    Unreliable, maksudnya adalah pesan-pesan yang dikirim menggunakan protocol ini akan dikirim sebagai datagram tanpa adanya nomor urut atau pesan ACK (Acknowledgment). Hal tersebut menyebabkan pesan-pesan yang diterima di tujuan mungkin saja diterima dalam keadaan yang tidak urut sehingga protocol yang berjalan diatasnya (layer aplikasi) berpean penting dalam memulihkan pesan-pesan tersebut.
Contoh protocol aplikasi yang menggunakan UDP :
-          DNS
-          SNMP
-          TFTP
-          SunRPC port 111
-          dll
      TCP
TCP merupakan protocol layer transport yang paling sering digunakan di internet. Berikut karakteristiknya :
-          Point to point
Pada TCP komunikasi yang dilakukan antar user-nya bersifat point to point , maksudnya adalah satu pengiriman data dikirim oleh satu pengirim dan hanya diterima oleh satu penerima juga
-          Reliable
Berbeda dengan UDP, protocol TCP ini  bersifat reliable yang artinya data yang dikirim menggunakan TCP ini akan dikirim dengan mekanisme tertentu agar data bisa diterima secara berurutan,  Sehingga ada jaminan data yang dikirim dengan protocol ini bisa sampai ke tujuan dan tidak hilang
-          Terdapat buffer di pengirim dan penerima
-          Full duplex data
Pada protocol ini memungkinkan adanya aliran data dua arah pada koneksi yang sama
-          Connection-oriented
Pada TCP, saat pengirim akan mengirimkan data ke penerima akan terjadi proses handshaking terlebih dahulu antara keduanya. Hal ini bertujuan agar dapat melakukan sinkronisasi terhadap nomor urut dan nomor acknowledgement yang dikirmkan kedua belah pihak dan saling bertukar ukuran TCP window
-          Flow Control
Dengan adanya flow control ini,aliran data yang dikirim akan selalu dikontrol sehingga pengirim tidak  akan membuat  penerima menjadi kewalahan saat menerima data-data yang dikirimkan tersebut.
Membandingkan TCP dan UDP Menggunakan Wireshark
Pertama-tama capture-lah paket-paket pada suatu jaringan yang menggunakan TCP dan UDP, kemudian pilih salah satu paket masing-masing untuk UDP dan TCP dan liat detail dari paket tersebut khususnya pada layer  transport-nya. Berikut contohnya





Pada gambar diatas dapat dilihat perbandingan protocol layer transport antara kedua paket tersebut. gambar yang bawah merupakan paket yang  transport layer-nya  menggunakan protocol TCP, sedangkan gambar yang atas menggunakan protocol UDP. Pada gambar tersebut terlihat jika paket yang menggunakan protocol TCP lebih kompleks daripada layer transportnya daripada UDP. Hal tersebut terjadi Karena kedua protocol ini memiliki karakteristik yang berbeda. Dapat kita lihat pada gambar TCP memiliki banyak parameter yang tidak dimiliki oleh UDP pada detail paketnya seperti space number, header length acknowledgement  number, flags, SEQ/ACK analysis,dll. Sedangkan UDP hanya memiliki beberapa parameter seperti source port, destination port, length, dan checksum.
UDP memiliki karakteristik yang sederhana karena protocol ini memang dibuat untuk mengoptimalkan kecepatan pengiriman datanya. Apabila protocol UDP diberi parameter yang banyak dan kompleks, maka akan terjadi delay yang cukup panjang dan akan melenceng dari tujuan utamanya yaitu mengoptimalkan kecepatan transfer data. Paket yang menggunakan protocol ini memerlukan kecepatan data yang optimal karena protocol ini biasanya digunakan pada aplikasi-aplikasi real time seperti streaming video,audio,dll.
Kemudian pada TCP terdapat banyak parameter pada paketnya karena protocol ini mengutamakan keandalanya dalam pengiriman data ke tujuan. Maksudnya adalah pada protocol ini terdapat jaminan bahwa paket yang dikirim akan sampai ke alamat tujuan tanpa ada kerusakan pada paket dan berurutan. Protocol ini memiliki suatu mekanisme sendiri agar paket tersebut dapat diterima secara utuh dan berurutan. Terjadi proses handshaking terlebih dahulu pada saat akan mengirimkan paket sehingga terjadi sinkronisasi terhadap nomor urut dan nomor acknowledgement pada kedua belah pihak. Itulah mengapa terdapat banyak parameter pada paket detailnya karena terjadi proses yang cukup kompleks pada pengiriman datanya berbeda dengan protocol UDP yang tidak menggunakan proses handshaking pada pengiriman datanya.