RPC ( Remote Procedure Call )
1. Definisi
Remote Procedure Call adalah
suatu protokol yang menyediakan suatu mekanisme komunikasi antar proses yang mengijinkan suatu program untuk berjalan pada suatu komputer tanpa terasa adanya
eksekusi kode pada sistem yang jauh (remote system). (Newmarch, 1995). RPC
mengasumsikan keberadaan dari low-level protokol transportasi seperti TCP atau UDP
untuk membawa pesan data dalam komunikasi suatu program. Protokol RPC dibangun
diatas protokol eXternal Data Representation (XDR), yang merupakan standar dari
representasi data dalam komunikasi remote.
Protokol XDR mengubah parameter dan hasil dari tiap servis RPC yang disediakan.
Protokol RPC mengijinkan pengguna
untuk bekerja dengan prosedur remote sebagaimana bekerja dengan prosedur lokal.
Prosedur panggilan remote didefinisikan melalui rutin yang terkandung didalam
protokol RPC. Tiap pesan dari panggilan akan disesuaikan dengan pesan balikan.
Protokol RPC sendiri sebenarnya adalah suatu protokol untuk ”meneruskan pesan”
yang mengimplementasikan protokol non-RPC lain seperti panggilan remote
batching dan broadcasting. Protokol ini juga mendukung adanya prosedur callback
dan select subroutine pada sisi server. (Spangler, 2004)
2. Fitur Dalam RPC
RPC memiliki fitur-fitur sebagai berikut: batching
calls, broadcasting calls, callback procedures dan using the select subroutine.
·
- Batching Calls
Fitur Batching calls mengijinkan
klien untuk mengirim message calls ke server dalam jumlah besar secara sequence
(berurutan). Batching menggunakan protokol streaming byte seperti TCP/IP
sebagai mediumnya. Pada saat melakukan batching, klien tidak menunggu server
untuk memberikan reply terhadap tiap messages yang dikirim, begitu pula dengan
server yang tidak pernah mengirimkan messages reply. Fitur inilah yang banyak
digunakan klien, karena arsitektur RPC didesain agar pada tiap call message
yang dikirimkan oleh klien harus ada proses menunggu balasan dari server. Oleh
karena itu maka pihak klien harus dapat mengatasi error yang kemungkinan terjadi
karena pihak klien tidak akan menerima peringatan apabila terjadi error pada message
yang dikirim.
- · Broadcasting Calls
Fitur Broadcasting mengijinkan
klien untuk mengirimkan paket data ke jaringan dan menunggu balasan dari
network. Fitur ini menggunakan protokol yang berbasiskan paket data seperti
UDP/IP sebagai mediumnya. Broadcast RPC membutuhkan layanan port mapper RPC
untuk mengimplementasikan fungsinya.
- CallBack Procedures
Fitur Callback Procedures mengijinkan
server untuk bertindak sebagai klien dan melakukan pemanggilan RPC kembali ke
proses yang dijalankan oleh klien.
- Select Subroutine
Fitur ini akan memeriksa
deskripsi dari suatu file dan messages dalam antrian untuk melihat apakah
mereka siap untuk dibaca (diterima) atau ditulis (dikirim), atau mereka dalam
kondisi ditahan sementara. Prosedur ini mengijinkan server untuk menginterupsi
suatu aktivitas, memeriksa datanya, dan kemudian melanjutkan proses aktivitas
tersebut.
3. Model
dan Cara Kerja RPC
Prosedur call umumnya
berkaitan dengan penggunaan stack, penyimpanan parameter yang diterima dalam stack
tersebut dan pengalokasian ruang untuk lokal variabel. Namun selain itu ada
yang disebut dengan Prosedur Call remote, yang berarti pelaksanaan proses
diatas namun pada suatu sistem lain yang berhubungan melalui suatu jaringan.
Sistem prosedur remote ini memiliki cara kerja yang sedikit banyak mirip, namun
berbeda dengan prosedur call biasa. Berikut adalah gambar cara kerja dari RPC.
1. Client procedure calls client
stub in normal way.
2. Client stub builds message,
calls local OS.
3. Client's OS sends message to
remote OS.
4. Remote OS gives message to
server stub.
5. Server stub unpacks
parameters, calls server.
6. Server does work, returns
result to the stub.
7. Server stub packs it in
message, calls local OS.
8. Server's OS sends message to
client's OS.
9. Client's OS gives message to
client stub.
10. Stub unpacks result, returns
to client.
Tiap prosedur yang dipanggil
dalam RPC, harus berkoneksi dengan server remote dengan mengirimkan semua
parameter yang dibutuhkan, menunggu balasan dari server dan melakukan proses
kemudian selesai. Proses di atas disebut juga dengan stub pada sisi klien.
Sedangkan Stub pada sisi server adalah proses menunggu
tiap message yang berisi permintaan mengenai prosedur tertentu. (Newmarch,
1995). Server harus membaca tiap parameter yang diberikan, kemudian memberikan
prosedur lokal yang sesuai dengan permintaan dan parameter. Kemudian setelah
eksekusi, server harus mengirimkan hasil kepada pihak pemanggil proses.
Diagram diatas memberikan
gambaran mengenai flow dari eksekusi dalam proses RPC. Berikut ini adalah
diagram yang akan menjelaskan secara rinci mengenai proses yang terjadi pada
klien dan server dalam eksekusi suatu prosedur RPC.
Berikut penjelasan dari diagram
diatas:
1. Klien memanggil prosedur stub lokal.
Prosedur Stub akan memberikan parameter dalam suatu paket yang akan dikirim ke
jaringan. Proses ini disebut sebagai marshalling.
2. Fungsi Network pada O/S (Operating
System - Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message.
3. Kemudian Kernel ini akan
mengirim message ke sistem remote. Kondisi ini dapat berupa connectionless atau
connection-oriented.
4. Stub pada sisi server akan
melakukan proses unmarshals pada paket yang dikirim oleh network.
5. Stub pada server kemudian
mengeksekusi prosedur panggilan lokal.
6. Jika eksekusi prosedur ini
telah selesai, maka eksekusi diberikan kembali ke stub pada server.
7. Stub server akan melakukan
proses marshals lagi dan mengirimkan message nilai balikan (hasilnya) kembali
ke jaringan.
8. Message ini akan dikirim
kembali ke klien.
9. Stub klien akan membaca message
ini dengan menggunakan fungsi pada jaringan.
10. Proses unmarshalled kemudian
dilakukan pada message ini dan nilai balikan akan diambil untuk kemudian
diproses pada proses lokal.
Daftar Pustaka :
Newmarch, J. 1995. Remote Procedure Calls. http://jan.netcomp.monash.edu.au/OS/l14 1.html , diakses
tanggal 12 November 2009.
Spangler, R. 2004. Analysis of the Microsoft Windows DCOM
RPC Exploit, Packetwatch Research.
0 komentar:
Posting Komentar