KOMUNIKASI
Komponen Komunikasi Data
Pengirim : adalah piranti yang mengirimkan data Penerima : adalah piranti yang menerima data
Data : adalah informasi yang akan dipindahkan
Media pengiriman : adalah media atau saluran yang digunakan untuk mengirimkan data
Protokol : adalah aturan-aturan yang berfungsi untuk menyelaraskan Hubungan
Transmisi Data
Merupakan proses untuk melakukan pengiriman
data dari salah satu sumber data ke penerima
data menggunakan komputer/media elektronik
Transmisi data dapat dibedakan menjadi dua
macam:
a. Transmisi serial
Adalah transmisi data dimana dalam satu satuan
waktu hanya satu bit yang disalurkan, dengan
demikian data yang terdiri atas banyak bit dikirm
secara berurutan, satu persatu.
Setiap komputer diperlengkapi dengan saluran
serial atau serial port (RS-223C) yaitu saluran
yang dapat menerima/mengirim data secara
serial.
Keuntungan : murah sesuai dengan jarak yang
jauh
Kerugian : perbit sehingga kecepatannya rendah
b. Transmisi Paralel
Adalah transmisi data dimana dalam satu satuan
waktu beberapa bit (umumnya 8 bit) dapat
disalurkan secara bersama
Pada komputer tersedia juga saluran paralel/
paralel-port misalnya saluran yang dihubungkan
dengan printer ketika akan mencetak data.
Keuntungan : Kecepatan tinggi
Keburukan : cost tinggi
Kenyataannya : komunikasi jarak jauh melalui
Kabel banyak dilakukan secara serial, misalnya
saluran telepon
Secara umum media transmisi data dibedakan
menjadi 2 yaitu
a. Media Kabel
- kabel koaksial , kabel dua kawat , kabel
serat optik
b. Media nirkabel : Transmisi
data
pada
jaringan
ini
dapat
dilakukan
dengan
menggunakan sebuah alat seperti antena,
Contoh : Radio, Infra merah.
Jalur Transmisi
Merupakan suatu alat yang mampu mengirim
informasi dengan menggunakan peralatan yang
lain. Jalur transmisi dibedakan 3 macam
1 Multicast. : sebuah teknik di mana sebuah data
dikirimkan melalui jaringan ke sekumpulan
komputer yang tergabung ke dalam sebuah grup
tertentu, yang disebut sebagai multicast group.
Multicasting merupakan sebuah cara
mentransmisian data secara connectionless
(komunikasi dapat terjadi tanpa adanya negosiasi
pembuatan koneksi), dan klien dapat menerima
transmisi multicast dengan mencari di mana
lokasinya.
merupakan jenis paket, berasal dari satu buah
titik dan bertujuan ke sebuah alamat khusus
(bukan titik khusus), di mana alamat khusus ini
dapat ‘didengarkan’ oleh titik-titik lain di
jaringan
yang
‘berkepentingan’
untuk
mendengarkannya.
Proses komunikasi terjadi melalui satu alat
dengan alat lain. Masing-masing media dapat
berkomunikasi
menggunakan
media
yang
menghubunginya
Konsepnya mirip dengan siaran radio, yaitu, jika
hendak mendengarkan suatu siaran khusus,
maka harus merubah frekuensi radio ke
frekuensi yang tepat dengan demikian tentunya,
berjuta-juta orang dapat mendengarkan radio
yang sama.
Contoh Paket multicast sangat efektif untuk
keperluan video streaming, audio streaming
dsb. , karena dari sisi titik pengirim, hanya perlu
‘mengirimkan’ paket satu kali saja ke alamat
khusus.
Hanya saja, untuk dapat melakukan multicast,
jaringan harus disetting sedemikian rupa,
karena tidak semua jaringan mendukung
multicast dengan baik. Sebagai contoh, tidak
mungkin meng-stream video secara multicast ke
Internet dengan mudah tanpa mengotak-atik
perangkat router
Multicast sebenarnya merupakan mekanisme
komunikasi one-to-many, atau
point-to-multipoint.
Contoh
Contoh server yang digunakan untuk mengakses
internet. Server mampu melayanin beberapa
komputer dan komputer yang dihubungi mampu
memberi respon balik ke server
2. Broadcast :
merupakan jenis transmisi di
mana informasi dikirim dari hanya satu
komputer namun diterima oleh semua komputer
yang terhubung ke jaringan. Ini berarti bahwa
setiap
kali
komputer
atau
node
akan
mengirimkan paket 'siaran' tipe, semua komputer
lainnya akan menerima paket informasi.
Proses dalam pengiriman data/ informasi dari
satu alat ke alat lainnya. Alat yang menerima tdk
dapat memberi respon balik.
Biasanya jenis paket broadcast akan dikirimkan
untuk menyatakan suatu keberadaan sebuah
layanan, atau pencarian sebuah titik pada
jaringan.
Apabila jaringan dianalogikan dengan pasar,
maka para penjual yang saling berteriak satu
sama lain, merupakan paket broadcast. Karena
akan dengan mudah mengetahui di mana dapat
diketahui untuk membeli sayur tertentu, tapi di
sisi yang lain akan merasa ‘bising’ dengan
kondisi di mana semua pembeli berteriak,
apalagi bila bersama
Contoh sebuah komputer boot up dan meminta
untuk alamat IP. Dalam hal ini, komputer yang
booting dan meminta alamat IP tidak tahu mana
komputer akan dapat memberikan dengan
alamat IP. Kemudian akan menyiarkan paket
permintaan pada jaringan yang akan diterima
oleh semua komputer lain.
Contoh hanya komputer yang bertindak sebagai
server DHCP. Contoh lainnya ARP (Address
Resolution Protocol) yang akan menyiarkan
permintaan resolusi alamat kepada semua
komputer lain pada jaringan.
Contoh gambar Broadcast
Contoh nyata dari paket broadcast adalah
paket-paket NETBIOS yang dikirimkan oleh
Windows setiap periode tertentu, yang
berisikan nama komputer dan workgroup di
mana komputer tersebut berada. Itulah
sebabnya, akan mendapatkan banyak informasi
tentang apa saja komputer yang ada di jaringan
pada Network Neighbourhood atau My Network
Places.
3. Unicast:
merupakan Jenis transmisi di mana
informasi dikirim dari satu pengirim ke satu
penerima (antara satu-ke -satu node).
Jenis
paket yang berasal dari satu titik, dan memiliki
tujuan hanya satu titik. Atau Kontak informasi
yang terjadi pada suatu alat dengan satu alat lain
Secara analogi, saat browsing Internet, sudah
melakukan proses unicast , yaitu apabila
mengetik satu alamat URL misalnya, komputer
ber-unicast dengan server web yang ada di URL.
Hampir
seluruh
paket
aplikasi
yang
mendominasi jaringan bersifat unicast, seperti
http, telnet, ftp. dimana permintaan informasi
diarahkan dari satu pengirim ke satu penerima
di ujung lainnya.
Mode transmisi ada 3 cara pengiriman :
a. Secara sinkron : transmisi data dimana
kedua pihak pengirim dan penerima berada
pada waktu yang sinkron biasanya dimulai
dengan sinyal SYN untuk melakukan
sinkronisasi
antara
2
piranti
yang
berkomunikasi, kemudian menyusul sinyal
STX (start-of-text) yang menyatakan awal
transmisi data, kemudian sejumlah (blok)
data dikirim dan ditutup dengan ETX
(end-of-text), diakhiri dengan sinyal BCC
(block-check-character)
bergunakan
untuk
mengecek kesalahan saat penerimaan data.
b. Secara tak-sinkron : transmisi data dimana
ke dua pihak tidak perlu berada pada waktu
yang sinkron. Contoh : transmisi data dari
keyboard ke memory dilakukan tak-sinkron
disebabkan kecepatan keyboard ditentukan
oleh kecepatan user saat menekan tombol,
sedangkan kecepatan memory ditentukan
oleh
transfer-rate
dari
memory,
(bagaimanapun juga kecepatan manusia
dalam mengetik masih lambat dibandingkan
kecepatan prosesor saat mentransfer data
Konfigurasi Jalur Komunikasi
1. Komunikasi titik-ke-titik
Menghubungkan secara khusus dua piranti
yang hendak berkomunikasi
Konfigurasi ini banyak ditemukan pada
transmisi paralel, misal komunikasi antara
dua
komputer
secara
paralel
untuk
melakukan penyalinan file,
2. Komunikasi multi –titik
Menyatakan hubungan yang memungkinkan
sebuah jalur digunakan oleh banyak piranti
yang berkomunikasi.
Contoh komunikasi pada jaringan topologi
bus dimana satu saluran data terhubung ke
beberapa komputer
Arah Transmisi
1. Full duplex
Komunikasi antara dua piranti yg dapat dilakukan dengan dua arah dan tidak dapat dilakukan secara bersamaan/serentak. Contoh Handphone, telephone.
2. Simplex
Simplek sebagai komunikasi antara dua piranti yang hanya dapat melakukan komunikasi / transmisi satu arah saja dari sumber /pengirim ke tujuan/penerima (penerima data / informasi bersifat pasif serta tak dapat memberikan respon balik terhadap pengirim informasi / data)
Contoh komunikasi antar pemancar televisi atau pemancar radio, komunikasi antar perangkat barcode dengan komputer, komunikasi antara amplifier dengan speaker.
3. Half Duplex
Komunikasi antara dua piranti yg dapat dilakukan dengan dua arah, akan tetapi tidak dapat dilakukan secara bersamaan/serentak, tetapi secara bergantian. Contoh Walkie-talkie, dimana ketika seseorang berbicara maka alat yang satunya hanya dapat digunakan untuk mendengarkan saja dan tidak dapat digunakan untuk berbicara bersamaan.
Paradigma Komunikasi
Layanan : Pembuatan Roti
Resep (pengetahuan tentang layanan) Bahan (Resource yang dapat berpindah)
Oven (resource yang tidak dapat berpindah) Koki (Komponen untuk mengeksekusi)
Paradigma client-server
A ingin membuat roti, tetapi ia tidak tahu resepnya, tidak punya bahannya dan oven yg dibutuhkan. A
tahu B memiliki semua itu. A meminta B untuk
membuatkan roti dan B menyanggupinya. Maka B membuatnya dan mengirimkannya kembali ke A.
Paradigma code on demand
A ingin membuat roti fa punya bahan dan oven, tapi tidak tahu resepnya. A tahu B punya resepnya, jadi
ia minta tolong B untuk memberitahu resepnya.
Setelah diberitahu, A membuat rot! di rumahnya.
Paradigma remote evaluation
A ingin membuat roti. ia tahu resepnya, tapi ia tidak punya bahan dan oven. B punya keduanya, tapi ia tidak tahu cara membuat roti. B mau membuatkan roti untuk A, shg A memberitahu B resepnya. B lalu
membuat roti untuk A di rumahnya,
Paradigma mobile agent
A ingin membuat roti. ia punya bahan dan resep
tapi ia tidak punya oven di rumahnya. A tahu B
punya oven dan bersedia meminjamkannya. Maka A pergi ke rumah B dan membuat roti di sana.
Cara berkomunikasi :
a. Komunikasi langsung
Setiap proses yang ingin berkirim pesan harus mengetahui secara jelas dengan siapa berkirim pesan. Hal ini dapat mencegah pesan salah kirim ke proses yang lain.
Karakteristik komunikasi langsung: ○ Link dapat otomatis dibuat
○ Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan
○ Diantara pasangan tsb terdapat tepat satu link ○ Link tsb merupakan link komunikasi dua arah
b. Komunikasi tidak langsung
Menggunakan sejenis kotak surat atau port mempunyai ID unik untuk menerima pesan. Proses dapat berhubungan satu sama lain jika
mereka membagi port.
Karakteristik komunikasi ini antara lain:
○ Link hanya terbentuk jika beberapa proses membagi kotak surat
○ Setiap link dapat terhubung dengan banyak proses
○ Setiap pasang proses dapat membagi beberapa link komunikasi.
○ Link yang ada dapat sebagai link terarah maupun tak terarah
Komunikasi antara proses membutuhkan subroutine untuk mengirim dan menerima data. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak. Hal ini sering dikenal juga dengan komunikasi dalam keadaan sinkron maupun asinkron.
Ketika Komunikasi dalam keadaan sinkron terjadi 2 hal kejadian yaitu Bloking send (pemblokiran pengirim sampai pesan sebelumnya diterima) dan Bloking Receive (pemblokiran penerima sampai terdapat pesan yang akan dikirim)
Sedangkan dalam keaadan asinkron yang terjadi adalah Non-Bloking send ( pengirim dapat terus mengirim pesan tanpa memperdulikan apakah pesan sebelumnya sampai atau tidak ) dan Non-Bloking Receive (penerima menerima semua pesan baik pesan yang gagal maupun yang valid)
Setiap jenis komunikasi baik langsung maupun tak langsung serta penukaran pesan oleh proses memerlukan antrian sementara (disimpan dalam buffer/penyangga). Pada dasarnya terdapat 3 jenis cara untuk mengimplementasikan antrian :
a. Kapasitas nol. Antrian mempunyai panjang maksimum nol sehingga tidak ada penungguan pesan (message waiting). Artinya pengirim harus memblok sampai penerima menerima pesan.
b. Kapasitas tak terbatas. Antrian mempunyai panjang yang tak terhingga sehingga semua pesan dapat menunggu dan pengirim tidak akan pernah diblok.
c. Kapasitas terbatas. Antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirim maka pengirim dapat langsung eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh pengirim harus memblok sampai terdapat ruang pada antrian
KOMUNIKASI ANTAR PROSES (IPC)
Sistem terdistribusi sangat bergantung pada pertukaran data dan sinkronisasi diantara proses otonom yang terdistribusi.
Komunikasi antar proses tersebut dikenal dengan nama IPC (Inter Proses Communication)
IPC Adalah cara atau mekanisme pertukaran data antara satu proses dengan proses lainnya, dimana proses dapat berjalan baik yang berada dalam komputer yang sama atau komputer jarak jauh yang berhubungan dengan jaringan
IPC adalah suatu kemampuan yang didukung oleh beberapa sistem operasi yang memungkinkan satu proses untuk berkomunikasi dengan proses lain
IPC Sebagai komunikasi antar proses untuk mengirim data dari satu proses ke proses yang lain, baik antar proses dalam satu komputer maupun proses-proses dalam komputer yang berbeda.
Dikembangkan pada tahun 1994 untuk mendukung NASA dalam sebuah proyek penerbangan. IPC digunakan dalam sistem Skyworker.
IPC memiliki perpustakaan (untuk C, C++, Common LISP, JAVA) yang berisi suatu fungsi untuk memarshal dan unmarshal data, menangani transfer data antar mesin, memanggil user defined untuk penanganan jika pesan diterima, dan memanggil user defined untuk callback pada interval tertentu.
IPC saat ini berjalan pada berbagai macam bahasa dan sistem operasi seperti : Sparc berjalan SunOS dan Solaris, Prosesor Intel menjalankan Linux, Windows NT, Windown 98, Macintosh menjalankan Mac OS dan OSX.
IPC secara otomatis dilakukan oleh program, sebuah fungsi yang sama juga dilakukan secara interacative ketika user melakukan operasi copy-cut-paste dari satu proses ke proses lainnya dengan menggunakan clipboard
IPC terdiri atas protokol yang menjamin sebuah respons dari permintaan dan menggunakan socket, untuk membuka, mendaftar pesan, mengirim dan menerima pesan
IPC sekarang mendukung aplikasi multithread (hanya di linux)
IPC menggunakan client/server dengan paradaigma pesan-passing
Karakteristik IPC
a. Pertukaran pesan antar sepasang proses dapat didukung dengan dua operasi komunikasi pesan : send dan receive.
b. Sebuah proses mengirimkan sebuah pesan (sederetan byte) ke tujuan dan proses lain pada tujuan menerima pesan
c. Pengiriman Pesan
send expression_list to destination_designator
expression_list di evaluasi
Menambahkan pesan baru ke destination_designator
receive variable_list from source_designator
Menerima pesan ke variable_list Menghapus pesan yang diterima
d. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak. Hal ini sering dikenal juga dengan komunikasi dalam keadaan sinkron maupun asinkron.
e. Pada sisi penerima terdapat tumpukan antrian pesan
f. Sinkronisasi diperlukan karena adanya perbedaan kecepatan eksekusi proses pada dua komputer yang berbeda juga diperlukan oleh suatu proses mempengaruhi komputasi di proses lainnya
g. Komunikasi Synchronous, proses pengirim dan penerima melakukan sinkronisasi untuk tiap pesan yang dipertukarkan. Operasi send dan
receive adalah operasi blocking. (pemblokiran
pengirim sampai pesan sebelumnya diterima dan pemblokiran penerima sampai terdapat pesan yang akan dikirim)
h. Komunikasi Asynchronous, operasi send adalah operasi non-blocking (dapat terus mengirim pesan tanpa memperdulikan apakah pesan sebelumnya sampai atau tidak ), sedangkan operasi receive dapat blocking ataupun
non-blocking (penerima menerima semua pesan baik
pesan yang gagal maupun yang valid ) i. Tujuan Pengiriman Pesan
- Pada protokol internet, pesan dikirim ke (alamat internet, port).
- Sebuah port dimiliki oleh 1 proses penerima, namun dapat memiliki beberapa proses pengirim.
- Setiap proses yang mengetahui angka port, dapat mengirim pesan ke proses tersebut.
j. Jika proses client menggunakan alamat Internet tetap untuk menunjuk sebuah layanan, maka layanan yang diminta harus berada pada alamat tetap tersebut.
IPC dapat dilakukan dengan menerapkan
beberapa teknik yaitu :
1. Sistem berbagi memory (Shared memory
system)
Merupakan salah satu cara berkomunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh programmer.
Pada metode ini sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif
2.
Sistem berkirim pesan (Message
Passing)
Komunikasi antara proses dan objek dilakukan melalui message passing.
Client melakukan :
1. Mengirim (request) pesan ke server 2. Menerima hasil (reply dari server) Server melakukan :
1. Penerimaan pesan (request) dari client 2. Mengeksekusi permintaan dari client 3. Mengirim hasil (reply) ke client.
Komunikasi antar proses di dasarkan pada pertukaran suatu format message dengan menggunakan suatu API tertentu.
Proses ini menyediakan dua operasi yaitu mengirim dan menerima pesan. Agar kedua bagian sistem dapat berkomunikasi satu sama lainnya, maka yang harus dilakukan adalah membuat sebuah link komunikasi antara keduanya.
Sistem berkirim pesan sangat penting dalam sistem operasi karena dapat diimplementasikan dalam beberapa hal seperti pembagian memori, pembagian bus, dan melaksanakan proses yang membutuhkan pengerjaan bersama antar beberapa bagian sistem operasi
Client/Server
Client adalah komputer yang mengakses beberapa service yang dibutuhkan. Server adalah komputer yang dapat memberikan service.
Client akan mengirim request ke server lewat jaringan. Jika request dapat dilaksanakan maka server akan memproses dan mengirim balasan berupa service yang diminta.
Karakteristik Client
No. Client Server
1. Pasif Aktif
2. Mengirim request Menerima request
3. Menunggu dan menerima balasan Menerima request, memproses dan mengirim balasan/hasil
Baik client maupun server untuk dapat berhubungan menggunakan Socket.
SOCKET
Istilah socket telah digunakan dalam dunia komputer untuk menggambarkan konektor yang menghubungkan motherboard dengan prosessor khususnya untuk tipe dekstop dan server (Intel x86), ada juga socket 370 prosessor Intel Pentium 3 dll. Tidak selalu berbentuk socket tapi ada juga yang berbentuk slot.
Adalah tempat dudukan prosessor pada motherboard, berbentuk segi empat dengan lubang-lubang kecil tempat tertancapnya kaki-kaki prosessor yang tersusun membentuk matriks.
Socket dikembangkan dari UNIX BSD, dan saat ini sudah ada pada seluruh UNIX (juga Linux), MS Windows, Mac
Socket menyediakan endpoint untuk komunikasi antar proses di dalam jaringan .
Untuk proses penerima pesan, socket harus di kaitkan dengan port lokal dan satu alamat Internet komputer client
Pesan yang dikirimkan ke suatu alamat Internet dan port tertentu hanya dapat diterima oleh proses yang socketnya dikaitkan dengan alamat Internet dan port tersebut
Proses mungkin menggunakan socket yang sama untuk pengiriman dan penerimaan
Setiap komputer dapat memiliki 216 port.
Sebuah proses dapat membuat beberapa socket untuk menerima pesan
Sepasang proses berkomunikasi dengan membangun sepasang socket. Socket dibuat dengan menyambungkan 2 buah alamat IP melalui port.
Port yang sama tidak dapat digunakan oleh dua proses yang berbeda (kecuali IP multicasting)
Komunikasi dilakukan antara dua socket yang merepresentasikan dua proses (pengirim dan penerima).
IPC diwujudkan dengan pertukaran pesan antar proses melalui sepasang socket
Secara umum socket digunakan dalam sistem client/ server dimana server menunggu client pada port tertentu, begitu juga client yang akan menghubungi server. Dengan demikian server akan menyetujui komunikasi dengan client melalui socket yang dibangun.
Agar socket dapat berkomunikasi dengan socket lainnya, maka socket membutuhkan suatu alamat yang unik untuk identification.
Alamat Socket terdiri atas Alamat IP (dapat menggunakan alamat jaringan lokal maupun alamat internet ) dan Nomor Port
Karakteristik Socket
Endpoint untuk IPC
Transmisi pesan antar socket
Socket digabung dengan UDP dan TC Nomor port sharing
Nomor Port dibagi dalam 3 kelompok : Well known port, antara 0 – 1023 Registered Port , antara 1024 – 49151
Dynamic/Private Port, antara 49152 – 65535
Sebagai contoh sebuah program web broser pada host X (IP 146.86.5.4) menggunakan port 1655, ingin berkomunikasi dengan web server IP 152.118.25.15 yang sedang menunggu pada port 80. Sehingga terjadilah sebuah hubungan dengan sepasang socket (146.86.5.4: 1655) dengan (152.118.25.15: 80)
Local Procedure Call : proses client dan server berada dalam satu PC
Remote Procedure Call : Sebuah proses dalam PC local memanggil procedure proses di PC lain
Komunikasi antar object dalam sistem terdistribusi, khususnya menggunakan RMI (Remote Method Invocation) dan RPC (Remote Procedure Call). RMI dan RPC berbasiskan metode request dan reply.
Gambar 1: Model komunikasi dan implementasi layer pada sistem terdistribusi
Request dan reply diimplementasikan pada protokol jaringan.
Network Protocol
Middleware dan aplikasi terdistribusi diimplementasikan di atas protokol network. Protocol diimplementasikan dalam beberapa lapisan (layer).
Gambar 2.2 : Layer protocol pada Internet
RPC dan RMI berada pada Middleware
Tujuan dari RPC dan RMI dibuat bagi programmer : • agar komputer yang terdistribusi terlihat seperti komputer yang terpusat.
• untuk melihat sistem terdistribusi dari sisi pemrogramman.
Remote Procedure Call (RPC)
Adalah sebuah metode yang memungkinkan untuk mengakses sebuah prosedur yang berada di komputer lain.
RPC (Remote Procedure Call) Proses kurang lebih sama dengan RMI. Pada RMI dikenal Proxy dan Skeleton, pada RPC dikenal dengan Stub (Client Stub dan Server Stub).
Juga memungkinkan sebuah proses client memanggil suatu subrutin beserta parameternya berdasar interface yang disediakan oleh proses server.
RPC (Remote Procedure Call) Proses kurang lebih sama dengan RMI. Pada RMI dikenal Proxy dan Skeleton, pada RPC dikenal dengan Stub (Client Stub dan Server Stub).
Juga memungkinkan sebuah proses client memanggil suatu subrutin beserta parameternya berdasar interface yang disediakan oleh proses server.
Untuk dapat melakukan ini sebuah server harus menyediakan layanan remote procedure.
RPC (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)
RPC mengasumsi 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.
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.
RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma
procedural programming.
Hal itu menyulitkan ketika menyediakan banyak
remote procedure.
RPC menggunakan socket untuk berkomunikasi dengan proses lainnya.
Pada sistem seperti SUN, RPC secara default sudah ter-install kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke jaringan.
Prinsip RPC dalam program Client-Server
Skema RPC ini dilakukan juga pada proses-proses yang running di komputer berlainan
Stub menerima request, unmarshall data, dan
memanggil method yang diminta.
Kemudian proses mengembalikan nilai yang diinginkan
Sebelum mekanisme RPC digunakan, data harus dipacking ke dalam format transmisi, langkah ini dinamakan marshalling
Proxy bertanggung jawab untuk marshalling data, kemudian mengirimkan data dan meminta instans dari komponen (remote)
Langkah-langkah dalam RPC
1. Prosedur client memanggil client stub. Klien memanggil prosedur stublokal. Prosedur Stub akan memberikan parameter dalam suatu paket yangakan dikirim ke jaringan. Proses ini disebut sebagai marshalling.
2. Client stub membuat pesan dan memanggil OS client/local. Fungsi Network pada O/S (Operating system ± Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message.
3. OS client mengirim pesan ke OS server/remote. Kemudian Kernel ini akan mengirim message ke sistem remote. Kondisi ini dapat berupaconnectionless atau connection-oriented.
4. Remote OS memberikan pesan ke server stub. Stub pada sisi server akan melakukan proses unmarshals pada paket yang dikirim pada network. 5. Server stub meng-unpack parameter2 dan memanggil server. Stub pada server kemudian mengeksekusi prosedur panggilan lokal.
6. Server mengerjakan operasi, dan me- ngembalikan hasilnya ke server stub. Jika eksekusi prosedur ini telah selesai, maka eksekusi diberikan kembali kestub pada server.
7. Server stub mem-pack hasil tsb dan memanggil OS lokalnya. Stub server akan melakukan proses marshals lagi dan mengirimkan message nilai balikan( hasilnya ) kembali ke jaringan.
8. OS server mengirim pesan (hasil) ke client OS. Message ini akan dikirim kembali ke klien.
9. Client OS memberikan pesan tersebut ke client stub. Stub klien akan membaca message ini dengan menggunakan fungsi pada jaringan.
10. Client stub meng-unpack hasil dan me-return hasil ke client. Proses unmarshalled kemudian dilakukan pada message ini dan nilai balikan akan diambil untuk kemudian diproses pada proses lokal.
Impelentasi RPC
1.Sun Microsystems ‘ Open network Computing’ 2.Xerox Courier
3. Applo’s Network Computing Architecture’
Remote Method Invocation
Seiring dengan perkembangan teknologi berorientasi objek maka sistem RPC ini dinilai kurang efisien
lagi.
Hal ini dikarenakan programmer dalam membuat aplikasi client server masih harus membuat fungsi-fungsi yang sama untuk aplikasi yang berbeda.
Seperti kode program yang sama digunakan dengan melakukan copy paste dan melakukan sedikit
perubahan untuk menyesuaikan dengan aplikasi yang baru dibuat. Dengan adanya perubahan, maka fungsi tersebut pada masing-masing aplikasi harus di update satu persatu lagi.
Hal ini mengakibatkan perawatan program menjadi sulit dan fungsi-fungsi tersebut dapat menjadi tidak konsisten satu sama lain.
Maka muncullah RMI bidang pemrograman berorientasi objek
Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote dengan menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming).
RMI memungkinkan untuk mengirim obyek sebagai parameter dari remote method.
User dapat mengembangkan aplikasi java yang terdistribusi pada jaringan dengan menggunakan RMI karena program java diperbolehkan memanggil method pada remote objek
Tujuannya
1. Menyediakan fasilitas bagi programmer untuk dapat mendistribusikan objek yang digunakan pada beberapa proses yang berbeda.
2. Dapat berjalan dalam satu mesin ataupun di beberapa mesin yang terhubung dengan jaringan.
Aplikasi RMI terdiri dari 2 program terpisah yaitu:
-. Aplikasi Server umumnya membuat beberapa objek remote dengan menyediakan referensi terhadap objek-objek agar dapat diakses serta menunggu client memanggil method dari objek-objek remote tersebut (merequest server)
-. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.
Implementasi RMI
Ilustrasi yang terjadi pada method RMI Programmer pada client menulis :
Pada sisi server mempunyai fungsi sebagai berikut :
Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yang dikirim melalui jaringan.
Gambar: Ilustrasi implementasi RMI
Komponen-komponen dalam RMI (gambar ) :
Object A(client) : meminta layanan
Object B(server) : menghantarkan layanan Proxy for B
- Ketika object A mempunyai remote reference ke object B, maka akan timbul objek proxy B pada host object A. Proxy terbentuk ketika remote object reference digunakan pertama kali.
- Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A ke B ditangani seolah – olah hanya mengakses Proxy B.
- Ketika invokasi terjadi proxy menggunakan metode marshals untuk membungkus pesan yang akan dikirim ke server. Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal (membuka bungkus) untuk kemudian diteruskan ke client (Object A).
Skeleton for object B
- Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class tersebut dapat diakses oleh RMI.
- Skeleton menerima pesan kemudian melakukan unmarshal dan meneruskan ke method object yang dituju. Dan kemudian menunggu hasil dari object B dan kemudian membungkus hasil (unmarshal) dan kemudian dikirimkan ke client (Objec A).
- Ada bagian dari skeleton B yang disebut dengan dispatcher. Dispatcher menerima request dari communication module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi dengan object).
Communication Modul (Modul Komunikasi)
- Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.
Remote Reference Module
- Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antar refensi objek dan lokal disimpan dalam remote object table.
- Yang menggenerate class untuk proxy dan skeleton adalah middleware.
- Contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang di generate oleh middleware.
Langkah-langkah proses dengan RMI :
Urutan pemanggilan pada object client
mengaktifkan method pada proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B.
1. Kemudian method yang ada pada proxy melakukan pembungkusan argumen menjadi suatu pesan (marshalling) dan meneruskan ke modul komunikasi.
2. Berdasarkan pada remote reference yang didapat dari remote reference modul, modul komunikasi memulai request dan reply protocol melalui network.
3. Modul komunikasi pada server menerima request dari client. Kemudian berdasarkan referensi lokal yang diterima dari remote reference modul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (corresponding method).
4. Method pada skeleton meng-ekstrak (unmarshalling) argumen pada pesan yang di terima dan mengaktifkan corresponding method (method yang berfungsi untuk melakukan komunikasi) pada object B (server).
5. Setelah menerima hasil dari object B, method dari skeleton akan membungkus hasil tersebut dalam sebuah pesan (marshalling) dan meneruskan pesan yang sudah dibungkus ke modul komunikasi.
6. Modul komunikasi mengrimkan pesan tersebut ke client melalui jaringan.
7. Modul komunikasi pada client menerima hasil (reply) dari server dan meneruskan ke corresponding method pada proxy.
8. Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan ke object A (client).
RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.
Hal-hal yang sering kali dilakukan aplikasi objek terdistribusi adalah
• Melokasikan objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming
facility) yaitu rmiregistry atau aplikasi dapat
mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.
• Berkomunikasi dengan objek remote: Detail dari komunikasi antara objek remote ditangani oleh RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java standar.
• Memanggil (load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya. Ilustrasi di bawah ini menggambarkan sebuah sistem RMI dengan menggunakan web srver untuk memanggil class bytecodes, dari server ke client dan dari client ke server untuk objek-objek yang diperlukan :
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.
Membuat Program dengan RMI
Di dalam RMI semua informasi tentang satu pelayanan srver disediakan dalam suatu definisi remote interface. Programmer dapat memberitahukan metod apa yang dapat dikerjakan oleh server yang meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client.
Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan cara melihat ke remote interface. Maka client akan memperoleh referensi ke remote objek melalui RMI registry
Contoh RMI dengan menggunakan Java RMI : Server object akan mencetak ”Hello Ruddy” ke layar & mengembalikan pesan ke klien
Pada sisi server : - Server Method
import java.rmi.*;
public interface SimpleInterface
String printMessage(String name) throws RemoteException;
}
- Server Object
import java.rmi.*;
import java.rmi.server.*;
public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac
public SimpleServer() throws RemoteException { super(); }
public String printMessage(String name) throws RemoteException {
System.out.println(name);
return(Hello + name);
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
SimpleServer newServer = new SimpleServer();
System.out.println(SimpleServer attempting to
bind to the registry);
Naming.rebind(//ruddy.info:30010/SimpleServer,
System.out.println(SimpleServer bound in the registry);
} catch(Exception e) {System.out.println(SimpleServer error: + e.getMessage());
e.printStackTrace();
}}
}
Pada sisi client :
import java.rmi.*;
public class SimpleClient {
private static SImpleInterface server = null;
public static void main(String args[]) {
try {
server = (SimpleInterface)
Naming.lookup(//ruddy.info:30010/SimpleServer);
System.out.println(server.printMessage (Ruddy));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}}
}
Langkah-langkah membangun
suatu
aplikasi terdistribusi menggunakan RMI
adalah
1. Mendefinisikan remote interface
2. Implementasi Remote Interface dan Server
a.Mendekralasikan bahwa kelas tersebut mengimplementasikan remote interface
b. Menentukan satu implementasi untuk tiap remote method
c. Menyediakan satu implementasi untuk tiap remote method
d.Membuat danmenginstall satu security manager e. Membuat satu atau lebih instance dari remote
object
3. Pengembangan Client (applet) yang Menggunakan Remote Interface.
Program applet yang dikembangkan
a.Applet mengambil referensi ke remote object implementasi dari rmiregistry pada server host b. Applet memanggil remote method pada remote object
4. Mengkompilasi Source Files dan Membuat
Stub dan Skeleton.
5. Memulai RMI Registry
6. Menjalankan Server dan Client
RPC Relatif mudah digunakan :
Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti socket, marshalling &
unmarshalling
-. Tidak fleksibel terhadap perubahan: karena adanya hubungan statis antara client & server saat
run-time.
-. Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan OOP.