Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Computer Networks &
PROTOCOLS
(CSI 4118)
FALL 2005
Professor Robert L. Probert
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
1
Part I
Introduction
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
2
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
3
You Will Learn
Internets and Internetworking
FALL 2005
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
CSI 4118 – UNIVERSITY OF OTTAWA
4
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
FALL 2005
HTTP, PHP, CGI, Java
Security
Voice over IP, …
CSI 4118 – UNIVERSITY OF OTTAWA
5
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
FALL 2005
Text editor
Compiler / linker / loader
CSI 4118 – UNIVERSITY OF OTTAWA
6
Background Required
(continued)
Basic knowledge of operating systems
Terminology
Functionality
Processes and concurrent processing
CSI 3103/3503
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
7
Motivation for Networking
Information access
Interaction among cooperative application
programs
Resource sharing
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
8
The Internet concept
the illusion of a single network that TCP/IP software
provides to users and applications
User’s
computers
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
9
The Internet concept
the underlying physical structure in which a computer attaches to
one physical network and routers interconnect the networks
Net 2
Net 1
Net 4
Net 3
router
Net 5
Physical net
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
10
Figure 2.1
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
11
Figure 2.2
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
12
Figure 2.3
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
13
Figure 2.4
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
14
Figure 2.5
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
15
Figure 2.6
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
16
Practical Examples
Email
File transfer / access
Web browsing
Remote login / execution
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
17
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]
FALL 2005
Encodes and formats data
Detects and corrects problems
CSI 4118 – UNIVERSITY OF OTTAWA
18
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
19
What Does a Network Do?
Reliable
Fair
Efficient
FALL 2005
Delay
Throughput
CSI 4118 – UNIVERSITY OF OTTAWA
20
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
21
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
22
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
23
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
24
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
25
Identifying a Waiting
Application
Conceptually two items specified
Computer
Application on that computer
Terminology
FALL 2005
Computer identified by domain name
Application identified by program name
CSI 4118 – UNIVERSITY OF OTTAWA
26
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
27
Example API
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
28
Simplified API
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
29
Simplified API (Cont’d)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
30
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
31
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
32
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
33
Simplified API (Cont’d)
The Cname_to_comp Function
computer cname_to_comp(char *c)
Clients call cname_to_comp convert from a humanreadable computer name to the internal binary value
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
34
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
35
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
36
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
37
Simplified API (Cont’d)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
38
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
39
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
40
Example Code Using API:
Echoserver
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
41
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
42
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
43
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
44
Example Code Using API:
Webserver
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
45
Webserver (2 of 6)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
46
Webserver (3 of 6)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
47
Webserver (4 of 6)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
48
Webserver (5 of 6)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
49
Webserver (6 of 6)
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
50
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
51
Example API in Java (v1.3+)
Method
Class
Socket (String host, int port) java.net.Socket
ServerSocket (int port)
accept
println
readLine
close
close
FALL 2005
Meaning
Used by client to create a socket
to connect to the specified server
host and port
java.net.ServerSocket Used by server to create a socket
on a specified port
java.net.ServerSocket Used by server to accept
connection from client
java.io.PrintWriter
Used by either client or server to
java.io.PrintStream
send data
java.io.BufferedReader Used by either client or server to
receive data
java.net.Socket
Used by client to close this
socket
java.net.ServerSocket Used by server to close this
socket
CSI 4118 – UNIVERSITY OF OTTAWA
52
The steps for programming in Java:
1.
2.
3.
4.
5.
Open a socket.
Open an input stream and output stream to the
socket.
Read from and write to the stream according to
the server's protocol.
Close the streams.
Close the socket.
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
53
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 2005
CSI 4118 – UNIVERSITY OF OTTAWA
54
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
55
(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 2005
CSI 4118 – UNIVERSITY OF OTTAWA
56
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
57
(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
58
Summary
Studying networks is important because
The world is interconnected
Applications now operate in a distributed
environment
This course
FALL 2005
Covers networking and internetworking
Explains the mystery of applications
Will be hard work
CSI 4118 – UNIVERSITY OF OTTAWA
59
Summary (continued)
Computer Internetworks
Deliver data from source to destination
Automatically find optimal paths
Handle problems that occur
We will review how
FALL 2005
CSI 4118 – UNIVERSITY OF OTTAWA
60