17
Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 4.1 Operating System Concepts Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Embed Size (px)

DESCRIPTION

Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6. Recall IPC. Interprocess communication (IPC) accomplished by message passing. Direct Communication: Processes identify each other by name. Indirect communication: Processes use a mailbox or a port. - PowerPoint PPT Presentation

Citation preview

Page 1: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.1Operating System Concepts

Operating Systems

Lecture 12Communicating over a Network

Read Ch 4.6

Page 2: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.2Operating System Concepts

Recall IPC

Interprocess communication (IPC) accomplished by message passing.

Direct Communication: Processes identify each other by name.

Indirect communication: Processes use a mailbox or a port.

Page 3: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.3Operating System Concepts

Communication over a network

Communication between processes over a network is accomplished with sockets.

A socket is defined as an endpoint for communication.

Communication consists between a pair of sockets.

A socket is the concatenation of IP address and port number.

The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8

Page 4: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.4Operating System Concepts

Client-Server Architecture

The server "listens" to a specified port for incoming client requests.

When a request is received, the server accepts the connection from the client socket.

"Well known" port numbers: telnet: 23 ftp: 21 http: 80

All ports numbers below 1024 are considered well known. They are used for standard services.

Page 5: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.5Operating System Concepts

Example

Suppose there is a client process on host machine, X, with IP address, 146.86.5.20

The client contacts a web server at IP address, 161.25.19.8.Question: What is the port number for the server?

Host, X, assigns the client a port, e.g. 1625.

Result: Connection between 2 sockets:Client on host X Web Server:146.86.5.20:1625 Q: What is this socket?

Packets of information travel between the hosts and are delivered to the appropriate process by way of the port.

Page 6: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.6Operating System Concepts

Socket Communication

Page 7: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.7Operating System Concepts

Implementation in Java

Java provides a Socket class for establishing communication. (This makes is easier to implement than in C/C++)

Example: Implementation of a time-of-day serverClients request the time of day from the server The server listens to port 5155 (could choose

any port number above 1024).

Page 8: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.8Operating System Concepts

Server Side Applicationpublic class Server { public static void main( String [ ] args) { Socket client = null; //will hold socket for client PrintWriter pout = null; //allows easy communication ServerSocket sock = null; //Holds server socket

. . . sock = new ServerSocket(5155); //Port for server socket while (true) { //Listen for requests client = sock.accept( ); //Waits for client to contact (blocked) //accept( ) returns socket from client //PrintWriter allows easy communication through socket pout = new PrintWriter(client.getOutputStream( ), true); pout.println(new java.util.Date().toString()); //write time of day to //client pout.close(); client.close(); ... }}

Page 9: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.9Operating System Concepts

Client Side Application

public class Client { public static void main(String[ ] args) { InputStream in = null; //for input stream from socket BufferedReader bin = null; //for reading in from socket Socket sock = null; //socket for contact with server ... sock = new Socket("127.0.0.1", 5155); //server socket

in = sock.getInputStream( ); //Set up for reading bin = new BufferedReader(new inputStreamReader(in));

String line; // Holds input line while ((line = bin.readln( )) != null) //read to end System.out.println(line); //print out line ... }}//(Note: IP address 127.0.0.1 indicates the local host)

Page 10: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.10Operating System Concepts

Remote Procedure Calls

Remote procedure call (RPC) abstracts procedure calls between processes on networked systems.

Messages are well structured (not just data packets). Addressed to RPC daemon listening to a port on the

remote system. Contain identifier of function to be executed. Contain parameters to pass to that function.

The port is identified by a number at the start of the message packet. A system has one network address, but may have many

ports. To request a specific service, must address message to the

proper port.

Page 11: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.11Operating System Concepts

Invoking an RPC

Invoking a procedure on a remote host is the same as invoking one locally (The details are hidden).

Stubs – client-side proxy for the actual procedure on the server. Procedure for executing a remote procedure call:

The client invokes the remote procedure The RPC system calls the stub, passing it the parameters provided

in the procedure call. The client-side stub locates the port on the server. The stub marshalls the parameters. (Packages them into a form

that can be sent over the network). The stub transmits a message to the server using message passing. The server-side stub receives this message, unpacks the marshalled

parameters, and performs the procedure on the server. If necessary, return values are passed back to the client.

Page 12: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.12Operating System Concepts

Which Port to Use?

With ordinary procedure calls there is a binding between the name of the procedure and the address of the procedure.

With an RPC, there is binding between the client and server ports.

How does the client know which port to use? Predetermined binding: RPC has fixed port address. Dynamic binding: O.S. provides a matchmaker daemon

(rendezvous daemon) on a fixed RPC port. The client sends a message to the matchmaker and

requests the port address of the RPC. The matchmaker returns the port number. The RPC call is sent to that port.

Page 13: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.13Operating System Concepts

Execution of RPC

Page 14: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.14Operating System Concepts

Remote Method Invocation

Remote Method Invocation (RMI) is a Java mechanism similar to RPCs.

RMI allows a Java program on one machine to invoke a method on a remote object.

RMI works between Java Virtual Machines. Could be two JVM's on the same machine or on different machines.

Page 15: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.15Operating System Concepts

RPC vs. RMI

Difference between an RPC and an RMI:

RPC

Procedural:Only allows proceduresor functions to be called.

Parameters: Ordinarydata structures

RMI

Object Based:Can invoke a method on a remote object.

Parameters: Can pass objects as parameters.

Allows for distributed Java applications

Page 16: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.16Operating System Concepts

Process for RMI

1. A stub on the client machine is invoked.2. The stub sends a parcel with the name of the method

and the marshalled parameters.3. A skeleton on the server unmarshall's the parameters

and invokes the method.4. The skeleton marshall's the return value into a parcel

and returns it to the client.5. The stub on the client unmarshall's the return value

and passes it to the client.

Page 17: Operating Systems Lecture 12 Communicating over a Network Read Ch 4.6

Silberschatz, Galvin and Gagne 2002Modified for CSCI 399, Royden, 20054.17Operating System Concepts

Marshalling Parameters

Example: Client invokes someMethod(A, B) on a Server object. The method returns a boolean object.