Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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