Comp 343/443, Computer Networks, Spring 2004
Peter Dordal, Loyola University Chicago Dept of Computer Science.
4:15-6:45 pm, Wednesdays, 25 East Pearson Rm 203. Comp 343-671, 443-884
Note that the LT-310 room number is wrong.
final exam study guide is below.
The text is the new third edition of Peterson & Davie's Computer
Networks, A Systems Approach.
My general course groundrules are here.
Exams will count
for between 70% to 80% of your grade, with homework and programs making
up the rest.
The midterm will be Week 8, Wednesday, February 25.
The final will be April 21, in our usual classroom at the usual time.
Programming Project
There are two programs to write, each in java. Both are due
Wednesday, April 7, or thereabouts. No late penalty will be assessed, however.
- The first is a port forwarder. When started on host localhost with the command line
java forwarder 3333 remotehost 44
then every time a connection is made to localhost:3333,
a new connection is made to remotehost:44 and two copier threads
are created to copy the data between the two connections (one copier thread
for each direction). The net result is that it appears to the user that
a connection to localhost:3333 is actually a connection to remotehost:44.
No timeouts are needed, though thread creation is necessary.
More information is here.
-
The second program is a port prober. When started with the command line
java prober remotehost 3000 3999
then connection will be attempted to every port on remotehost
between 3000 and 3999. When a connection is accepted,
the first 1K of data will be read from remotehost, if any.
You will need to implement timeouts both for the reading
(because remotehost may not in fact be sending anything, depending
on the network service in question) and for the connecting.
Generally a connection is refused immediately, but if remotehost
is unavailable or if a given port is blocked the connection timeout
may be substantial. Print something for each port; nonactive port ranges
can be summarized eg with
ports 3489-3621: no connections
More information is here.
Here are some programs that might be useful:
More demo programs illustrating how to do timeouts etc will be available soon.
Implementation will be in Java.
Makeup project
For extra credit to raise your midterm score, you can implement the "server side"
of the portscanner. That is, you should implement a java program that can
open multiple ServerSockets (each on a different port),
and, when an incoming connection is made, each socket should write some
data and then close the connection.
The data will generally be a string; use a different string for each socket/port.
You should be able to test this with your portscanner.
You will need to create a separate thread for each port number.
Here is the final exam study guide.
Answers are here.
Here is the midterm study guide.
Answers are here.
Here is an outline of the entire course.
The outline is in logical order; we will jump around more.
The outline is originally from Fall 2003; I'll update it to reflect
Spring 2004 coverage as we go along.
In order to break up the three-hour lectures,
I am dividing the material into three "tracks" that we will
alternate between, at will. Most evenings we will cover material
from two of the tracks.
Here are the tracks:
-
LAN basics
-
IP and routing (chapters 3 and 4)
-
TCP and congestion (chapters 5 and 6)
This looks like the traditional four-layer model (LAN/IP/transit/application),
but we're not really abiding by any strict layering. Here is further information
about what will be covered in each track:
LAN basics
1.1 basics
1.2 layering
1.3 sockets programming intro
2.1 links basics
2.5 reliable transmission (moved up to accomodate TCP)
3.1 switching and forwarding (moved up to accomodate IP)
2.2 encoding
2.3 framing
2.4 error detection
2.6 Ethernet
3.2 bridged Ethernet
3.3 ATM
IP and routing
4.1 IP basics
4.2 Distance-Vector and Link-State Routing
4.3 Subnets, supernets, BGP, and IPv6; backbone structure; AADS v MAE
EAST.
TCP and congestion
5.1 UDP
5.2 TCP
5.3 Remote Procedure Call (blast/chan v Sun) (not done)
6.1 Congestion issues
6.2 Queuing models
6.3 TCP congestion management: Reno and Tahoe
6.4 DECbit, RED, and TCP Vegas
6.5 Reservation-based approaches to congestion (not done)
The following paper has useful information about TCP/IP security: Security
Problems in the TCP/IP Protocol Suite by Steve Bellovin.