Computer Networks and Distributed ProcessingDepartment of Mathematics and Computer Science Hobart and William Smith Colleges Fall, 2000. Instructor: David J. Eck. Monday, Wednesday, Friday, 3:00--3:55. Room Eaton 105.
About This Course
It is hardly necessary to explain the importance of computer networking. It's everywhere. Computer networks are very complex systems, with many levels of organization. It is certainly not possible to learn everything in one term. (Probably not in one lifetime, especially since things seem to change as fast as anyone can learn them.) The key to dealing with this complexity is to learn the basic ideas and fundamental theory of computer networking. I hope that the course will make that possible, while at the same time covering a lot of practical material.
The textbook for this course is Computer Networking and Internets, by Douglas Comer. It is meant as a textbook for a two-term course (although apparently one that involves a lot of network programming that is not really covered in the text). I will ask you to read about half of the chapters in the text, not necessarily in the order in which they occur in the book.
There will also be material from other sources. Some material on Linux networking will be taken from Linux Network Administrator's Guide, second edition, by Olaf Kirch and Terry Dawson. The first edition of this book is available on-line (and the second edition is supposed to be, but doesn't seem to be there yet). I'll ask you to read some RFC's, which are the basic documents that define the Internet. These are available on the CD-ROM that came with the text. The contents of the CD-ROM are also available, more conveniently, on-line. I will also ask you to look at some on-line Linux documentation.
The other major source of material will be an on-line book about the Parallel Virtual Machine (PVM). PVM is a system used to write distributed programs. A distributed program is one that runs in pieces on a number of networked computers. We will cover PVM during the last two weeks of the term.
You can find links to on-line materials on the home page for this course, at http://math.hws.edu/eck/cs441.html.
Some of the projects and assignments for this course will require you to use Linux computers that I have set up in Eaton 106. You will have "root access" to these machines so that you can control them completely. We will also visit this lab for a few classes.
If you do not already have a key for Eaton 106, please let me know so that we can get one made for you.
Projects and Homework Assignments
There will be short homework assignments to turn in throughout the course. In addition to these short assignments, I expect to assign four longer projects along these lines:
- Use the C++ Sockets API to write a networking program.
- Install and configure a standard network service.
- Write a networking program to interact with or implement a standard service.
- Write a distributed program for PVM (the Parallel Virtual Machine).
You must do at least one of these four projects as an individual, and you must do at least one of them as a member of a group. For the remaining two, you can choose.
By the way, we will be covering PVM in class after the last test. The PVM project will be due after the last day of classes, and it will be the only grade that you will receive on the PVM material.
The Final Project
In addition to the four projects mentioned above, there will be a final term project which will take the place of a final exam. The project will include a five or six page paper, in addition to the practical work that you do. During the final exam period, each person in the class will meet with me individually for twenty minutes to present his or her work on the project and to answer any questions I may have. This meeting can be scheduled during the final exam period as set by the Registrar's office (Thursday, December 14, 7:00--10:00 PM). However, it can also be scheduled for earlier during exam week.
The point of the project is for the class as a whole to set up an internet in the Eaton 106 lab. The internet will consist of several TCP/IP networks connected by Linux computers that act as routers. The internet as a whole might also be gatewayed to the HWS network (and from there to the Internet). Your networks will be configured to support various networked services. This is where the individual parts of the project come in: Each person or small group can take responsibility for one or more services. Here are some examples of what you might want to do:
- Secure one of the networks with a network packet filter firewall.
- Make user info and home directories available over the net, like we do in the lab, using NFS and NIS.
- Make the networks into a domain (cs441.hws.edu?) and set up a DNS name server for it.
- Set up a DHCP server to provide IP numbers to hosts on the network (but make sure DHCP packets don't escape to the HWS net!).
- Set up a secure version of the Apache Web Server using SSL.
- Set up one of the networks as an IPv6 (the next version of IP) network.
- Find and install "virtual private network" software.
I'm sure we will think of more possibilities as the term progresses.
There will be three in-class tests, which will be given on Monday, September 25; Friday, October 27; and Wednesday, November 29. There will be no final exam, since the final project takes the place of a final exam.
Your grade for the course will be computed as follows:Three In-class Tests: 50% Homeworks and short projects: 35% Final Project: 15%
Office Hours, E-mail, and Web
My office is room 301 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I have scheduled office hours for the following times:
- Monday, 1:00--1:50
- Tuesday, 1:00--3:30
- Wednesday, 1:00--1:50
- Friday, 11:00--12:00
It is possible that I might have to make some changes to this schedule. If so, I will announce the changes in class and on my office door.
Office hours are times when I promise to try my best to be in my office. I do not make appointments during my office hours, since they are times when I am available to students on a first-come, first-served basis. When necessary, I can make appointments for meetings outside my scheduled office hours.
My e-mail address is email@example.com. E-mail is good way to communicate with me, since I usually answer messages the day I receive them.
You'll find a small Web page for this course at http://math.hws.edu/eck/cs441.html. I will post weekly readings and assignments on that page. You can find them there in case you miss them in class. The page also has a few useful Web links.
For the first week of the course, you should read Chapters 1, 2, and 3 in the textbook. We will cover parts of Chapters 4 and 5 in class, but they will never be formally assigned as reading.
For your first assignment, do the following exercises from Chapter 2 (page 15): Exercises 2.2, 2.3, 2.6, and 2.7. Note that each exercise requires you to do some experiments on a computer and to write up your results. We will visit the lab in Eaton 106 on Wednesday or Friday during class, so you can get some experience with the ping and traceroute programs at that time.
Turn in your answers to the exercises in class on Monday, September 4.