TCP, UDP, Port, Socket, TCP Header, Handshake(3way handshaking)
Sunday, October 14, 2012
1. TCP
TCP (transmission control
protocol) merupakan jenis protocol 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.[1]
Proses pembuatan koneksi TCP
disebut juga dengan “3-way handshake”. Tujuan metode ini adalah agar dapat
melakukan sinkronisasi terhadap nomor urut dan nomor acknowledgement yang
dikirimkan oleh kedua pihak dan saling bertukar ukuran TCP Window. Prosesnya
adalah Host pertama (yang ingin membuat koneksi) akan mengirimkan
sebuah segmen TCP dengan flag SYN kepada host kedua (yang hendak diajak untuk
berkomunikasi). Host kedua akan meresponsnya dengan mengirimkan segmen yang
berisi acknowledgen dan juga SYN kepadahost pertama. Host pertama selanjutnya akan
mulai saling bertukar data dengan host kedua. Proses handshaking complete
dengan ditandai kedua client telah menerima acknowledgements dari koneksi
sehingga keduanya dapat saling mengirim data.[2]
2. UDP
UDP (user datagram protokol)
merupakan protocol transport layer seperti TCP, tetapi UDP lebih cepat
dibandingkan TCP dan mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan
yang menggunakan TCP.[3]
UDP mengijinkan komunikasi antara proses-proses pada node yang
berbeda. Setiap proses ditandai dengan nomor logical port.
Contoh berikut adalah menggunakan TFTP server provides dan
layanan VOIP (voice over IP).
Pada TFTP, UDP header adalah 69/1598, 69 merupakan destination
port (tftp) dan 1598 merupakan source port (tftp client), nomor source port
diacak oleh UDP. Pada VOIP, header UDP adalah 9760/2793, 9760 merupakan
destination port (VoIP) dan 2793 merupakan source port (VoIP).
Pada saat sampai di tujuan UDP membaca destination port pada
TFTP (69) dan mengirim data ke proses yang tersedia. Packet yang asli memiliki
source port sehingga server dapat mengirim kembali data ke tftp client.
Ketika sebuah aplikasi ingin mengirimkan data, UDP tidak membagi
datanya (fragment). Data langsung dikirim ke IP layer. Karena UDP tidak
melakukan frgment pada data maka jika data lebih besat dari MTU, IP layer harus
melakukan fragment.
Ketika UDP pada penerima mendapat data, penerima tidak
mengirimkan acknowledgement. Karena tidak ada pemberitahuan data sudah
terkirim, UDT tidak melakukan apapun saat kehilangan data. UDP tidak membuat
koneksi ke tujuan sebelum mengirimkan data, UDP hanya mengirim atau menerima
data dari aplikasi. Saat server tidak online, data akan terbuang.
Karena UDP lebih cepat
dibandingkan TCP, maka lebih berguna saat menggunakan aplikasi seperti VOIP
atau streaming media.[4]
3. Port
Dalam protokol jaringan, sebuah port adalah mekanisme yang
mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan
komputer lainnya dan program di dalam jaringan. Port dapat mengidentifikasikan
aplikasi dan layanan yang menggunakan koneksi di dalam jaringan TCP/IP. Port juga
mengidentifikasikan sebuah proses tertentu di mana sebuah server dapat
memberikan sebuah layanan kepada klien atau bagaimana sebuah klien dapat
mengakses sebuah layanan yang ada dalam server.
Port dapat dikenali dengan angka
16-bit (dua byte) yang disebut dengan Port Number dan diklasifikasikan dengan
jenis protokol transport apa yang digunakan, ke dalam Port TCP dan Port UDP. Karena memiliki angka 16-bit,
maka total maksimum jumlah port untuk setiap protokol transport yang digunakan
adalah 65536 buah.
Dilihat dari penomorannya, port UDP dan TCP dibagi menjadi tiga
jenis, yakni sebagai berikut :
·
Well-known Port: yang pada awalnya berkisar antara 0 hingga 255 tapi kemudian
diperlebar untuk mendukung antara 0 hingga 1023. Port number yang termasuk ke
dalam well-known port, selalu merepresentasikan layanan jaringan yang sama, dan
ditetapkan oleh Internet Assigned Number Authority (IANA). Beberapa di antara
port-port yang berada di dalam range Well-known port masih belum ditetapkan dan
direservasikan untuk digunakan oleh layanan yang bakal ada di masa depan. Well-known port didefinisikan dalam RFC
1060.
·
Registered Port: Port-port yang digunakan oleh vendor-vendor komputer atau
jaringan yang berbeda untuk mendukung aplikasi dan sistem operasi yang mereka
buat. Registered port juga diketahui dan didaftarkan oleh IANA tapi tidak
dialokasikan secara permanen, sehingga vendor lainnya dapat menggunakan port
number yang sama. Range registered port berkisar dari 1024 hingga 49151 dan
beberapa port di antaranya adalah Dynamically Assigned Port.
·
Dynamically
Assigned Port: merupakan port-port yang
ditetapkan oleh sistem operasi atau aplikasi yang digunakan untuk melayani
request dari pengguna sesuai dengan kebutuhan. Dynamically Assigned Port
berkisar dari 1024 hingga 65536 dan dapat digunakan atau dilepaskan sesuai
kebutuhan.[5]
4. Socket
Socket adalah mekanisme komunikasi yang memungkinkan terjadinya
pertukaran data antar program atau proses baik dalam satu mesin maupun antar
mesin.
Keunggulan dari penggunaan socket ini dibandingkan jika
menggunakan pipes biasa adalah dapat melakukan komunikasi antar proses/program
melalui jaringan berbasis yang TCP/IP, bahkan dengan program lain yang berjalan
pada platform non-unix seperti Microsoft Windows, sepanjang program tersebut
berbicara dalam protokol transfer yang sama.
Komunikasi socket terutama diciptakan untuk tujuan menjembatani
komunikasi antara dua buah program yang dijalankan pada mesin yang berbeda.
Yang berarti dua program pada mesin yang sama dapat juga saling
berkomunikasi. Kelebihan lain dari komunikasi socket adalah mampu menangani
banyak klien sekaligus (multiple clients).
Jenis Socket :
·
Socket Lokal
Socket Lokal adalah socket yang
melakukan komunikasi dengan perantaraan sebuah file yang biasanya diletakkan
pada direktori /tmp atau /usr/tmp ataupun /var/tmp. Socket semacam ini
digunakan umumnya terbatas untuk komunikasi antar aplikasi dalam satu mesin.
·
Socket Networking
Socket Networking ditujukan untuk
komunikasi antar aplikasi antar mesin dalam lingkungan jaringan TCP/IP.
Identifikasi socket dilakukan dengan sebuah service identifier yaitu berupa nomor port TCP/IP yang dapat di sambung oleh
client.
·
Socket Stream
Socket Stream adalah socket
komunikasi full-duplex berbasis aliran (stream) data. Pada model komunikasi
Socket Stream, koneksi dua aplikasi harus dalam kondisi tersambung dengan benar
untuk dapat bertukar data. Ini dapat dianalogikan seperti komunikasi telepon.
Jika sambungan telepon di salah satu titik putus, maka komunikasi tidak dapat
terjadi. Koneksi model seperti ini akan menjamin data dapat dipertukarkan
dengan baik, namun memiliki kelemahan dalam hal penggunaan jalur data yang
relatif besar dan tidak boleh terputus.
·
Socket Datagram
Socket Datagram berkomunikasi
dengan cara yang berbeda. Socket ini tidak membutuhkan koneksi yang tersambung
dengan benar untuk mengirimkan dan menerima data. Model koneksi semacam ini
tidak dapat menjamin data dapat dipertukarkan dengan baik, namun memiliki
keunggulan dalam hal penggunaan jalur data yang minimal. Socket Datagram dapat
dianalogikan dengan komunikasi yang terjadi pada kelas, misalnya pada saat guru
melakukan broadcasting materi pelajaran untuk diterima oleh setiap murid. Tidak ada
yang dapat menjamin materi pelajaran dapat diterima oleh semua murid dengan
baik, kecuali diterapkan metodarechecking. Rechecking ini dapat dilakukan
baik oleh guru maupun murid. Guru bertanya untuk memastikan jawaban dari murid
benar, atau murid bertanya untuk memastikan kebenaran materi yang diterimanya.
Socket Datagram pun menggunakan metoda ini untuk menjamin pengiriman data dapat
dilakukan dengan baik.[6]
5. TCP Header
Ukuran dari header TCP adalah
bervariasi, yang terdiri atas beberapa field yang ditunjukkan dalam gambar dan
tabel berikut. Ukuran TCP header paling kecil (ketika tidak ada tambahan opsi
TCP) adalah 20 byte. [2]
5. Handshake
Handshaking Adalah proses yang mengatur dan mengendalikan aliran
data antar 2 peranti. Hansdhaking diperlukan untuk mengakomodasi
ketepatan waktu pengiriman data antara komputer dan terminal, atau periferal.
Beberapa handshaking secara umum diperlukan karena komputer dan terminal
mungkin beroperasi pada kecepatan yang berbeda. Jalur handshake biasanya
ditambahkan untuk mengendalikan waktu yang tepat untuk pengiriman data.
Handshaking adalah proses negosiasi otomatis yang secara dinamis
menentukan parameter dalam pembentukan kanal komunikasi antara dua entitas
normal sebelum komunikasi melalui kanal dimulai. Ia mengikuti pembentukan
fisik saluran precedes normal dan mentransfer informasi. Contohnya : ketika
sebuah komputer berkomunikasi dengan perangkat lain seperti modem atau printer
yang perlu melakukan handshake untuk membuat sambungan.
Proses negosiasi handshake, melibatkan pertukaran cryptographic
keys, certificate dan informasi lain, random data digunakan untuk membuat
enkripsi satu waktu, dan valuenya digunakan untuk mengidentifikasi handshake.
Handshake memiliki tiga tujuan :
·
Untuk membolehkan client dan
server setuju mengenai algoritma yang akan mereka gunakan.
·
Untuk melibatkan kumpulan dari
crypto keys untuk digunakan oleh algoritma tersebut.
·
Untuk mengautentikasi klien.
Catatan penting bahwa Handshake
memerlukan perhitungan yang sangat kompleks dan perlu komputer dengan
processor yang tangguh. Pada akhir cryptographic key dibuat dan
dipertukarkan antara client dan server, enkripsi berikutnya dibuat cukup
mudah sejauh prosesor dari komputer terfokus, namun hal itu tetap
menjadikan perlunya performa tinggi dari server. Terutama ketika
handshake dengan jumlah besar terjadi dalam waktu
bersamaan. Bagaimanapun juga, pekerjaan ini dapat dilakukan oleh processor khusus/spesial
yang didesain khusus untuk memproses perhitungan matematis yang melibatkan handshake.[7]
bersamaan. Bagaimanapun juga, pekerjaan ini dapat dilakukan oleh processor khusus/spesial
yang didesain khusus untuk memproses perhitungan matematis yang melibatkan handshake.[7]
Referensi :
[7] http://www.rendy1412.co.cc/2010/07/enkapsulasi-dan-handshaking_5206.html