NUST_BSIT8_DC_Lecture_4
Download
Report
Transcript NUST_BSIT8_DC_Lecture_4
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
1
Distributed Computing
Class: BSIT-8
Instructor: Raihan Ur Rasool
Chapter 04:
Inter-process Communication
Chapter 3 – SELF STUDY
Networking issues for distributed systems
Types of network
Network Principles
Internet protocols
Case Studies
3
Protocol layers
Internetworking
Routing
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.
Chapter 4: Interprocess 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
Introduction
Middleware layer
TCP ( UDP) from a programmers point of view
Java interface, UNIX Socket
marshalling and demarshalling
6
data form translation
Client-Server communication
TCP : two way stream
UDP : datagram, message passing
Request-Reply protocols
Java RMI, RPC
Group communication
Middleware layer (1)
Applic ations, services
RMI and RPC
This
c hapter
reques t-reply protocol
marshalling and ex ternal data representation
UDP and TCP
7
Middlew are
lay ers
Middleware layer (2)
2-5
8
An adapted reference model for networked communication.
Middleware layer (3)
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
9
remote procedure calls (RPC)
remote method invocation (RMI)
Middleware (4)
General structure of a distributed system as middleware.
1-22
10
Middleware programming models
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
11
remote event notification
remote SQL access
distributed transaction processing
Where are we ?
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
The characteristics of inter-process communication (1)
Producer—Consumer and wait
Send and receive
Synchronous and asynchronous
a queue associated with message destination, Sending process
add message to remote queue
Synchronous:
Receiving process remove message from local queue
send and receive are blocking operations
Asynchronous:
send is nonblocking,
receive could be blocking or nonblocking
Java supports multiple threads in a single process
13
(receive notification by interrupt)
Non-blocking communication appears to be more efficient, but it involves
extra complexity in the receiving process: flow control
The characteristics of interprocess communication (2)
Message destinations:
Reliability
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
validity: messages are guaranteed to be delivered despite a
reasonable number of packets being dropped or lost
Integrity: messages arrive uncorrupted and without duplication
Ordering
the messages be delivered in sender order
14
The order in which they were transmitted by the sender.
The delivery out of sender’s order is regarded as failure
Socket
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
any port
agreed port
socket
message
client
server
other ports
Internet address = 138.37.94.248
15
Internet address = 138.37.88.249
Sockets
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 stream
App 1
App 2
App 3
socket
socket
socket
UDP
TCP
More on Sockets:
http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html
16
IP
UDP datagram communication
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
17
UDP datagram communication
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
18
UDP datagram do not suffer from overheads associated
with guaranteed message delivery
Java API for UDP datagrams
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
19
Datagram Sockets
Creating a datagram socket
Creating a datagram packect
DatagramSocket soc = new DatagramSocket(port-no.)
DatagramPacket p = new DatagramPacket(byte[] data, int len,
InetAddress dest, int dest-port);
IP header:
Sending a packet
soc.send( p )
Receiving a packet
q = new DatagramPacket(buff, len);
soc.receive( q );
source-ip-address
destination-ip-address
protocol = 17 (udp)
UDP header:
source port-no
destination port-no
Application
Data
20
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 hostname
DatagramSocket 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();}
}
}
21
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();}
}
}
22
TCP stream communication (1)
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
23
Client Connect request, Server Accept request, becomes Peers
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 (2)
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
24
TCP byte stream sockets
Server socket – waits for connections
Client socket – connects to server
soc = new ServerSocket( port-no );
Socket newsoc = soc.accept( );
client = new Socket(server-addr, server-port);
When connected, get streams
InputStream in = client.getInputStream( );
OutputStream out = client.getOutputStream( )
Server side
Client Side
client
socket
25
1. Contact server
3. Establish stream
communication
Server
socket
New
socket
2. Create new
Stream socket
Java API for TCP Streams
ServerSocket
accept: listen for connect requests from clients
Socket
constructor
26
not only create a socket associated with a local port, but also connect it
to the specified remote computer and port number
getInputStream
getOutputStream
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 destination
Socket 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.3
String 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());}}
}
27
}
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);
}
} catch(IOException e) {System.out.println("Listen :"+e.getMessage());}
}
}
// this figure continues on the next slide
28
TCP Server (2)
class Connection 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*/}}
}
}
29
Where are we ?
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
External data representation and marshalling
introduction
[data structures and a sequence of bytes]
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
31
External data representation and marshalling
introduction
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 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
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
32
CORBA’s common data representation / Java’s object serialization & XML
Reading Assignment
CORBA’s Common Data Representation (CDR)
Java Object Serialization
Extensible Markup language (XML)
Next Time:
Recap
Client-server communication
33