Netprog: Client/Server Issues1 Issues in Client/Server Programming Refs: Chapter 27.

Slides:



Advertisements
Similar presentations
Computer Net Lab/Praktikum Datenverarbeitung 2 1 Overview Sockets Sockets in C Sockets in Delphi.
Advertisements

© Janice Regan, CMPT 128, CMPT 371 Data Communications and Networking Socket Programming 0.
1 Chapter 6 Datagram Delivery by UDP Just as the Internet Protocol uses the services of subnetworks, transport protocols build upon the services of IP.
Data Communications and Networking (Third Edition)
Slide 1 Client / Server Paradigm. Slide 2 Outline: Client / Server Paradigm Client / Server Model of Interaction Server Design Issues C/ S Points of Interaction.
Lecture 12 Overview. UDP Connected mode A UDP socket can be used in a call to connect() This simply tells the O.S. the address of the peer No handshake.
Lecture 17 Client/Server Programming Chat CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
Lecture 16 Overview. Creating a TCP socket int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); int mysock; struct sockaddr_in myaddr;
CS335 Networking & Network Administration Tuesday, May 25, 2010.
Generic Transport Service Primitives Listen –notify Transport layer a call is expected Connect –establish Transport layer connection Send (or Write) Receive.
Socket Programming.
1 Generic Transport Service Primitives Listen –notify Transport layer a call is expected Connect –establish Transport layer connection Send (or Write)
McGraw-Hill©The McGraw-Hill Companies, Inc., 2004 Application Layer PART VI.
Client Server Design Alternatives© Dr. Ayman Abdel-Hamid, CS4254 Spring CS4254 Computer Network Architecture and Programming Dr. Ayman A. Abdel-Hamid.
An Introduction to Internetworking. Algorithm for client-server communication with UDP (connectionless) A SERVER A CLIENT Create a server-socket (listener)and.
Client Server Model and Software Design TCP/IP allows a programmer to establish communication between two application and to pass data back and forth.
I NTRODUCTION OF S OCKET P ROGRAMMING L.Aseel AlTurki King Saud University.
Chapter 26 Client Server Interaction Communication across a computer network requires a pair of application programs to cooperate. One application on one.
Server Design Discuss Design issues for Servers Review Server Creation in Linux.
Socket Programming -What is it ? -Why bother ?. Basic Interface for programming networks at transport level It is communication end point Used for inter.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
ECE 4110 – Internetwork Programming Client-Server Model.
Hands On Networking Socket Programming Ram P Rustagi, ISE Dept Abhishek Gupta, ISE Dept Laxmi Kuber, MCA Dept June 28-30, 2012.
Assignment 3 A Client/Server Application: Chatroom.
資 管 Lee Application Layer and Client-Server Model A3.
Elementary TCP Sockets
Socket Programming. Introduction Sockets are a protocol independent method of creating a connection between processes. Sockets can be either – Connection.
1 Chapter Client-Server Interaction. 2 Functionality  Transport layer and layers below  Basic communication  Reliability  Application layer.
 Socket  The combination of an IP address and a port number. (RFC 793 original TCP specification)  The name of the Berkeley-derived application programming.
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
Server Sockets: A server socket listens on a given port Many different clients may be connecting to that port Ideally, you would like a separate file descriptor.
Operating Systems Recitation 9, May 19-20, Iterative server Handle one connection request at a time. Connection requests stored in queue associated.
ICOM 6115©Manuel Rodriguez-Martinez ICOM 6115 – Computer Networks and the WWW Manuel Rodriguez-Martinez, Ph.D. Lecture 26.
McGraw-Hill©The McGraw-Hill Companies, Inc., 2000 Chapter 16 Socket Interface
Dr. John P. Abraham Professor University of Texas Pan American Internet Applications and Network Programming.
Chapter 2 Applications and Layered Architectures Sockets.
The Socket Interface Chapter 22. Introduction This chapter reviews one example of an Application Program Interface (API) which is the interface between.
1 Server Design Discuss Design issues for Servers Review Server Creation in Windows.
Page 1 Jan 5, 1998 CMPN 369 CPSC441 Sockets Module Sockets Application Programming Interface (API)
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
Position of application layer. Application layer duties.
Introduction to Socket
CSE/EE 461 Getting Started with Networking. 2 Basic Concepts A PROCESS is an executing program somewhere. –Eg, “./a.out” A MESSAGE contains information.
Chapter 27 Socket API Interface The interface between an application program and the communication protocols in an operating system is known as the Application.
Process to process communication over network connections Includes references to Comer and Stevens Internetworking with TCP/IP vol 3 Client-server programming.
1 Client-Server Interaction. 2 Functionality Transport layer and layers below –Basic communication –Reliability Application layer –Abstractions Files.
Client/Server Socket Programming Project
Part 4: Network Applications Client-server interaction, example applications.
©The McGraw-Hill Companies, Inc., 2000© Adapted for use at JMU by Mohamed Aboutabl, 2003Mohamed Aboutabl1 1 Chapter 15 Application Layer and Client-Server.
Socket Programming.
Berkeley Socket Abstraction
Socket Programming. Computer Science, FSU2 Interprocess Communication Within a single system – Pipes, FIFOs – Message Queues – Semaphores, Shared Memory.
UNIX Sockets Outline UNIX sockets CS 640.
©The McGraw-Hill Companies, Inc., 2000© Adapted for use at JMU by Mohamed Aboutabl, 2003Mohamed Aboutabl1 1 Chapter 16 Socket Interface.
4343 X2 – The Transport Layer Tanenbaum Ch.6.
1 Dimension of Server Designs r Iterative vs Concurrent r Connection-oriented vs. connectionless r Stateful and stateless m Constrained by application.
Lecture 15 Socket Programming CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
1 Network Communications A Brief Introduction. 2 Network Communications.
Client/Server Design Issues Based on Java Network Programming and Distributed Computing, Chapter 6 Also Online Java Tutorial, Sun.
1 K. Salah Application Layer Module K. Salah Network layer duties.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
1 Issues in Client/Server Refs: Chapter 27 Case Studies RFCs.
Boots Cassel Villanova University
Client-Server Interaction
Interacting With Protocol Software
UNIX Sockets Outline Homework #1 posted by end of day
Lecture 4 Socket Programming Issues
Issues in Client/Server Programming
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
Presentation transcript:

Netprog: Client/Server Issues1 Issues in Client/Server Programming Refs: Chapter 27

Netprog: Client/Server Issues2 Issues in Client Programming Identifying the Server. Looking up a IP address. Looking up a well known port name. Specifying a local IP address. UDP client design. TCP client design.

Netprog: Client/Server Issues3 Identifying the Server Options: –hard-coded into the client program. –require that the user identify the server. –read from a configuration file. –use a separate protocol/network service to lookup the identity of the server.

Netprog: Client/Server Issues4 Identifying a TCP/IP server. Need an IP address, protocol and port. –We often use host names instead of IP addresses. –usually the protocol (UDP vs. TCP) is not specified by the user. –often the port is not specified by the user. Can you name one common exception ?

Netprog: Client/Server Issues5 Services and Ports Many services are available via “well known” addresses (names). There is a mapping of service names to port numbers: struct *servent getservbyname( char *service, char *protocol ); servent->s_port is the port number in network byte order.

Netprog: Client/Server Issues6 Specifying a Local Address When a client creates and binds a socket it must specify a local port and IP address. Typically a client doesn’t care what port it is on: haddr->port = htons(0); give me any available port !

Netprog: Client/Server Issues7 Local IP address A client can also ask the operating system to take care of specifying the local IP address: haddr->sin_addr.s_addr= htonl(INADDR_ANY); Give me the appropriate address

Netprog: Client/Server Issues8 UDP Client Design Establish server address (IP and port). Allocate a socket. Specify that any valid local port and IP address can be used. Communicate with server (send, recv) Close the socket.

Netprog: Client/Server Issues9 Connected mode UDP A UDP client can call connect() to establish the address of the server. The UDP client can then use read() and write() or send() and recv(). A UDP client using a connected mode socket can only talk to one server (using the connected-mode socket).

Netprog: Client/Server Issues10 TCP Client Design Establish server address (IP and port). Allocate a socket. Specify that any valid local port and IP address can be used. Call connect() Communicate with server (read,write). Close the connection.

Netprog: Client/Server Issues11 Closing a TCP socket Many TCP based application protocols support multiple requests and/or variable length requests over a single TCP connection. How does the server known when the client is done (and it is OK to close the socket) ?

Netprog: Client/Server Issues12 Partial Close One solution is for the client to shut down only it’s writing end of the socket. The shutdown() system call provides this function. shutdown( int s, int direction); –direction can be 0 to close the reading end or 1 to close the writing end. –shutdown sends info to the other process!

Netprog: Client/Server Issues13 TCP sockets programming Common problem areas: –null termination of strings. –reads don’t correspond to writes. –synchronization (including close()). –ambiguous protocol.

Netprog: Client/Server Issues14 TCP Reads Each call to read() on a TCP socket returns any available data (up to a maximum). TCP buffers data at both ends of the connection. You must be prepared to accept data 1 byte at a time from a TCP socket!

Netprog: Client/Server Issues15 Server Design Iterative Connectionless Iterative Connectionless Iterative Connection-Oriented Iterative Connection-Oriented Concurrent Connection-Oriented Concurrent Connection-Oriented Concurrent Connectionless Concurrent Connectionless

Netprog: Client/Server Issues16 Concurrent vs. Iterative Iterative Small, fixed size requests Easy to program Iterative Small, fixed size requests Easy to program Concurrent Large or variable size requests Harder to program Typically uses more system resources Concurrent Large or variable size requests Harder to program Typically uses more system resources

Netprog: Client/Server Issues17 Connectionless vs. Connection-Oriented Connection-Oriented EASY TO PROGRAM transport protocol handles the tough stuff. requires separate socket for each connection. Connection-Oriented EASY TO PROGRAM transport protocol handles the tough stuff. requires separate socket for each connection. Connectionless less overhead no limitation on number of clients Connectionless less overhead no limitation on number of clients

Netprog: Client/Server Issues18 Statelessness State: Information that a server maintains about the status of ongoing client interactions. Connectionless servers that keep state information must be designed carefully! Messages can be duplicated!

Netprog: Client/Server Issues19 The Dangers of Statefullness Clients can go down at any time. Client hosts can reboot many times. The network can lose messages. The network can duplicate messages.

Netprog: Client/Server Issues20 Concurrent Server Design Alternatives One child per client Spawn one thread per client Preforking multiple processes Prethreaded Server

Netprog: Client/Server Issues21 One child per client Traditional Unix server: –TCP: after call to accept(), call fork(). –UDP: after recvfrom(), call fork(). –Each process needs only a few sockets. –Small requests can be serviced in a small amount of time. Parent process needs to clean up after children!!!! (call wait() ).

Netprog: Client/Server Issues22 One thread per client Almost like using fork - call pthread_create instead. Using threads makes it easier (less overhead) to have sibling processes share information. Sharing information must be done carefully (use pthread_mutex)

Netprog: Client/Server Issues23 Pre fork() ’d Server Creating a new process for each client is expensive. We can create a bunch of processes, each of which can take care of a client. Each child process is an iterative server.

Netprog: Client/Server Issues24 Pre fork() ’d TCP Server Initial process creates socket and binds to well known address. Process now calls fork() a bunch of times. All children call accept(). The next incoming connection will be handed to one child.

Netprog: Client/Server Issues25 Preforking As the book shows, having too many preforked children can be bad. Using dynamic process allocation instead of a hard-coded number of children can avoid problems. The parent process just manages the children, doesn’t worry about clients.

Netprog: Client/Server Issues26 Sockets library vs. system call A preforked TCP server won’t usually work the way we want if sockets is not part of the kernel: –calling accept() is a library call, not an atomic operation. We can get around this by making sure only one child calls accept() at a time using some locking scheme.

Netprog: Client/Server Issues27 Prethreaded Server Same benefits as preforking. Can also have the main thread do all the calls to accept() and hand off each client to an existing thread.

Netprog: Client/Server Issues28 What’s the best server design for my application? Many factors: –expected number of simultaneous clients. –Transaction size (time to compute or lookup the answer) –Variability in transaction size. –Available system resources (perhaps what resources can be required in order to run the service).

Netprog: Client/Server Issues29 Server Design It is important to understand the issues and options. Knowledge of queuing theory can be a big help. You might need to test a few alternatives to determine the best design.