Sabtu, 16 November 2013

Transport Layer (UDP dan TCP)

haloo. . .
kembali lagi.. :)
saat ini, saya akan berbagi sedikit tentang salah satu dari layer OSI yaitu transport layer.
namun, maaf bila dalam penjelasan ini, ada pernyataan yang salah (maklumlah baru belajar :D)

Apa sih transport layer itu ?
Apa saja fungsi transport layer ?
bagaimana mekanisme dari protokol yang ada pada transport layer ??
Naah, ini penjelasannya.

Transport layer merupakan salah satu dari layer OSI yang berada pada tingkat ke-empat, yang termasuk dalam kelompok Lower Layer atau layer yang lebih dekat dengan mesin.
Transport layer bertanggung jawab atas pengiriman segmen (segment) dari proses sumber (source) ke proses tujuan (destination).


Fungsi Transport Layer
Berikut beberapa fungsi transport layer :
  • Komunikasi end-to-end logik : Setiap host bisa saja memiliki lebih dari 1 aplikasi yang memanfaatkan network untuk proses komunikasi. Setiap aplikasi tersebut bisa saja berkomunikasi dengan satu atau lebih aplikasi pada host lain.
  • Segmenting : Layer transport bertanggung jawab untuk melakukan segmentasi data yang diterima dari layer atas (layer application). Setiap pecahan data hasil segmentasi akan di enkapsulasi dengan header yang berisi informasi-informasi layer transport seperti, nomor urut (sequence) dan juga port address pengirim dan penerima.
  • Reassembling data: Pada sisi penerima, transport layer memanfaatkan informasi yang ada pada header layer transport untuk menyusun ulang segmen-segmen data menjadi data yang utuh sebelum diberikan ke layer atas (application).
  • Identifikasi aplikasi (port-addresssing) : Agar data dapat disampaikan pada aplikasi yang tepat, layer transport harus mengidentifikasi target aplikasi yang dituju. Layer transport. Untuk itu layer transport memberikan identifier/addressing untuk aplikasi (service/layanan) yang disebut dengan port number.
  • Multiplexing/Demultiplexing : memungkinkan layer bawah (network) untuk memproses data tanpa memperhatikan aplikasi mana yang menginisiasi data tersebut, dan hanya focus pada mesin (host) yang dituju.
 


  • Reliable Delivery : Banyak hal yang bisa menyebabkan data korup atau hilang dalam proses. pengiriman, transport layer dapat memastikan penerima mendapatkan data tersebut dengan mengirim ulang data yang hilang.
  • Sequencing : Banyaknya rute untuk mencapai tujuan dapat menyebabkan data diterima tidak berurutan, transport layer dapat menyusun ulang data secara benar dengan adanya penomoran dan sequencing.
  • Flow control : Memori komputer atau bandwidth network tidak tak terbatas, transport layer bisa meminta aplikasi pengirim untuk mengurangi kecepatan pengiriman data. Hal ini dapat mengurangi hilangnya data dan proses pengiriman ulang.

Port Addressing dan Socket Addressing
Port merupakan 16 bit nomor yang digunakan oleh host-to-host protocol guna mengenali level yang lebih tinggi. Ada beberapa jenis port addressing pada transport layer, yaitu :
  1. well-known port
  • Antara 0 – 1023
  • Disediakan untuk aplikasi dan servis yang sudah umum digunakan
  • Contoh : http (80), ftp (21), smtp (25) dan lain-lain
    2. registered port
  • Antara 1024 – 49151
  • Disediakan untuk aplikasi/servis yang tidak umum
  • Bisa juga digunakan secara dinamis sebagai source port di sisi client. 
    3. dynamic port / ephemeral

  • Antara 49152 – 65535
  • Digunakan secara dinamis sebagai source port di sisi client.
Gambar : port addressing

Socket merupakan penghubung dari aplikasi ke hardware, yang digunakan oleh sebuah proses untuk meminta layanan jaringan dari sistem informasi.
Gambar : socket addressing
Beberapa aplikasi memerlukan requirement pengiriman data yang berbeda, karena itulah dibuat beberapa protokol transport yang berbeda untuk memenuhi requirement tersebut. 2 protokol paling terkenal adalah TCP dan UDP.
  1. TCP (Transmission Control Protocol)

  • Reliability TCP dijalankan dengan membangun komunikasi connection-oriented (source menciptakan koneksi dengan destination host, sebelum mengirimkan segmen pada destination ), jadi sebelum dikirim, disampaikan dulu. 
  • Terdapat mekanisme flow control dengan acknowledgement untuk memastikan tidak ada error, pengirim tahu bahwa data telah sampai ke tujuan jika menerima ack dari penerima. Jika tidak ada ack yang diterima maka pengirim berasumsi bahwa data yang dikirim tadi tidak sampai ke tujuan dan akan melakukan transmisi ulang data tersebut. Namun ack ini menyebabkan traffic network berlebih untuk pengirimannya dan juga retransmisinya. flow control pada transport layer bersifat "end-to-end".



Field-field yang ada pada header TCP seperti pada gambar dibawah ini dapat memungkinkan terjadinya komunikasi reliable (mekanisme flow control) dan communication-oriented.
Gambar : header TCP
keterangan :
  1. Source Port Number : Port number pada device yang menginisiasi koneksi TCP. Biasanya bernilai random diatas 1023.
  2. Destination Port Number : Port number yang mengidentifikasikan protokol layer atas / aplikasi yang berjalan pada device tujuan.
  3. Sequence Number : Nomor urut masing-masing segmen.
  4. Acknowledgment (ACK) : Nomor octet (byte) selanjutnya yang ditunggu oleh penerima.
  5. Window Size : Menunjukkan berapa banyak byte yang bisa dikirimkan sebelum menunggu datangnya acknowledgment dari penerima.

Komunikasi Klien-Server
Pada komunikasi TCP, setiap servis akan di assign (default/manual) dengan sebuah port number. Dua atau lebih aplikasi servis tidak boleh menggunakan port yang sama. Ketika sebuah port telah di assign ke sebuah aplikasi server, maka port itu disebut open pada sisi server.



TCP Three-way Handshake

Sebelum transaksi data via TCP, 2 host harus menjalin koneksi. jadi sebelum mengirim data, harus dibilang terlebih dahulu. Client menginisiasi komunikasi dengan server untuk menunjukkan bahwa :
  • Ada tidaknya mesin tujuan
  • Apakah mesin tujuan menjalankan aplikasi yang direquest pada port tujuan.
  • Client ingin menjalin komunikasi pada port tujuan.


TCP Connection Termination

Dalam komunikasi TCP, hal ini digunakan untuk menutup koneksi yang telah terjalin sebelumnya. Dibutuhkan two-way handshake untuk menutup satu arah session. Karenanya untuk menutup 2 arah session (client-server dan server client) dibutuhkan 4 kali pertukaran data. jadi istilahnya, "sebelum pergi, lapor dulu"

TCP Acknowledgement
Salah satu fitur protokol TCP adalah memastikan sampainya data ke penerima. Layanan TCP pada sisi penerima akan mengirimkan paket acknowledgement kepada pengirim data untuk memberi tahu bahwa data telah diterima.
Sequence number dan acknowledgement number digunakan bersamaan untuk mengkonfirmasi diterimanya sebuah segmen data. Sequence number mengindikasikan jumlah byte relatif yang telah dikirim dalam satu session. Sedangkan acknowledgement number mengindikasikan byte berikutnya yang ditunggu oleh penerima.


TCP Flow Control
Flow control membantu reliability proses transmisi dengan cara menyesuaikan kecepatan efektif untuk aliran data antara 2 mesin. Ketika pengirim (source) diberi tahu bahwa sejumlah data telah diterima, maka source dapat meningkatkan jumlah data untuk session tersebut.
Window size menentukan jumlah data yang dapat dikirimkan oleh source tanpa harus menunggu adanya acknowledgement dari penerima. TCP akan memilih kecepatan transmisi data semaksimal mungkin yang dapat di dukung oleh network dan device dan proses retransmisi bisa dikurangi seminimal mungkin.
contoh aplikasi : pengiriman e-mail, HTTP, TFTP.


 2. UDP (User Datagram Protocol)
Protokol UDP menyediakan fungsi-fungsi layer transport namun jauh lebih sederhana daripada TCP. 
  • Memiliki overhead yang lebih rendah daripada TCP karena bersifat connection-less (tidak menjalin koneksi sebelum mengirim data seperti yang dilakukan TCP), yang berarti data akan langsung dikirimkan begitu saja tanpa dikonfirmasi terlebih dahulu.
  • Tidak menyediakan fitur-fitur retransmission, mekanisme flow control, dan buffering (penyanggaan) terhadap data yang masuk.
  • tidak ada proses sequencing pada komunikasi UDP, sehingga datagram yang hilang tidak akan dikirim ulang.
  • Beberapa datagram (segmen) untuk TCP kadang mengambil jalur yang berbeda untuk sampai ke tujuan. Hal itu dapat menyebabkan datagram-datagram yang diterima dalam kondisi tidak berurutan. 

Namun bukan berarti UDP benar-benar “unreliable”, hanya saja fungsi-fungsi yang disediakan TCP tidak ada di UDP, dan jika diperlukan harus di implementasikan pada layer lain.
Biasanya aplikasi yang menggunakan protokol UDP adalah yang memerlukan delay serendah mungkin dan bisa mentoleransi hilangnya beberapa data.

Contoh aplikasi : DNS, SNMP, DHCP, RIP, streaming video, online games, VOIP.
Gambar : header UDP (lebih sederhana dari TCP)

tabel well-known port pada TCP dan UDP

tabel perbedaan antara TCP dan UDP


Sekian pembahasan saya (sudah terlalu banyak penjelasannya). :D semoga bermanfaat yaa. . :) Terima kasih.

Sumber :  http://xaverius.najoan.net/index.php/component/content/article/4-lecture/18-jaringan-komputer
               http://akhmadkun.wordpress.com/2012/10/19/tentang-transport-layer/
               http://slideshare.net/materikuliah/transport-layer-protocol-udp-dan-protocol-tcp