1 tuesday, december 16, 2008 the practical scientist is trying to solve tomorrow's problem on...
Post on 26-Dec-2015
216 Views
Preview:
TRANSCRIPT
1
Tuesday, December 16, 2008
The practical scientist is trying to solve tomorrow's
problem on yesterday's computer. Computer
scientists often have it the other way around.
- Numerical Recipes, C Edition
Distributed ComputingClass: BSIT-8
Instructor: Raihan Ur Rasool
Chapter 04: Chapter 04:
Inter-process CommunicationInter-process Communication
Chapter 3 Chapter 3 – SELF STUDYSELF STUDY
3
Networking issues for distributed systems
Types of network Network Principles
Protocol layers Internetworking Routing
Internet protocols Case Studies
Ethernet MobileLAN ATM
Objectives of the lecture
4
To study the general characteristics of interprocess communication and the particular characteristics of both datagram and stream communication in the Internet.
To be able to write Java and C applications that use the Internet protocols and Java serialization.
To be aware of the design issues for Request-Reply protocols and how collections of data objects may be represented in messages (RMI and language integration are left until Chapter 5).
To be able to use the Java API to IP multicast and to consider the main options for reliability and ordering in group communication.
5
Introduction The API for the Internet protocols External data representation and
marshalling Client-Server communication Group communication Case study: interprocess communication in
UNIX Summary
Chapter 4: Interprocess Communication
6
Middleware layer TCP ( UDP) from a programmers point of view
TCP : two way stream UDP : datagram, message passing
Java interface, UNIX Socket marshalling and demarshalling
data form translation Client-Server communication
Request-Reply protocols Java RMI, RPC
Group communication
Introduction
7
Middleware layer (1)
Applications, services
Middlewarelayers
request-reply protocol
marshalling and external data representation
UDP and TCP
Thischapter
RMI and RPC
Middleware layer (2)
8
An adapted reference model for networked communication.
2-5
Middleware layer (3)
9
A software layer that masks the heterogeneity of systems provides a convenient programming abstraction provides protocols for providing general-purpose
services to more specific applications, e.g. naming, security, transaction, persistent storage and event notification authentication protocols authorization protocols distributed commit protocols distributed locking protocols high-level communication protocols
remote procedure calls (RPC) remote method invocation (RMI)
Middleware (4)
10
General structure of a distributed system as middleware.
1-22
Middleware programming models
11
Remote Calls remote Procedure Calls (RPC) distributed objects and Remote Method Invocation
(RMI) eg. Java RMI
Group multicast protocols Common Object Request Broker Architecture
(CORBA) Other programming models
remote event notification remote SQL access distributed transaction processing
12
Introduction The API for the Internet protocols External data representation and
marshalling Client-Server communication Group communication Case study: interprocess communication in
UNIX Summary
Where are we ?
13
Producer—Consumer and waitProducer—Consumer and wait Send and receiveSend and receive Synchronous and asynchronousSynchronous and asynchronous
a queue associated with message destination, Sending process add message to remote queue Receiving process remove message from local queue
Synchronous: send and receive are blocking operations
Asynchronous: send is nonblocking, receive could be blocking or nonblocking
(receive notification by interrupt) Java supports multiple threads in a single process
Non-blocking communication appears to be more efficient, but it involves extra complexity in the receiving process: flow control
The characteristics of inter-process communication (1)
14
Message destinations:Message destinations: Internet address + local port Port has one receiver but many senders service name: names into server locations at run time location independent resource identifiers, e.g. in Mach
ReliabilityReliability validity: messages are guaranteed to be delivered
despite a reasonable number of packets being dropped or lost
Integrity: messages arrive uncorrupted and without duplication
OrderingOrdering the messages be delivered in sender order
The order in which they were transmitted by the sender. The delivery out of sender’s order is regarded as failure
The characteristics of interprocess communication (2)
15
Endpoint for communication between processes Both forms of communication (UDP and TCP ) use
the socket abstraction Originated from BSD Unix, present in Linux,
Windows NT and Macintosh OS etc bound to a local port (216 possible port number) and
one of the Internet address a process cannot share socket with other processes
on the same computer
Socket
message
agreed portany port socketsocket
Internet address = 138.37.88.249Internet address = 138.37.94.248
other ports
client server
Sockets
16
The application level API to TCP & UDP Allows users to write application
“protocol objects” which sit on top of TCP and UDP.
Execution of TCP/UDP/IP are in kernel space. Sockets provide the bridge to user space.
Java provides 3 types of sockets DatagramSocket – for UDP ServerSocket – for TCP server Socket – endpoint of a TCP streamMore on Sockets:More on Sockets:
ttp:::: v :sun: om: o s: oo:s:tutor l:nh a a c d c b iatwor: n :so : ts: n t on: tmle i g ced efi i i h
17
UDP datagrams are sent without acknowledgement or retries
Issues relating to datagram communication Message size: not bigger than 64k in size, otherwise
truncated on arrival blocking: non-blocking sends (message could be
discarded at destination if there is not a socket bound to the port ) and blocking receives (could be timeout)
Timeout: receiver set on socket –server blocks forever
Receive from any: not specify an origin for messages, but could be set to receive from or send to particular remote port by socket connection operation
UDP datagram communication
UDP datagram communication
18
Failure model omission failure: message be dropped due
to checksum error or no buffer space at sender side or receiver side (send-omission, receive-omission)
ordering: message be delivered out of sender order
application maintains the reliability of UDP communication channel by itself (ACK)
DNS & VOIP are implemented over UDP UDP datagram do not suffer from overheads
associated with guaranteed message delivery
19
DatagramPacket DatagramSocket
send and receive : transmit datagram between a pair of sockets
setSoTimeout : receive method will block for the time specified and then throw an InterruptedIOexception
connect: connect to a particular remote port and Internet address
Examples acceptable to services that are liable to
occasional omission failures, e.g. DNS
Java API for UDP datagrams
Datagram Sockets
20
Creating a datagram socket DatagramSocket soc = new DatagramSocket(port-no.)
Creating a datagram packect DatagramPacket p = new DatagramPacket(byte[] data,
int len, InetAddress dest, int dest-port); Sending a packet
soc.send( p ) Receiving a packet
q = new DatagramPacket(buff, len);soc.receive( q );
21
UDP client sends a message to the server and gets a reply
import java.net.*;import java.io.*;public class UDPClient{ public static void main(String args[]){
// args give message contents and server hostnameDatagramSocket aSocket = null; try { aSocket = new DatagramSocket(); byte [] m = args[0].getBytes(); InetAddress aHost = InetAddress.getByName(args[1]); int serverPort = 6789; DatagramPacket request = new DatagramPacket(m, args[0].length(), aHost, serverPort); aSocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); aSocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e){System.out.println("IO: " + e.getMessage());}}finally {if(aSocket != null) aSocket.close();}
} }
22
UDP server repeatedly receives a request and sends it back to the client
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();}
}}
23
The API to the TCP provide the abstraction of a stream of bytes to which data
may be written and from which data may be read Hidden network characteristics
message sizes (how much data to write/read) (Application) lost messages (ACK) flow control (match the speed) message duplication and ordering (identifier with each IP
Packet) message destinations (establish connection)
Once connection is established, no need of address & ports While connection establishing: client/server
Client Client Connect request, Server Connect request, Server Accept requestAccept request, becomes becomes PeersPeers
Client: creates stream socket, bind to a port, and makes a connect request to server
Server: creates a listening socket, bind to a server port, and waits for clients
TCP stream communication (1)
24
issues related to stream communication Matching of data items: agree to the contents of the
transmitted data (int & double, write/ read, ) Blocking: send blocked until the data is written in the receiver’s
buffer, receive blocked until the data in the local buffer becomes available
Threads: server create a new thread for every connection failure model
integrity and validity have been achieved by checksum, sequence number, timeout and retransmission in TCP protocol
connection could be broken due to unknown failures Can’t distinguish between network failure and the destination
process failure Can’t tell whether its recent messages have been received or
not
TCP stream communication (2)
TCP byte stream sockets
25
Server socket – waits for connections soc = new ServerSocket( port-no ); Socket newsoc = soc.accept( );
Client socket – connects to server client = new Socket(server-addr, server-port);
When connected, get streams InputStream in = client.getInputStream( );
OutputStream out = client.getOutputStream( )
26
ServerSocket accept: listen for connect requests from clients
Socket constructor
not only create a socket associated with a local port, but also connect it to the specified remote computer and port number
getInputStream getOutputStream
Java API for TCP Streams
27
TCP client makes connection to server, sends request and receives reply
import java.net.*;import java.io.*;public class TCPClient {
public static void main (String args[]) {// arguments supply message and hostname of destinationSocket s = null; try{ int serverPort = 7896; s = new Socket(args[1], serverPort);
DataInputStream in = new DataInputStream( s.getInputStream());DataOutputStream out =
new DataOutputStream( s.getOutputStream());out.writeUTF(args[0]); // UTF is a string encoding see Sn 4.3String data = in.readUTF(); System.out.println("Received: "+ data) ;
}catch (UnknownHostException e){System.out.println("Sock:"+e.getMessage());
}catch (EOFException e){System.out.println("EOF:"+e.getMessage()); }catch (IOException e){System.out.println("IO:"+e.getMessage());}
}finally {if(s!=null) try {s.close();}catch (IOException e){System.out.println("close:"+e.getMessage());}} }}
28
TCP server makes a connection for each client and then echoes the client’s request (1)
import java.net.*;import java.io.*;public class TCPServer { public static void main (String args[]) {
try{int serverPort = 7896; ServerSocket listenSocket = new ServerSocket(serverPort);while(true) {
Socket clientSocket = listenSocket.accept();Connection c = new Connection(clientSocket);Connection c = new Connection(clientSocket);
}} catch(IOException e) {System.out.println("Listen :"+e.getMessage());}
}}
// this figure continues on the next slide
29
TCP Server (2)
class ConnectionConnection extends Thread {DataInputStream in;DataOutputStream out;Socket clientSocket;public Connection (Socket aClientSocket) { try {
clientSocket = aClientSocket;in = new DataInputStream( clientSocket.getInputStream());out =new DataOutputStream( clientSocket.getOutputStream());this.start();
} catch(IOException e) {System.out.println("Connection:"+e.getMessage());}}public void run(){ try { // an echo server
String data = in.readUTF(); out.writeUTF(data);
} catch(EOFException e) {System.out.println("EOF:"+e.getMessage()); } catch(IOException e) {System.out.println("IO:"+e.getMessage());} } finally{ try {clientSocket.close();}catch (IOException e){/*close failed*/}}}
}
30
Introduction The API for the Internet protocols External data representation and
marshalling Client-Server communication Group communication Case study: interprocess communication in
UNIX Summary
Where are we ?
31
Why does the communication data need external data representation and marshalling? [data structures must be flattened]
Different data format on different computers, e.g., big-endian/little-endian integer order, ASCII (Unix) / Unicode character coding
How to enable any two computers to exchange data values?1. The values be converted to an agreed external format
before transmission and converted to the local form on receipt
2. The values are transmitted in the sender’s format, together with an indication of the format used, and the receipt converts the value if necessary
External data representation and marshalling introduction [data structures and a sequence of bytes]
32
Why does the communication data need external data representation and marshalling?
Different data format on different computers, e.g., big-endian/little-endian integer order, ASCII (Unix) / Unicode character coding
How to enable any two computers to exchange data values?1. The values be converted to an agreed external format before
transmission and converted to the local form on receipt2. The values are transmitted in the sender’s format, together with an
indication of the format used, and the receipt converts the value if necessary
External data representation An agreed standard for the representation of data structures
and primitive values Marshalling
The process of taking a collection of data items and assembling them into a form suitable for transmission in a message
Usage: for data transmission or storing in files Three alternative approaches to EDP
CORBA’s common data representation / Java’s object serialization & XML
External data representation and marshalling introduction
Reading Assignment CORBA’s Common Data Representation (CDR) Java Object Serialization Extensible Markup language (XML)
Next Time: Recap Client-server communication
33
top related