High Level Socket API Dr. Sanjay P. Ahuja, Ph.D.

advertisement
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 order etc.

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.
Types of Servers: Iterative vs.
Concurrent servers
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
Download