Anda di halaman 1dari 13

SOCKET, REMOTE PROCEDURE CALL, JAVA REMOTE

METHOD INVOCATION

OLEH
DERIA DWI ANTARI
0904505038

JURUSAN TEKNIK ELEKTRO PROGRAM STUDI TEKNOLOGI


INFORMASI FAKULTAS TEKNIK UNIVERSITAS UDAYANA

Abstrak
Socket adalah software abstrak untuk media input atau output dari komunikasi antar
komputer sehingga memungkinkan untuk melakukan transfer data. Socket adalah sebuah
penghubung antara dua host, yang dapat dibangun dengan tujuh dasar operasi. Socket
memungkinkan aplikasi untuk berkomunikasi menggunakan mekanisme standar yang
dibangun ke dalam perangkat keras jaringan dan sistem operasi. Remote Procedure Call
(RPC) merupakan sebuah metode yang memungkinkan kita untuk mengakses sebuah
prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah server harus
menyediakan layanan remote procedure. Protokol RPC mengijinkan pengguna (users) untuk
bekerja dengan prosedur remote sebagaimana bekerja dengan prosedur lokal. RMI adalah
sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC
dan menggunakan paradigma pemrograman berorientasi obyek (Object Oriented
Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari
remote method.

1. Socket
1.1 Pengertian Socket
Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai suatu
“terminal” dari suatu hubungan antara dua mesin atau proses yang saling
berinterkoneksi yang memungkinkan adanya pertukaran data Pada lingkungan Unix,
socket memberikan keleluasaan pemrograman gaya Unix yang terkenal dengan
ideologinya, Semua di Unix/Linux adalah file. Komunikasi antar program dapat
berlangsung lewat penggunaan deskriptor file standar Unix dengan bantuan socket.
Pada file deskriptor yang menjadi tujuan adalah sebuah file, sedangkan pada
socket adalah komputer atau node lain. Intinya ketika kita telah terhubung dengan
socket(), maka antarmukanya sama saja dengan sebuah file. Penggunaan socket
programming memungkinkan adanya komunikasi antara client dan server seperti
pembuatan program untuk chatting.
Socket adalah sebuah penghubung antara dua host, yang dapat dibangun dengan
tujuh dasar operasi yaitu :
1. menghubungkan untuk mengendalikan mesin atau perangkat
2. mengirim data.
3. menerima data
4. menutup koneksi
5. bergantung pada port
6. mendengarkan data yang masuk
7. menerima koneksi dari mesin yang dikendalikan berdasarkan sebuah port

Keunggulan dari penggunaan socket ini dibanding apabila menggunakan pipes


biasa adalah anda dapat melakukan komunikasi antar proses/program melalui
jaringan berbasis yang TCP/IP tentunya, bahkan dengan program lain yang berjalan
pada platform non-unix seperti Microsoft Windows, sepanjang program tersebut
berbicara dalam protokol transfer yang sama. Fasilitas-fasilitas yang disediakan oleh
mesin unix seperti rlogin, ssh, ftp, dan lain-lain menggunakan socket sebagai sarana
komunikasi mereka. Socket dibentuk dan digunakan dengan cara yang berbeda
dengan proses pipes di unix. Komunikasi socket terutama diciptakan untuk tujuan
menjembatani komunikasi antara dua buah program yang dijalankan pada mesin yang
berbeda. Jangan khawatir, ini tentu saja berarti dua program pada mesin yang sama
dapat juga saling berkomunikasi. Kelebihan lain dari komunikasi socket adalah
mampu menangani banyak klien sekaligus (multiple clients).
Socket memungkinkan aplikasi untuk berkomunikasi menggunakan mekanisme
standar yang dibangun ke dalam perangkat keras jaringan dan sistem operasi.
Meskipun perangkat lunak jaringan mungkin tampaknya menjadi relatif baru "Web"
fenomena, teknologi socket sebenarnya sudah bekerja selama sekitar dua dekade.
Socket adalah software abstrak untuk media input atau output dari komunikasi
antar komputer sehingga memungkinkan untuk melakukan transfer data. Software
aplikasi yang mengandalkan Internet dan jaringan komputer lain terus tumbuh dalam
popularitas. Banyak paket yang paling populer saat ini software - aplikasi messaging
termasuk browser web, instan dan sistem peer to peer file sharing - bergantung pada
soket.
Singkatnya, socket merupakan koneksi tunggal antara tepat dua buah perangkat
lunak. Lebih dari dua buah perangkat lunak dapat berkomunikasi di klien / server atau
sistem terdistribusi (misalnya, web browser banyak secara bersamaan dapat
berkomunikasi dengan server Web tunggal) tetapi beberapa soket diminta untuk
melakukan hal ini. Yang berbasis perangkat lunak Socket biasanya berjalan pada dua
komputer terpisah pada jaringan, tetapi soket juga dapat digunakan untuk
berkomunikasi secara lokal (interprocess) pada satu komputer.
Soket dua arah, yang berarti bahwa kedua sisi sambungan mampu untuk
pengiriman dan penerimaan data. Kadang-kadang aplikasi yang memulai komunikasi
disebut klien dan server aplikasi lainnya, tetapi ini mengarah terminologi
kebingungan dalam sistem non-client/server dan umumnya harus dihindari.

1.2 Mekanisme Komunikasi Pada Socket


Pengertian socket adalah interface pada jaringan yang menjadi titik komunikasi
antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada
pertukaran data dan informasi jaringan.
Socket terdiri dari elemen-elemen utama sebagai berikut:
1. Protokol.
2. Local IP.
3. Local Port.
4. Remote IP.
5. Remote Port.

Setiap sirkuit komunikasi yang masuk dan keluar lapisan TCP dikenali secara
unik dengan dua kombinasi angka, yang kemudian disebut sebagai socket. Socket
terdiri atas alamat IP sebuah mesin dan nomor port yang digunakan software TCP.
Baik mesin pengirim dan penerima memiliki socket. Karena IP address sifatnya unik
dalam internetwork, dan nomor port bersifat unik untuk setiap mesin, maka berarti
nomor socket juga bersifat unik dalam internetwork. Ini memungkinkan sebuah
proses berkomunikasi dengan proses lain dalam jaringan.
Dalam prosesi pengiriman, TCP pengirim meminta koneksi kepada TCP
penerima dengan menggunakan nomor socket yang unik. Misalnya jika TCP
pengirim menginginkan sebuah koneksi session telnet dari nomor port 350, maka
nomor socket akan terdiri atas alamat IP mesin source dengan nomor port (350),
dalam message yang dikirim terdapat informasi nomor port tujuan 23 (nomor port
aplikasi Telnet). Mesin penerima TCP memiliki nomor source port 23 (Telnet) dan
port destination 350 (nomor port mesin pengirim).
Dalam komunikasi antara dua pihak, tentunya harus digunakan kesepakatan
aturan dan format yang sama agar komunikasi dapat dimengerti. Seperti halnya dua
orang yang menggunakan bahasa yang sama, maka bahasa di sini berfungsi sebagai
protokol. Protokol yang digunakan dalam socket dapat menggunakan TCP ataupun
UDP.
Contoh komunikasi sederhana adalah komunikasi antara komputer A dan
komputer B. Baik komputer A maupun komputer B harus memiliki identitas unik,
yang direpresentasikan oleh IP masing-masing. Komunikasi yang terjadi melalui port,
sehingga baik komputer A maupun komputer B harus memiliki port yang dapat
diakses satu sama lain.
Pemrograman socket adalah cara untuk menggunakan komponen/API
(Application Programming Interface) socket untuk membuat sebuah aplikasi.
Aplikasi socket umumnya terdiri dari dua kategori berdasarkan pengiriman datanya,
yaitu datagram socket (menggunakan UDP) dan stream socket (menggunakan TCP).
UDP tidak memerlukan proses koneksi terlebih dahulu untuk dapat
mengirimkan data, paket-paket data yang dikirimkan UDP bisa jadi melalui rute yang
berbeda-beda, sehingga hasil yang diterima bisa jadi tidak berurutan. Contohnya jika
aplikasi socket pengirim mengirimkan berturut-turut pesan 1, pesan 2, dan pesan 3,
maka aplikasi socket penerima belum tentu mendapatkan pesan yang berurutan
dimulai dari pesan 1, pesan 2, dan terakhir pesan 3. Bisa saja pesan 2 terlebih dulu
diterima, menyusul pesan-pesan yang lain, atau berbagai kemungkinan lainnya.
Bahkan, dapat terjadi pesan yang dikirimkan tidak sampai ke penerima karena
kegagalan pengiriman paket data.
Tidak demikian halnya dengan stream socket yang menggunakan TCP. Jenis ini
mengharuskan terjadinya koneksi terlebih dahulu, kemudian mengirimkan paket-
paket data secara berurutan, penerima juga dijamin akan menerima data dengan
urutan yang benar, dimulai dari data pertama yang dikirimkan hingga data terakhir.
TCP dapat menangani data yang hilang, rusak, terpecah, ataupun terduplikasi.
Dari sekilas perbedaan ini, dapat ditarik kesimpulan bahwa aplikasi socket yang
menggunakan TCP memerlukan pertukaran data dua arah yang valid. Sedangkan,
aplikasi socket yang menggunakan UDP lebih memprioritaskan pada pengumpulan
data.
Karena itu aplikasi socket dengan TCP sering diterapkan untuk aplikasi chat,
transfer file, ataupun transaksi-transaksi penting. Sedangkan aplikasi socket dengan
UDP cocok diterapkan untuk aplikasi monitoring jaringan, game online, dan aplikasi-
aplikasi broadcast.

1.3 Jenis-jenis Socket


Ada dua golongan socket di Unix yang paling umum dipakai yaitu :
1. Socket Lokal atau AF_UNIX
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.
2. Socket Networking atau AF_INET
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 Networking memiliki beberapa jenis, yang
paling umum digunakan yaitu:
a. Socket Stream atau SOCK_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.
b. Socket Datagram atau SOCK_DGRAM
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.

2. Remote Procedure Call


2.1 Pengertian Remote Procedure Call
RPC 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). RPC
mengasumsi keberadaan dari low-level protocol 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 (users) untuk bekerja dengan prosedur
remote sebagaimana bekerja dengan prosedur lokal. Prosedur panggilan remote
(remote procedure calls) didefinisikan melalui rutin yang terkandung didalam
protokol RPC. Tiap message dari panggilan akan disesuaikan dengan message
balikan. Protokol RPC sendiri sebenarnya adalah suatu protokol untuk ”meneruskan
pesan” yang mengimplemntasikan protokol non-RPC lain seperti panggilan remote
batching dan broadcasting. Protokol ini juga mendukung adanya prosedur callback
dan select subroutine pada sisi server.
Remote Procedure Call (RPC) merupakan sebuah metode yang memungkinkan
kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat
melakukan ini sebuah server harus menyediakan layanan remote procedure.
Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu
client yang meminta prosedur yang disediakan oleh server. Bila client tidak tahu
harus menghubungi port yang mana, client bisa me-request kepada sebuah
matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port
apa yang digunakan oleh prosedur yang diminta client.

2.2 Mekanisme 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.
Gambar 2.1 Procedure Call Lokal

Tiap prosedur yang dipanggil dalam RPC, maka proses ini 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. 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.

Gambar 2.2 Remote Procedure Call Flow


Diagram diatas memberikan gambaran mengenai flow dari eksekusi dalam
proses RPC.

Berdasarkan diagram di atas, langkah-langkah dalam RPC adalah sebagai


berikut :
1. Prosedur client memanggil client stub
2. Client stub membuat pesan dan memanggil OS client
3. OS client mengirim pesan ke OS server
4. OS server memberikan pesan ke server stub
5. Server stub meng-unpack parameter-parameter untuk memanggil server
6. Server mengerjakan operasi, dan mengembalikan hasilnya ke server stub
7. Server stub mem-pack hasil tsb dan memanggil OS server
8. OS server mengirim pesan (hasil) ke OS client
9. OS client memberikan pesan tersebut ke client stub
10. Client stub meng-unpack hasil dan mengembalikan hasil tersebut ke client

2.3 Kelebihan dan Kekurangan RPC


Kelebihan RPC adalah sebagai berikut :
1. Relatif mudah digunakan
2. Pemanggilan remote procedure tidak jauh berbeda dibandingkan
pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi
pada software logic, tidak perlu memikirkan low level details seperti soket,
marshalling dan unmarshalling.
3. Robust (Sempurna)
4. Sejak th 1980-an RPC telah banyak digunakan dalam pengembangan
mission-critical application yang memerlukan scalability, fault tolerance,
dan reliability.

Adapun kekurangannya adalah sebagai berikut :


1. Tidak fleksibel terhadap perubahan
2. Static relationship between client & server at run-time.
3. Berdasarkan prosedural/structured programming yang sudah ketinggalan
jaman dibandingkan Object Oriented Proggraming
4. Kurangnya location transparency
5. Misalnya premrogram hanya boleh melakukan pass by value, bukan pass by
reference.
6. Komunikasi hanya antara 1 klien & 1 server (one-to-one at a time).
7. Komunikasi antara 1 klien & beberapa server memerlukan beberapa koneksi
yang terpisah.

3. Java Remote Method Invocation


3.1 Pengertia Java Remote Method Invocation
RMI adalah perluasan dari local method invocation yang memungkinkan
sebuah objek yang hidup dalam satu proses untuk memohon method objek yang
berada di proses lain. (George Coulouris hal 166).
RMI adalah sebuah teknik pemanggilan method remote yang lebih secara
umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman
berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk
mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya
program Java memanggil method pada remote obyek, RMI membuat pengguna dapat
mengembangkan aplikasi Java yang terdistribusi pada jaringan.
Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan
client. Aplikasi server semacam ini biasanya membuat beberapa objek remote,
menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta
menunggu client menginvoke/memanggil method dari objek-objek remote tersebut.
Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di
server dan menjalankan method dari objek tersebut.
RMI menyediakan mekanisme dimana server dan client berkomunikasi
danmemberikan informasi secara timbal balik. Aplikasi semacam ini seringkali
disebut aplikasi objek terdistribusi.
Java Remote Method Invocation Application Programming Interface (API),
atau Java RMI, adalah sebuah aplikasi Java yang melakukan pemrograman antarmuka
setara dengan objek-berorientasi prosedur panggilan remote (RPC).
Pelaksanaan aslinya bergantung pada Java Virtual Machine mekanisme kelas
(JVM) representasi dan dengan demikian hanya mendukung membuat panggilan dari
satu JVM yang lain. Protokol yang mendasari implementasi Jawa-hanya dikenal
sebagai Java Remote Method Protocol (JRMP).

3.2 Mekanisme Komunikasi Java Remote Method Invocation


Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method
remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan
paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI
memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method.
Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI
membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada
jaringan.
Dalam model ini, sebuah proses memanggil method dari objek yang terletak
pada suatu host/computer remote. Dalam paradigma ini, penyedia layanan
mendaftarkan dirinya dengan server direktori pada jaringan. Proses yang
menginginkan suatu layanan mengontak server direktori saat runtime, jika layanan
tersedia, maka referensi ke layanan akan diberikan. Dengan menggunakan referensi
ini, proses dapat berinteraksi dengan layanan tsb. Paradigma ini ekstensi penting dari
paradigma RPC. Perbedaannya adalah objek yang memberikan layanan didaftarkan
(diregister) ke suatu layanan direktori global, sehingga memungkinkan untuk
ditemukan dan diakses oleh aplikasi yang meminta layanan tersebut.
Contoh aplikasi untuk meremote pada teknik RMI (Remote Method Invocation)
menggunakan teamviewer untuk meremote computer lain. Teamviewer adalah suatu
program yang cukup sederhana dan sangat mudah digunakan untuk beberapa
keperluan terutama melakukan akses PC secara remote melalui internet.
Ilustrasi berikut menggambarkan aplikasi RMI terdistribusi yang menggunakan
registry untuk mendapatkan referensi ke objek remote. Server memanggil registry
untuk mengasosiasikan (mengikat) suatu nama dengan objek remote. Client mencari
objek remote dengan namanya pada registry server dan meng-invoke method dari
objek. Ilustrasi ini juga menunjukkan sistem RMI menggunakan Web server untuk
memanggil class bytecodes, dari server ke client dan dari client ke server, untuk
objek-objek yang diperlukan.
Gambar 3.1 Sistem RMI Menggunakan Web Server

3.3 Kelebihan dan Kekurangan Java Remote Method Invocation


Salahsatu keuntungan RMI adalah kemampuan untuk download zytecodes
(code) dari suatu object’s class, jika class tsb tidak terdefinisikan di VM-nya
penerima. Type-type dan metode-metode object (class), yang terletak dalam satu VM,
dapat dikirim ke VM yang lain, yang mungkin saja remote. Sifat-sifat object yang
terkirim ini tidak berubah sama sekali.
Adapun kelemahan RMI adalah proses pembukaan socket yang kadang-kadang
tidak dapat diimplementasikan lewat jaringan internet, tapi hal ini bisa diatasi dengan
menggunakan Spring HttpInvoker, sama persis dengan RMI tapi lewat protokol
HTTP.

4. Referensi
[1] http://compnetworking.about.com/od/itinformationtechnology/l/aa083100a.htm
[2] http://www.cs.cf.ac.uk/Dave/C/node33.html
[3] http://en.wikipedia.org/wiki/Remote_procedure_call
[4] http://blog.uad.ac.id/heri_triyanto/2010/10/01/remote-method-invocation-rmi/
[5] http://pcmedia.co.id/detail.asp-Id=2159&Cid=22&Eid=54.htm
[6] http://blog.ub.ac.id/aldian/2010/11/05/port-tcp-dan-udp/
[7] http://www.tkjsmknasionaldepok.co.tv/2011/01/pengertian-socket.html
[8] http://en.wikipedia.org/wiki/Java_Remote_Method_Invocation

Anda mungkin juga menyukai