80 likes | 99 Views
High Level Socket API. Dr. Sanjay P. Ahuja, Ph.D. 2010-14 FIS Distinguished Professor of Computer Science School of Computing, UNF. The Client-Server Model. An application that initiates communication is a client .
E N D
High Level Socket API Dr. Sanjay P. Ahuja, Ph.D. 2010-14 FIS Distinguished Professor of Computer Science School of Computing, UNF
The Client-Server Model • An application that initiates communication is a client. • A server is any program that waits for incoming communication requests from a client. • Standard client programs included with TCP/IP software include telnet client, SSH client, email client, ftp client etc. The client-server model involves requests and replies.
Types of Servers: Connectionless vs. Connection-Oriented servers • If client and server communicate using User Datagram Protocol (UDP), the interaction is connectionless. If they use Transmission Control Protocol (TCP), the interaction is connection-oriented. • TCP provides the reliability needed to communicate across the Internet. • It retransmits segments that do not arrive correctly at the destination • It uses checksum to ensure data received is not corrupted during transmission • It uses sequence numbers to ensure data arrives in orderetc. • UDP provides “best-effort” service and does not guarantee reliable delivery. • It is suited to real-time, audio/video streaming traffic.
Types of Servers: Iterative vs. Concurrent servers • An iterative server will service one client request before moving onto the next request. In this scenario, queues can build up. • A concurrent server will spawn a new (child) process (or thread) to service a client request and itself listen for the next client connection. This generally provides quicker response time. • Server software must be explicitly programmed to handle concurrent client requests because multiple clients contact a server using its single, well-known protocol port. • The fork() function call is used to create a new process in UNIX/Linux. This call causes the O/S to make a copy of the executing program and allows both copies to run at the same time. The call returns a finite value (process ID# of child process) to the calling (parent) process and a value of 0 to the child process.
The Socket API • TCP/IP software reside in the O/S. So application programs need to interact with the O/S to use TCP/IP to communicate. The routines provided by the O/S defines the API. • The Socket Interface from UC Berkeley is such an interface for the BSD UNIX O/S for application programs to interact with the TCP/IP software residing in the O/S. • A socket is one end-point of a two-way communication link between two programs running on the network. • TCP/IP protocols define a communication endpoint to consist of an IP address and a protocol port number.
Outline for typical concurrent servers int pid,s, conn; S = Socket( .. ); // fill in server address Bind(s, ..); Listen(s, LISTNQ); while(1){ conn = Accept(s, ..); //blocking call if( (pid = fork()) ==0) { close (s); //child closes listening socket doit( conn); //service request close(conn); exit(0); //child exits } // end of if close(conn); //parent closes connected socket }// end of while loop