FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Computer Networks & PROTOCOLS (CSI 4118) FALL 2005 Professor Robert L. Probert
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA2 Part I Introduction
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA3 Topic and Scope Computer networks and internets: an overview of concepts, terminology, and technologies that form the basis for digital communication in private corporate networks and the global Internet.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA4 You Will Learn Internets and Internetworking Motivation and concept Internet Protocol (IP) datagram format and addressing Internet routers and routing Address binding (ARP) Internet control messages (ICMP) User Datagram Protocol (UDP) Transmission Control Protocol (TCP) Protocol ports and demultiplexing
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA5 You Will Learn (continued) Some network applications! Client-server paradigm Domain name system (DNS) File transfer (FTP) Remote login (TELNET) transfer (SMTP) Web technologies and protocols HTTP, PHP, CGI, Java Security Voice over IP, …
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA6 Background Required Ability to program in Java, ability to read C code Knowledge of low-level programming constructs Pointers Bit fields in structures Familiarity with basic tools Text editor Compiler / linker / loader
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA7 Background Required (continued) Basic knowledge of operating systems Terminology Functionality Processes and concurrent processing CSI 3103/3503
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA8 Motivation for Networking Information access Interaction among cooperative application programs Resource sharing
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA9 The Internet concept the illusion of a single network that TCP/IP software provides to users and applications User’s computers
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA10 The Internet concept the underlying physical structure in which a computer attaches to one physical network and routers interconnect the networks Net 3 Net 1 Net 2 Net 5 Net 4 Net 1 router Physical net
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA11 Figure 2.1
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA12 Figure 2.2
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA13 Figure 2.3
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA14 Figure 2.4
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA15 Figure 2.5
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA16 Figure 2.6
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA17 Practical Examples File transfer / access Web browsing Remote login / execution
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA18 What is a Network? Transmission hardware (media) [Ch. 4] Special-purpose hardware devices [Ch. 9, 10] Interconnect transmission media Control transmission Run protocol software Protocol software [Ch. 16 and following] Encodes and formats data Detects and corrects problems
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA19 What does a Network Do? Provides communication that is Reliable Fair Efficient [15.14] From one application to another (allows arbitrary applications to communicate via Network (Distributed) Programming)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA20 What Does a Network Do? Reliable Fair Efficient Delay Throughput
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA21 Delay and Throughput Delay Propagation Delay Switching Delay Access Delay Queuing Delay Throughput Rate of Data Transmission How many bits can enter (or leave) network in fixed unit of time Effective Throughput Capacity Congestion Degree of Utilization
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA22 What Does a Network Do? (continued) Automatically detects and corrects Data corruption e,g., CRC [7.9, 7.10] Data loss Duplication Out-of-order delivery e.g., sequencing [16.10] Automatically finds optimal path from source to destination, routing [Ch. 13]
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA23 Network (Distributed) Programming [Ch. 3] Network allows arbitrary applications to communicate Programmer does not need to understand network technologies Network facilities are accessed through an Application Program Interface
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA24 Basic Paradigm for Pairwise Internet Communication Establish contact Exchange data (bi-directional) Terminate contact Note: NO data processing by the network
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA25 Establishing Contact Performed by pair of applications One application waits for contact (called server) Other application initiates contact (called client)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA26 Identifying a Waiting Application Conceptually two items specified Computer Application on that computer Terminology Computer identified by domain name Application identified by program name
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA27 Representations and Translations Humans use names such as computer: application: ftp Network protocols require binary values Library routines exist to translate from names to numbers
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA28 Example API
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA29 Simplified API
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA30 Simplified API (Cont’d)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA31 Simplified API (Cont’d) The Await_Contact Function connection await_contact(appnum a) The argument specifies a number that identifies the server application
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA32 Simplified API (Cont’d) The Make_Contact Function connection make_contact(computer c, appnum a) The client uses the return value, which is of type connection, to transfer data
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA33 Simplified API (Cont’d) The appname_to_appnum Function appnum appname_to appnum(char *a) Clients and servers both use appname_to_appnum to translate from a human-readable name for a service to an internal binary value
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA34 Simplified API (Cont’d) The Cname_to_comp Function computer cname_to_comp(char *c) Clients call cname_to_comp convert from a human- readable computer name to the internal binary value
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA35 Simplified API (Cont’d) The Send Function int send (connection con, char *buffer, int length, int flags) Both clients and servers use send to transfer data across the network
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA36 Simplified API (Cont’d) The Recv And Recvln Function int recv (connection con, char *buffer, int length, int flags) Both clients and servers use recv to access data that arrives across the network int recvln (connection con, char *buffer, int length) Recvln repeatedly calls recv until an entire line of test has been received
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA37 Simplified API (Cont’d) The Send_eof Function int send_eof (connection con) Both the client and server must use send_eof after sending data to inform the other side that no further transmission will occur
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA38 Simplified API (Cont’d)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA39
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA40 Example #1: Echo Useful for network testing Server returns exact copy of data sent User on computer X runs echoserver User on another computer runs echoclient X 22000
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA41 Example Code Using API: Echoserver
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA42 Echoserver (2 of 2) Actually works on the Internet API calls replace conventional I/O No networking knowledge required
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA43 Example #2: Chat Miniature version of Internet chat service Allows two users to communicate User on computer X runs chatserver User on another computer runs chatclient X 25000
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA44 Example Application: Web Server User on computer X runs webserver User on another computer runs browser and enters URL:
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA45 Example Code Using API: Webserver
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA46 Webserver (2 of 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA47 Webserver (3 of 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA48 Webserver (4 of 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA49 Webserver (5 of 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA50 Webserver (6 of 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA51 Network Programming in Java The java.net package provides two classes-- Socket and ServerSocket--that implement the client side of the connection and the server side of the connection, respectively. java.io package also has to be used together with socket API.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA52 Example API in Java (v1.3+)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA53 The steps for programming in Java: 1. Open a socket. 2. Open an input stream and output stream to the socket. 3. Read from and write to the stream according to the server's protocol. 4. Close the streams. 5. Close the socket.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA54 Example Code Using Java API: (1) EchoServer.java import java.io.*; import java.net.*; public class EchoServer { public static void main(String args[]) { // declare a server socket and a client socket for the server ServerSocket echoServer = null; String line; BufferedReader br; PrintStream os; Socket clientSocket = null; // open a server socket on a specfic port. args[0] is the port number try { echoServer = new ServerSocket(Integer.parseInt(args[0])); } catch (IOException e) { }
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA55 try { // open a socket to listen and accept connections from client clientSocket = echoServer.accept(); br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); os = new PrintStream(clientSocket.getOutputStream()); // once receiving data from client, echo it back to the client. while (true) { line = br.readLine(); os.println(line); } } catch (IOException e) { } }//EchoServer.java
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA56 (2) EchoClient.java import java.io.*; import java.net.*; public class EchoClient { public static void main(String[] args) throws IOException { Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null; //open a socket to a specified host and port. try { // args[0] is host address, args[1] is port number echoSocket = new Socket(args[0], Integer.parseInt(args[1])); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream())); } catch (Exception e) {}
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA57 BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; //send user's input to server, and retrieve what the server sends back. while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("echo: " + in.readLine()); } //close everything gracefully out.close(); in.close(); stdIn.close(); echoSocket.close(); } }//EchoClient.java
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA58 (3) Test Run 1.Compile EchoServer.java and EchoClient.java. 2.Start server program: java EchoServer localhost Start client program: java EchoClient 4118 Then type in something at prompt to see what will happen.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA59 Summary Studying networks is important because The world is interconnected Applications now operate in a distributed environment This course Covers networking and internetworking Explains the mystery of applications Will be hard work
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA60 Summary (continued) Computer Internetworks Deliver data from source to destination Automatically find optimal paths Handle problems that occur We will review how