1 Lecture 4: Interprocess Communication Haibin Zhu, PhD. Assistant Professor Department of Computer Science Nipissing University © 2002.

Slides:



Advertisements
Similar presentations
Heterogeneity Applies to all of the following:
Advertisements

INTERPROCESS COMMUNICATION
INTERPROCESS COMMUNICATION
Inter Process Commonication
1 Chapter 4: Interprocess Communication From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001.
2: Application Layer 1 Socket programming Socket API r introduced in BSD4.1 UNIX, 1981 r explicitly created, used, released by apps r client/server paradigm.
Socket Programming.
Internetworking (Contd) Chapter 4. Figure 3.26 ATM protocol layers.
1 Overview r Socket programming with TCP r Socket programming with UDP r Building a Web server.
OCT Information System Management 1 Organizational Communications and Distributed Object Technologies Week 5: Inter-process Communications.
CSS434 IPC1 CSS434 Interprocess Communication Textbook Ch4 Professor: Munehiro Fukuda.
CS Distributed Computing Systems Chapter 4: Interprocess Communication Chin-Chih Chang, From Coulouris, Dollimore and Kindberg.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
2: Application Layer1 Socket Programming. 2: Application Layer2 Socket-programming using TCP Socket: a door between application process and end- end-transport.
OCT -- OCT Chapter 4 Coulouris Interprocess Communication.
1 Network Layers Application Transport Network Data-Link Physical bits.
Slides for Chapter 4: Interprocess Communication From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley.
1 Inter-Process Communication: Network Programming using TCP Java Sockets Rajkumar Buyya Grid Computing and Distributed Systems (GRIDS) Laboratory Dept.
Babak Esfandiari (based on slides by Qusay Mahmoud)
Socket programming 1. getByName import java.net.*; public class GetHostName { public static void main (String args[]) { String host = "
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.
2: Application Layer1 Chapter 2: Application layer r 2.1 Principles of network applications r 2.2 Web and HTTP r 2.3 FTP r 2.4 Electronic Mail  SMTP,
2: Application Layer1 Socket programming Socket API r introduced in BSD4.1 UNIX, 1981 r explicitly created, used, released by apps r client/server paradigm.
9/12/2015B.R1 Socket Abstraction and Interprocess Communication B.Ramamurthy CSE421.
1 Tuesday, December 23, 2008 If one ox could not do the job they did not try to grow a bigger ox, but used two oxen. - Grace Murray Hopper ( )
Chapters 4 & 5 Interprocess Communication
-1- Georgia State UniversitySensorweb Research Laboratory CSC4220/6220 Computer Networks Dr. WenZhan Song Associate Professor, Computer Science.
Slides for Chapter 4: Interprocess Communication
Chapter 4: Interprocess Communication‏ Pages
Distributed Systems Concepts and Design Chapter 4.
Slides for Chapter 4: Interprocess Communication From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley.
Slides for Chapter 4: Interprocess Communication
Slides for Chapter 4: Interprocess Communication From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley.
Chapter 3: Interprocess Communication
Source: George Colouris, Jean Dollimore, Tim Kinderberg & Gordon Blair (2012). Distributed Systems: Concepts & Design (5 th Ed.). Essex: Addison-Wesley.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved Interprocess.
Chapter 2 Applications and Layered Architectures Sockets.
Remote Shell CS230 Project #4 Assigned : Due date :
From Coulouris, Dollimore, Kindberg and Blair Distributed Systems: Concepts and Design Edition 5, © Addison-Wesley 2012 Slides for Chapter 4: Interprocess.
1 Distribuerede systemer – 12. februar 2001 Presentation based on slides by Coulouris et al, modified by Jens B Jorgensen.
Slides for Chapter 4: Interprocess Communication From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley.
2: Application Layer1 Socket programming Socket API Explicitly created, used, released by apps Client/server paradigm Two types of transport service via.
Chapter 4: Inter-process Communications
Socket Programming Lab 1 1CS Computer Networks.
Part 4: Network Applications Client-server interaction, example applications.
1 Socket programming Socket API r introduced in BSD4.1 UNIX, 1981 r explicitly created, used, released by apps r client/server paradigm r two types of.
Java Programming II Java Network (I) Java Programming II.
1 CSCD 330 Network Programming Fall 2013 Some Material in these slides from J.F Kurose and K.W. Ross All material copyright Lecture 8a Application.
Distributed Systems Information System Management Distributed Systems Lecture 8 Chapter 4: Inter-process Communications.
Data Communications and Computer Networks Chapter 2 CS 3830 Lecture 11 Omar Meqdadi Department of Computer Science and Software Engineering University.
Slides for Chapter 4: Interprocess Communication From Coulouris, Dollimore, Kindberg Distributed Systems: Concepts and Design Edition 5, © Addison-Wesley.
Network Programming Communication between processes Many approaches:
03 – Remote invoaction Request-reply RPC RMI Coulouris 5
CS 1652 Jack Lange University of Pittsburgh
Unicast VS Multicast.
Text extensions to slides © David E. Bakken,
Slides for Chapter 4: Interprocess Communication
Networking and Communications
Outline Introduction Networking Basics Understanding Ports and Sockets
سوکت (ارتباط بین کاربردها)
Text extensions to slides © David E. Bakken,
Distributed Objects: Communication and System Support
Inter-process Communication Models
Distributed Objects: Communication and System Support
Slides for Chapter 4: Interprocess Communication
Socket Programming 2: Application Layer.
Remote invocation (call)
CPSC 441 UDP Socket Programming
Socket Programming with UDP
Review Communication via paired sockets, one local and one remote
Presentation transcript:

1 Lecture 4: Interprocess Communication Haibin Zhu, PhD. Assistant Professor Department of Computer Science Nipissing University © 2002

2 Figure 4.1 Middleware layers

3 Message Passing z The primitives: ysend expression_list to destination_identifier; yreceive variable_list from source_identifier; z Variations: yguarded receive: xreceive variable_list from source_id when B; yselective receive: xselect receive var_list from source_id1; |receive var_list from source_id2; |receive var_list from source_id3; xend

4 Sockets and ports message agreed port any port socket Internet address = Internet address = other ports client server Socket is a communication mechanism that contains two endpoints. Each point belongs to one of the processes involved.

5 Semantics of Message-Passing Primitives z blocking vs. non-blocking z buffered vs. unbuffered z reliablevs. unreliable z fixed-size vs. variable-size messages z direct vs. indirect communication

6 Blocking vs. Non-Blocking Primitives Message being sent Client blocked Trap to kernel, process blocked Client running Return from kernel, Process released Client running Trap Return Message copied to kernel buffer Message being sent Client blocked Blocking Non-Blocking

7 Blocking vs. Non-Blocking Primitives blockingnon-blocking send Returns control to user only after message has been sent, or until acknowledgment has been received. Returns control as soon as message queued or copied. receive Returns only after message has been received. Signals willingness to receive message. Buffer is ready. problems Reduces concurrency.Need buffering: still blocking deadlocks! Tricky to program.

8 Buffered vs. Unbuffered Primitives Clien t Server A kernel Address refers to a process Clien t Server A kernel Address refers to a mailbox

9

10

11

12

13

14 UDP client 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();} }

15 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();} }

16 TCP client 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 Universal Transfer Format 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());}} }

17 TCP server 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

18 TCP server (continued) 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*/} }

19 External Data Representation and Marshalling zExternal Data Representation: yAn agreed standard for the representation of data structures and primitive values. zMarshalling: the process of taking a collection of data items and assembling them into a form suitable for transmission.

20 CORBA CDR(Common Data Representation) for constructed types 15 primitive types: short, long, unsigned short, …

21 CORBA CDR message The flattened form represents aPerson struct with value: {‘Smith’, ‘London’, 1934} 0–3 4–7 8–11 12–15 16– –27 5 "Smit" "h___" 6 "Lond" "on__" 1934 index in sequence of bytes4 bytes notes on representation length of string ‘Smith’ length of string ‘London’ unsigned long Padded with 0s

22 Indication of Java serialized form The true serialized form contains additional type markers; h0 and h1 are handles Serialized values Person byte version number int year 5 Smith java.lang.String name: 6 London h0 java.lang.String place: h1 Explanation class name, version number number, type and name of instance variables values of instance variables Person p = new Person(”Smith”, “London”, 1934);

23 Representation of a remote object reference Internet addressport numbertimeobject number interface of remote object 32 bits An identifier for a remote object that is valid throughout a distributed system

24 C/S communication: The request-reply protocol Request ServerClient doOperation (wait) (continuation) Reply message getRequest execute method message select object sendReply

25 Operations of the request-reply protocol public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments) sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method. public byte[] getRequest (); acquires a client request via the server port. public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet address and port.

26 Request-reply message structure messageType requestId objectReference methodId arguments int (0=Request, 1= Reply) int RemoteObjectRef int or Method array of bytes

27 RPC exchange protocols Name Messagessent by Client ServerClient R Request RR Request Reply RRA Request Reply Acknowledge reply

28 HTTP messages GET// 1.1 URL or pathnamemethodHTTP versionheadersmessage body HTTP/1.1200OK resource data HTTP versionstatus codereasonheadersmessage body Connection (port) Send a request Send a reply Close connection Get Head Post Put Delete Options Trace Page 152

29 Group Communication zMulticast Messages: yFault Tolerance based on replicated services yFinding the discovery servers in spontaneous networking: yBetter performance through replicated data: yPropagation of event notifications

30 IP Multicast (Class D) zIPv4: yMulticast routers yMulticast address allocation zJava Multicast: yMulticastsocket yjoinGroup() yleaveGroup() zReliability: yOmission Failure yOrdering

31 Multicast peer joins a group and sends and receives datagrams import java.net.*; import java.io.*; public class MulticastPeer{ public static void main(String args[]){ // args give message contents & destination multicast group (e.g. " ") MulticastSocket s =null; try { InetAddress group = InetAddress.getByName(args[1]); s = new MulticastSocket(6789); s.joinGroup(group); byte [] m = args[0].getBytes(); DatagramPacket messageOut = new DatagramPacket(m, m.length, group, 6789); s.send(messageOut); // this figure continued on the next slide

32 Figure 4.17 continued // get messages from others in group byte[] buffer = new byte[1000]; for(int i=0; i< 3; i++) { DatagramPacket messageIn = new DatagramPacket(buffer, buffer.length); s.receive(messageIn); System.out.println("Received:" + new String(messageIn.getData())); } s.leaveGroup(group); } catch (SocketException e){System.out.println("Socket: " + e.getMessage());} catch (IOException e){System.out.println("IO: " + e.getMessage());} finally {if(s != null) s.close();} }

33 UNIX Sockets #include int socket (int domain, int type; int protocal); int bind (int s, const struct sockaddr * address, size_t address_len); int listen (int s, int backlog_size); int accept (int s, struct sockaddr * address, size_t address_len); struct hostent *gethostbyaddr(const void *addr, size_t len, int type); int send (int s, const char* buf, int len, int flag); int recv (int s, const char* buf, int len, int flag); int close(int s);

34 Sockets used for datagrams ServerAddress and ClientAddress are socket addresses Sending a messageReceiving a message bind(s, ClientAddress) sendto(s, "message", ServerAddress) bind(s, ServerAddress) amount = recvfrom(s, buffer, from) s = socket(AF_INET, SOCK_DGRAM, 0)

35 Sockets used for streams Requesting a connectionListening and accepting a connection bind(s, ServerAddress); listen(s,5); sNew = accept(s, ClientAddress); n = read(sNew, buffer, amount) s = socket(AF_INET, SOCK_STREAM,0) connect(s, ServerAddress) write(s, "message", length) s = socket(AF_INET, SOCK_STREAM,0) ServerAddress and ClientAddress are socket addresses

36 Summary zMessages yDifferent primitives zCommunication yUDP Datagram yTCP Stream zEDR and Marshalling zRequest-reply-protocol zGroup Communication zUNIX Socket