230 likes | 397 Views
Computer Networks . Boots Cassel Villanova University. Client - Server Computing. Direction of initiation determines which side is which Client initiates Server responds Same system may be client and server. Parameterization of clients . Parameter specifies machine where server resides
E N D
Computer Networks Boots Cassel Villanova University
Client - Server Computing • Direction of initiation determines which side is which • Client initiates • Server responds • Same system may be client and server
Parameterization of clients • Parameter specifies machine where server resides • Optional parameter specifies the port where the server listens • Include the port number parameter in defining clients • Especially useful for testing new versions
Addressing • Specify the machine • name gets converted to IP address • Specify the port number • Which running process to connect to.
How do you know • Which machine • you have to know the name or the IP address of the partner • Names get converted by a Domain Name Service • Which port • Common services have assigned port numbers • telnet = 23, http = 80, etc.
Domain Name Service • Structure of Internet Names • gadget.netlab.csc.villanova.edu • Lookup in order from right to left • netlab and csc are both entries in the villanova DNS, so that lookup can go directly from villanova to netlab without using the csc DNS • That is always an option in configuring the servers
DNS - Christie’s table • ; Addresses for the canonical names • ; • localhost.netlab.csc.villanova.edu. IN A 127.0.0.1 • christie.netlab.csc.villanova.edu. IN A 153.104.203.200 • doyle.netlab.csc.villanova.edu. IN A 153.104.203.210 • gadget.netlab.csc.villanova.edu. IN A 153.104.203.42 • missmarple.netlab.csc.villanova.edu. IN A 153.104.203.7 • lordpeter.netlab.csc.villanova.edu. IN A 153.104.203.41 • poirot.netlab.csc.villanova.edu. IN A 153.104.203.148 • koko.netlab.csc.villanova.edu. IN A 153.104.203.45 • sherlock.netlab.csc.villanova.edu. IN A 153.104.203.44 • cadfael.netlab.csc.villanova.edu. IN A 153.104.203.43 • columbo.netlab.csc.villanova.edu. IN A 153.104.203.46 • weber.netlab.csc.villanova.edu. IN A 153.104.203.205 • matlock.netlab.csc.villanova.edu. IN A 153.104.203.203 • samspade.netlab.csc.villanova.edu. IN A 153.104.203.204 • poe.netlab.csc.villanova.edu. IN A 153.104.203.50
Port number usage • Some implementations do not allow the user to specify a port number • uses the protocol’s reserved number only • Allowing a port number to be specified makes it easier to test the implementation • allow the “real” version to run while testing a different version
Server • Usually runs in privileged condition • needs to access protected resources • be careful about what access it gives to clients • Responsibilities • Authenticate client identity • Enforce authorization restrictions • Data protection: security and privacy • Protection: system resources from abuse
Connectionless vs Connection-oriented • Directly related to the choice of transport protocol • UDP: connectionless • TCP: connection-oriented • Can build connection-oriented client/server application over a connectionless transport layer • Silly to do the converse
Server state • Stateless server • no memory of past interaction • each request must be fully qualified • Stateful server • records state information • reduces needed content in subsequent messages • depends on reliable network communication • vulnerable to system failures, reboots
Idempotent operations • An operation that always yields the same result, regardless of repetition or missing prior steps • READ or WRITE, without automatic increment of pointer • not idempotent - increment, add amount to total, etc.
Concurrent processes • Multiprogramming • Apparent simultaneous execution • Multiprocessing • Real simultaneous execution
Server Concurrency • Need to serve requests from multiple clients • Process • Fundamental unit of computation • Address space plus at least one thread of execution • instruction pointer tells where in the process the thread is currently executing
Threads • Similar to a process except • a thread is owned by a process • a thread may share common resources belonging to a process • A thread has a private copy of local variables
Concurrent processes • In a uniprocessor system • Each process gets a slice of the CPU time in turn • All appear to run at the same time • If each process has only one thread of execution, that process shares the CPU with other processes on a time sharing plan • If a process has more than one thread, the CPU time is divided among the threads. • OS varies: divide time among all threads or divide among processes and multiple threads share the time allotted to their parent process • In a multiprocessor system, each process or thread may be allocated a separate CPU
Threads in servers • A process may respond to client requests by spawning a separate thread for each client • Clients appear to be served simultaneously but actually receive intermingled slices of the CPU time.
Unix concurrency • Different operating systems handle concurrency in idfferent ways • unix: fork() creates an exact copy of the calling process and continues execution from exactly the same place in the code. • Copy includes the stack showing function calls, local and global variables • Original and forked process continue from the same point in execution • One distinction: fork returns a value: new process returns 0, original returns non zero value
Unix concurrency example Sum = 0; pid = fork(); if (pid != 0 ) { /* original */ printf (“The original process\n”); }else { /* the new process */ printf (“The new process\n”);
Concurrency in Windows • _beginthread • parameter specifies what is to be executed • Not necessarily executing the same code as the calling process
Sockets • A de facto standard interface to TCP/IP protocols • Defined in BSD unix • Adapted by other operating systems
Initiating concurrent subprocesses • Windows: • _beginthread • parameter specifies what to execute as thread • unix • fork • new process is a copy of the initiating process • pid identifies each