Upload
noah-powers
View
228
Download
4
Tags:
Embed Size (px)
Citation preview
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 1
Computer Networks & PROTOCOLS
(CSI 4118)
FALL 2005
Professor Robert L. Probert
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 2
Part I
Introduction
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 3
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 4
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 5
You Will Learn (continued)
Some network applications! Client-server paradigm Domain name system (DNS) File transfer (FTP) Remote login (TELNET) Email transfer (SMTP) Web technologies and protocols
HTTP, PHP, CGI, Java Security Voice over IP, …
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 6
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 7
Background Required (continued)
Basic knowledge of operating systems Terminology Functionality Processes and concurrent processing
CSI 3103/3503
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 8
Motivation for Networking
Information access Interaction among cooperative application
programs Resource sharing
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 9
The Internet conceptthe illusion of a single network that TCP/IP software provides to users and applications
User’scomputers
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 10
The Internet conceptthe 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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 11
Figure 2.1
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 12
Figure 2.2
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 13
Figure 2.3
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 14
Figure 2.4
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 15
Figure 2.5
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 16
Figure 2.6
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 17
Practical Examples
Email File transfer / access Web browsing Remote login / execution
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 18
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 19
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 20
What Does a Network Do?
Reliable Fair Efficient
Delay Throughput
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 21
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 22
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 23
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 24
Basic Paradigm for Pairwise Internet Communication
Establish contact Exchange data (bi-directional) Terminate contact
Note: NO data processing by the network
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 25
Establishing Contact
Performed by pair of applications One application waits for contact (called
server) Other application initiates contact (called
client)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 26
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 27
Representations and Translations
Humans use names such as computer: www.netbook.cs.purdue.edu application: ftp
Network protocols require binary values Library routines exist to translate from names
to numbers
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 28
Example API
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 29
Simplified API
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 30
Simplified API (Cont’d)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 31
Simplified API (Cont’d)
The Await_Contact Function
connection await_contact(appnum a)
The argument specifies a number that identifies the server application
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 32
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 33
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 34
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 35
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 36
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 37
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 38
Simplified API (Cont’d)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 39
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 40
Example #1: Echo
Useful for network testing Server returns exact copy of data sent User on computer X runs
echoserver 22000 User on another computer runs
echoclient X 22000
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 41
Example Code Using API: Echoserver
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 42
Echoserver (2 of 2)
Actually works on the Internet API calls replace conventional I/O No networking knowledge required
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 43
Example #2: Chat
Miniature version of Internet chat service Allows two users to communicate User on computer X runs
chatserver 25000 User on another computer runs
chatclient X 25000
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 44
Example Application: Web Server
User on computer X runs
webserver 27000 User on another computer runs browser and
enters URL:
http://X:27000/index.html
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 45
Example Code Using API: Webserver
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 46
Webserver (2 of 6)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 47
Webserver (3 of 6)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 48
Webserver (4 of 6)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 49
Webserver (5 of 6)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 50
Webserver (6 of 6)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 51
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 52
Example API in Java (v1.3+)
Method Class Meaning Socket (String host, int port) java.net.Socket Used by client to create a socket
to connect to the specified server host and port
ServerSocket (int port) java.net.ServerSocket Used by server to create a socket on a specified port
accept java.net.ServerSocket Used by server to accept connection from client
println java.io.PrintWriter java.io.PrintStream
Used by either client or server to send data
readLine java.io.BufferedReader Used by either client or server to receive data
close java.net.Socket
Used by client to close this socket
close java.net.ServerSocket Used by server to close this socket
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 53
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 54
Example Code Using Java API:(1) EchoServer.javaimport 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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 55
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 56
(2) EchoClient.javaimport 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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 57
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 58
(3) Test Run 1. Compile EchoServer.java and EchoClient.java.
2. Start server program: java EchoServer localhost 4118
3. Start client program: java EchoClient 4118 Then type in something at prompt to see what
will happen.
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 59
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 2005 CSI 4118 – UNIVERSITY OF OTTAWA 60
Summary (continued)
Computer Internetworks Deliver data from source to destination Automatically find optimal paths Handle problems that occur
We will review how