Loading...

Thursday 22 December 2011

HANDSHAKING


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 SSL atau “Handshake,” melibatkan pertukaran cryptographic keys, certificate, dan informasi lain , random data digunakan untuk membuat enkripsi satu waktu, dan valuenya digunakan untuk mengidentifikasi SSL yang dibuat dari Handshake. Handshake memiliki tiga tujuan: 
1.      Untuk membolehkan client dan server  setuju mengenai algoritma yang akan mereka gunakan.
2.      Untuk melibatkan kumpulan dari crypto keys untuk digunakan oleh algoritma tersebut.
3.      Untuk mengautentikasi client
Catatan penting bahwa SSL 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 processor 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/special yang didesain khusus untuk memproses perhitungan matematis yang melibatkan Handshake
Handshaking memungkinkan terjadinya sesi komunikasi data yang berlangsung dari mulai perencanaan komunikasi sampai dengan komunikasi tersebut selesai. Proses ini diawali proses prakomunikasi, yaitu proses pencarian host tujuan (destination) oleh host yang bertindak sebagai pengirim. Proses ini diakhiri dengan kesepakatan antara kedua belah pihak untuk melaksanakan pertukaran data (connection establish), yaitu proses pengiriman informasi berupa request dan tanggapan antara kedua belah pihak. 
Dua proses awal ini dapat disebut proses pembentukan koneksi. Artinya, untuk melakukan komunikasi, perangkat yang dituju harus menerima koneksi awalan terlebih dahulu sebelum mengirimkan data atau menerima data.
1.      Proses yang dilakukan sebelum pengiriman data terdiri atas :
2.      Pengirim (sender) mengirimkan sinyal sinkronasi (SYN) terlebih dulu ke tujuan.
3.      Penerima akan membalas sinyal SYN dengan Negotiate Connection.
4.      Penerima mengirimkan SYN ulang, apa benar pengirim akan mengirimkan data.
5.      Pengirim akan membalas dengan sinyal Acknowledge (ACK), artinya sudah siap untuk mengirimkan data sampai saat ini. Prosesnya telah mencapai status Connection Establish.
6.      Kemudian segmen data dikirim. Proses terakhir adalah ketika terjadi pengiriman kode BYE atau FIN ACK atau CLOSED atau kode lainnya bergantung aplikasi komunikasi yang digunakan.
Tahapan Analisa:
1.      Pertama-tama, buka aplikasi throughput (Wireshark). Jika anda belum meng-install-nya, lakukan dahulu proses penginstalan.
2.      Kemudian, akan muncul tampilan di bawah ini. Lalu, klik “Interfaces List”.
3.      Lalu akan muncul window baru. Klik “start” pada interface yang akan di-capture.
4.      Kemudian, jalankan aplikasi internet browser, dan masuklah kepada salah satu situs web (misal : http://www.google.co.id/).
5.      Setelah browser menunjukkan tidak sedang melakukan loading (dalam Mozolla Firefox biasanya bertuliskan “Done”), hentikan proses capture dengan mengklik tombol “Stop” pada bagian toolbar. Setelah itu, akan muncul hasil capture-nya. Berikut merupakan contoh dari hasil analisanya.
Hasil Analisa :
41 – 43 (! 42)
Opening
42 – 47 (! 43)
Negotiation
48 – 72 (! 62 – 71)
GET/ HTTP
62 – 80 (! 68, 70, 75, 76)
GET/ _icon
84 – 117
GET/ rsrc.php
118
Closing
Tabel A
41 – 43 (! 42)
Opening
42 – 47 (! 43)
Negotiation
48 – 117 (! 68, 70, 75, 76)
Connection Establish
118
Closing
Tabel B
Dari hasil analisis di atas terlihat di tabel 1.0 merupakan proses yang lebih detail dalam proses Handshaking yang ditunjukan gambar 1.0, sedangkan tabel 1.1 merupakan proses yang umum dari keseluruhan gambar 1.0. dari proses di atas kita bisa ketahui bahwa ini merupakan proses three-way Handshaking. Hal ini bisa dibuktikan adanya tiga kali persetujuan antara perangkat komunikasi yaitu opening, negotiation dan closing. Disini Connection Cstablish merupakan proses utama dan bukan persetujuan atau kesepakatan antar perangkat komunikasi.
Maka dari itu, dapat disimpulkan bahwa Proses Handshaking bisa dikatakan sudah masuk Connection Cstablish bilamana sudah ada kode GET/ dari host penerima ke pengirim. Merupakan tanda pertukaran data awal dalam proses Connection Establish. Proses Handshaking dalam aplikasi throughput tidak selalu berurutan dalam suatu proses GET/ bisa saja ada 2 kali proses GET/ dalam satu waktu sehingga menyebabkan hasil capture bergantian antara GET/ yang satu dengan yang lainnya.
A.    Metode Handshaking
1.   Handshaking polling
Secara software Prioritas, yang di-poll pertama mendapat prioritas tertinggi. Bila processor ingin mengakses perangkat, salah satu pendekatannya adalah dengan membiarkan processor melakukan semua pekerjaan. Processor berinteraksi dengan controller melalui protokol yang rumit tetapi dasar Handshaking-nya cukup sederhana yaitu:
a.       CPU terus menerus membaca bit status sampai bit tersebut menandakan perangkat siap menerima perintah CPU.
b.      CPU mengaktifkan bit-write di register perintah sebagai awal pertanda CPU memberikan perintah dan menulis sebuah byte di data-out.
c.       CPU mengaktifkan command-ready bit, artinya perintah tersedia untuk dijalankan controller.
d.      Controller melihat command ready bit di-set sehingga bit kerja di-set.
e.       Controller membaca register perintah dan melihat perintah write maka data-out dibaca dan menyuruh perangkat M/K melakukan apa yang diperintah CPU.
f.       Controller menghapus command ready bit, bit error di status dan bit kerja.
Langkah 1 disebut polling atau busy waiting. Processor terus-menerus membaca bit status, berharap suatu saat bit tersebut menandakan perangkat siap menerima perintahnya. Pada dasarnya polling dapat dikatakan efisien bila kinerja perangkat dan controller-nya cepat. Kelemahan dari cara ini adalah bila waktu tunggu lama, maka lebih baik processor mengerjakan tugas yang lain. Sedangkan untuk mengetahui apakah perangkatnya sudah siap menerima perintah lagi atau belum, digunakanlah interupsi.

2.      Handshaking Interupsi
Interupsi terjadi bila suatu perangkat M/K ingin memberitahu processor bahwa ia siap menerima perintah, output sudah dihasilkan, atau terjadi error.
Penanganan Interupsi
Ada beberapa tahapan dalam penanganan interupsi:
  1. Controller mengirimkan sinyal interupsi melalui interrupt-request-line
  2. Sinyal dideteksi oleh processor
  3. Processor akan terlebih dahulu menyimpan informasi tentang keadaan state-nya (informasi tentang proses yang sedang dikerjakan)
  4. Processor mengidentifikasi penyebab interupsi dan mengakses tabel vektor interupsi untuk menentukan interrupt handler
  5. Transfer kontrol ke interrupt handler
  6. Setelah interupsi berhasil diatasi, processor akan kembali ke keadaan seperti sebelum terjadinya interupsi dan melanjutkan pekerjaan yang tadi sempat tertunda.
Gambar Siklus penanganan interupsi:












3.   Interrupt Request Line
Pada kebanyakan CPU, ada dua interrupt request line. Pertama, interupsi nonmaskable, interupsi ini biasanya berasal dari perangkat keras dan harus segera dilaksanakan, seperti terjadinya error pada memori.
Kedua, interupsi maskable, jenis interupsi ini bisa dilayani oleh processor atau bisa tidak dilayani. Kalaupun dilayani, harus dilihat keadaan processor saat itu. Ada kemungkinan processor langsung menangani bila saat itu, processor preemptive, bila nonpreemptive, maka harus menunggu proses yang sedang dikerjakan selesai.
4. Vektor Interupsi dan Vector Chaining
Bila ada sebuah sinyal interupsi pada interrupt request line, bagaimana sebuah interrupt handler mengetahui sumber dari interupsi itu? Apakah harus menelusuri semua sumber interupsi satu-persatu? Tidak perlu, karena setiap interrupt handler mempunyai alamat memori masing-masing. Alamat ini adalah offset pada sebuah tabel yang disebut dengan vektor interupsi.
Tabel 10.1. Tabel Vector-Even pada Intel Pentium
Vector number
Description
0
Divide error
1
Debug Exception
2
Null Interrupt
3
Breakpoint
4
INTO-detected overflow
5
Bound range exception
6
Invalid opcode
7
Device not available
8
Double fault
9
Compressor segment overrun (reserved)
10
Invalid task state segment
11
Segment not present
12
Stack fault
13
General protection
14
Page fault
15
(Intel reserved, do not use)
16
Floating point error
17
Alignment check
18
Machine check
19-31
(Intel reserved, do not use)
32-255
Maskable interrupt

Sesuai dengan perkembangan zaman, komputer mempunyai lebih banyak perangkat (dan lebih banyak interrupt handlers) daripada elemen alamat di vektor. Hal ini bisa diatasi dengan teknik vector chaining. Setiap elemen di vektor interupsi menunjuk ke kepala dari sebuah daftar interrupt handlers, sehingga bila ada interupsi, handler yang terdapat pada daftar yang ditunjuk akan dipanggil satu persatu sampai didapatkan handler yang bisa menangani interupsi yang bersangkutan.
B.     Prioritas Interupsi
Mekanisme interupsi juga menerapkan sistem level prioritas interupsi. Sistem ini memungkinkan interupsi berprioritas tinggi menyela eksekusi interupsi berprioritas rendah. Sistem ini juga memungkinkan perangkat M/K yang membutuhkan pelayanan secepatnya didahulukan daripada perangkat lainnya yang prioritasnya lebih rendah. Pengaturan prioritas dan penanganan perangkat berdasarkan prioritasnya diatur oleh processor dan controller interupsi.
C.    Penyebab Interupsi
Mekanisme interupsi tidak hanya digunakan untuk menangani operasi yang berhubungan dengan perangkat M/K. Sistem operasi menggunakan mekanisme interupsi untuk beberapa hal, di antaranya:
  1. Menangani exception
Exception adalah suatu kondisi dimana terjadi sesuatu, atau dari sebuah operasi didapatkan hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contohnya, pembagian dengan nol, pengaksesan alamat memori yang restricted atau tidak valid, dll.
  1. Mengatur virtual memory paging.
  2. Menangani perangkat lunak interupsi.
  3. Menangani alur kontrol kernel.
Jika interupsi yang terjadi merupakan permintaan untuk transfer data yang besar, maka penggunaan interupsi menjadi tidak efisien, untuk mengatasinya digunakanlah DMA.
D.    Handshaking DMA
Proses Handshaking antara DMA controller dan device controller dilakukan melalui sepasang kabel yang disebut DMA-request dan DMA-acknowledge. Device controller mengirimkan sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word. Hal ini kemudian akan mengakibatkan DMA controller memasukkan alamat-alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledge diterima, device controller mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request.
Handshaking DMA Memberikan transfer data tercepat dengan cara mensinkronkan peripheral dan memori utama. Software minimal atau tidak ada, tetapi membutuhkan chip kontroler DMA, yang memperumit hardware.
Tiga mode:
1.      One byte (ambil bus, kirim 1 byte, kembalikan bus)
2.      Burst (ambil bus, jika bus ready kirim 1 byte, kembalikan bus)
3.      Block DMA (ambil bus, jika bus ready kirim block, kembalikan bus)
Perlu diketahui bahwa mekanisme interupsi tidak efisien untuk melakukan transfer data yang besar. Transfer data dilakukan per word. Pada mekanisme interupsi, untuk tiap word data yang ditransfer, processor tidak akan menunggu data tersedia pada perangkat yang mengirim data maupun data selesai ditulis oleh perangkat yang menerima data. Dalam situasi tersebut processor akan mengganti proses yang sedang dieksekusinya (yang melakukan transfer data) dengan proses lain (context switch). Jika ukuran data yang ditransfer cukup besar, processor akan berulang kali melakukan context switch, padahal context switch akan menimbulkan overhead. Oleh karena itu kelemahan mekanisme interupsi untuk menangani transfer data yang besar disebabkan oleh context switch. Untuk menangani kelemahan tersebut, digunakan suatu unit kontrol khusus yang disediakan untuk mentrasfer data langsung antar perangkat eksternal dan memori utama tanpa intervensi terus menerus dari processor. Unit kontrol khusus tersebut adalah DMA.
Sistem modern dapat mengurangi beban CPU untuk melakukan operasi M/K, yaitu dengan menggunakan pengendali DMA. Dengan demikian CPU dapat melakukan tugas lain sementara operasi M/K dilakukan. Setiap pengendali peralatan dapat saja memiliki perangkat keras DMA tersendiri. Alternatif lain adalah dengan memiliki sebuah pengendali DMA pada motherboard yang mengatur transfer ke berbagai peralatan. Untuk memulai transfer data secara DMA, driver peralatan akan menulis blok perintah DMA memori yang menunjuk sumber data, tujuan, dan jumlah byte yang akan ditransfer. CPU kemudian akan mengirimkan alamat blok perintah ini pada pengendali DMA. pengendali DMA akan memproses informasi ini untuk kemudian mengoperasikan bus memori. Transfer sebanyak 1 byte/word per satuan waktu oleh pengendali DMA disebut sebagai cycle stealing karena pengendali menggunakan bus cycle milik CPU. Dengan cycle stealing penggunaan bus oleh CPU akan tertunda beberapa waktu karena bus digunakan untuk proses DMA.
Tiga langkah dalam transfer DMA:
  1. processor menyiapkan DMA transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
  2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat,menulis dan membaca data) samapai seluruh blok sudah ditransfer.
  3. Pengendali DMA menginterupsi processor, dimana selanjutnya akan ditentukan tindakan berikutnya.

0 comments: