ipc_komunikasi.

Download Report

Transcript ipc_komunikasi.

Komunikasi antar Proses
1
Pendahuluan



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 dapat dilakukan dengan menerapkan beberapa teknik berikut :
 Semaphore, suatu struktur data yang di share beberapa proses
untuk operasi sinkronisasi pemakaian sesumber secara bersamasama
 Shared Memory, memungkinkan beberapa proses untuk membagi
bersama virtual memory.
 RPC (Remote Procedure Call), memungkinkan sebuah proses client
memanggil suatu subrutin beserta parameternya berdasar interface
yang disediakan oleh proses server
 Message Passing, komunikasi antar proses di dasarkan pada
pertukaran suatu format message dengan menggunakan suatu API
tertentu.
2
Karakteristik IPC



Pertukaran pesan antar sepasang proses dapat didukung dengan
dua operasi komunikasi pesan : send dan receive.
Sebuah proses mengirimkan sebuah pesan (sederetan byte) ke
tujuan dan proses lain pada tujuan menerima pesan
Pengiriman Pesan
 send expression_list to destination_designator



receive variable_list from source_designator




expression_list di evaluasi
Menambahkan pesan baru ke destination_designator
● Menerima pesan ke variable_list
● Menghapus pesan yang diterima
Aktifitas IPC :
 komunikasi data dari proses pengirim ke proses penerima
 Sinkronisasi antar sepasang proses tersebut
Pada sisi penerima terdapat tumpukan antrian pesan
3
Karakteristik IPC

Sinkronisasi




Diperlukan karena adanya perbedaan kecepatan eksekusi
proses pada dua komputer yang berbeda
Diperlukan oleh suatu proses mempengaruhi komputasi di
proses lainnya
Komunikasi Synchronous, proses pengirim dan
penerima melakukan sinkronisasi untuk tiap pesan
yang dipertukarkan. Operasi send dan receive
adalah operasi blocking.
Komunikasi Asynchronous, operasi send adalah
operasi non-blocking, sedangkan operasi receive
dapat blocking ataupun non-blocking.
4
Karakteristik IPC

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.
Jika proses client menggunakan alamat Internet tetap
untuk menunjuk sebuah layanan, maka layanan yang
diminta harus berada pada alamat tetap tersebut.
Agar tidak selalu tertuju pada satu alamat tetap saja,
maka dapat digunakan pedekatan berikut untuk
transparansi lokasi :


Name service
Location Independent Identifier
5
Socket dan Port



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
 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
Port yang sama tidak dapat digunakan oleh dua proses yang
berbeda (kecuali IP multicasting)
6
Socket dan Port
Nomor Port dibagi dalam 3 kelompok :
● Well known port, antara 0 – 1023
● Registered Port , antara 1024 – 49151
● Dynamic/Private Port, antara 49152 - 65535
7
API Java untuk Alamat Internet
8
Komunikasi Datagram UDP






Mengirim datagram ke penerima
Tidak memerlukan ACK atau pengiriman ulang
Menggunakan socket
Server menyediakan sebuah port untuk pengiriman
Menerima pesan dan id pengirim (ip, port)
Permasalahan pada UDP :
 Ukuran Pesan, proses penerimaan perlu menyediakan sejumlah
elemen array untuk menerima sebuah pesan. Jika pesan terlalu
besar akan dipotong sesuai ukuran array. Berdasar protokol IP,
ukuran paket dapat sampai 64KB, namun biasanya max. 8 KB.
Aplikasi yang membutuhkan pengiriman paket yang besar, harus
melakukan pemotongan.
 Blocking, Socket menyediakan non-blocking send dan blocking
receive untuk komunikasi datagram.
 Timeout, operasi block untuk receive sangat cocok untuk
menunggu permintaan dari client. Namun sangat tidak baik jika
terus dalam kondisi blocking pada saat menunggu balasan, maka
perlu timeout.
9
Komunikasi Datagram UDP

Model Kegagalan
 Omission Failure



Ordering Failure
Pesan yang dikirim terkadang tidak sesuai dengan permintaan.


Pesan terkadang akan dibuang oleh karena buffer penuh atau ada
kesalahan checksum.
Aplikasi yang menggunakan UDP harus menyediakan sendiri suatu
kualitas komunikasi yang diperlukan.
Kapan menggunakan UDP?
 Jika service dapat menerima kondisi omission failure. Contoh: DNS
 Untuk mengurangi beban terhadap jaminan bahwa pesan harus
terkirimkan dengan baik :



Tidak perlu menyimpan informasi status
Tidak perlu transmisi ulang
Tidak ada latency pada pengirim (Latency : perlambatan antara waktu
awal transmisi pengirim dan waktu bit pertama diterima oleh penerima.)
10
Java UDP
•Java menyediakan
• DatagramPacket, untuk memformat informasi menjadi
sebuah paket datagram : pesan (array), panjang pesan,
alamat proses (IP, port)
•DatagramSocket, untuk membentuk socket penghubung
dengan proses lain. Beberapa method :
• send dan receive
• setSoTimeout
• connect
11
Contoh UDP Client
import java.net.*;
import java.io.*;
public class UDPClient{
public static void main(String args[]){
// args berisi isi pesan dan hostname tujuan
try {
DatagramSocket aSocket = new DatagramSocket(); // buat socket
byte [] m = args[0].getBytes();
InetAddress aHost = InetAddress.getByName(args[1]); // DNS lookup
int serverPort = 6789;
DatagramPacket request =
new DatagramPacket(m, args[0].length(), aHost, serverPort);
aSocket.send(request); //kirim nessage
byte[] buffer = new byte[1000];
DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
aSocket.receive(reply); //tunggu reply
System.out.println("Reply: " + new String(reply.getData()));
aSocket.close();
}catch (SocketException e){System.out.println("Socket: " +
e.getMessage());
}catch (IOException e){System.out.println("IO : " + e.getMessage());}
}
}
12
Contoh UDP Server
import java.net.*;
import java.io.*;
public class UDPServer{
public static void main(String args[]){
DatagramSocket aSocket = null;
try{
aSocket = new DatagramSocket(6789);
byte[] buffer = new byte[1000];
while(true){
DatagramPacket request =
new DatagramPacket(buffer, buffer.length);
aSocket.receive(request);
DatagramPacket reply = new DatagramPacket(request.getData(),
request.getLength(), request.getAddress(), request.getPort());
aSocket.send(reply);
}
}catch (SocketException e){System.out.println("Socket: " +
e.getMessage()); }
catch (IOException e) {System.out.println("IO: " +
e.getMessage());}
}finally {if(aSocket != null) aSocket.close();}
}
}
13
Komunikasi Datagram TCP




Byte stream
Baca dan tulis ke stream
Connection oriented
Permasalahan pada UDP :



Pencocokan Data, dua proses yang berkomunikasi harus
sepakat tentang format dan tipe data yang dipertukarkan.
Blocking, Socket menyediakan blocking send dan blocking
receive untuk komunikasi stream.
Thread, ketika server menerima sebuah koneksi, biasanya
dibuatkan sebuah thread untuk melayani koneksi tersebut,
sehingga dapat melayani beberapa client, jika tidak ada
thread, pada satu waktu hanya 1 koneksi client yang dapat
terlayani
14
Komunikasi Datagram TCP

Model Kegagalan
 Untuk menyediakan komunikasi yang handal, TCP menggunakan
checksum untuk pendeteksian error dan sequence number untuk
pendeteksian duplikasi data
 Untuk menyediakan validitas, TCP menggunakan timeout dan
retransmisi terhadap data yang hilang
 Ketika hubungan terputus, proses yang menggunakan TCP akan
diinformasikan hal tersebut, dengan kelemahan :


Proses tidak dapat membedakan antara kegagalan pada jaringan dan
kegagalan proses pasangannya
Proses komunikasi tidak dapat memberitahukan apakah pesan
terakhir diterima atau tidak
Sehingga dengan TCP pun tidak menjamin kehandalan
pengiriman data
Kapan menggunakan TCP?
 Kebutuhan pengiriman paket data yang dinamis tanpa harus
menyesuaikan dengan ukuran paket TCP
 Jika memang dapat menerima operasi blocking


15
Aplikasi Client
Aplikasi Server
New:
Socket
Server
Socket
Accept0:
return
JAVA
TCP
Socket
Request :
Response:
Java menyediakan
•Server Socket, menyatakan suatu koneksi TCP yang berfungsi untuk
listen yang siap menerima suatu permintaan dari proses lain
•Socket, membuat sebuah stream socket dan koneksi ke suatu nomor
port pada sebuah komputer
16