CS 494/594: Internetworking Protocols (Fall 2008)

Course coordinates:
Tuesday/Thursday 2:00pm-3:50pm
Clay Building (CLY) 201
Class e-mail/WWW:
pdx-cs594 at yahoogroups com
http://thefengs.com/wuchang/courses/cs594
Instructor:
Wu-chang Feng
wuchang at cs pdx edu
Office hours:
  Click here
TA:
TBD
tbd at cs
Office hours:
TBD
Outside of FAB 120
Course student reviews
Required book: Computer Networking: A Top-Down Approach (4th ed) James Kurose, Keith Ross
Lecture Material
The course will use the slides below which are a modified version of the textbook's slides.  The course will cover the first 5 chapters of the textbook with additional material added at the end of the course as needed.

Chapter 0: About the course (ppt | pdf)
Chapter 1: Internet overview (ppt | pdf) Chapter 2: Application layer (ppt | pdf) Chapter 3: Transport layer (ppt | pdf)
Chapter 2 and 3 review by example (ppt | pdf) Midterm Exam
Chapter 4: Network layer (ppt | pdf)
Chapter 5: Data-link layer (ppt | pdf) Final exam (Last day of class)
Final project

Demo timeslots for Thursday 12/11. Demos take place in the Linux Lab (FAB 88-09)
Homeworks and programming project
Homework #1 (Chapter 1)
  • R11, R12, R13, R15, R23, R25, P16, P18
  • WireShark lab
    • Available from on-line textbook resources or from "Files" section of course group.
    • Getting Started: 1-4
Homework #2 (Chapter 2)
  • R19, R27, P1, P6, P7, P8, P15
  • WireShark labs
    • DNS: 1-10, 16-19
    • HTTP: 1-11, 16-17
Homework #3 (Chapter 3)
  • R3, R4, R7, R8, R9, R10, R15, P14, P20, P26
  • WireShark lab
    • TCP: 4-6, 8-11, 13
  • Source code grok:
    • Copy of Linux source tree: zip (33MB)
    • A) Within the Linux source tree, find and list the function that implements Karn's and Jacobson's RTT estimator algorithm.
    • B) Within the Linux source tree, find and list the function that transitions a TCP socket into the listen state.
Homework #4 (Chapter 4)
  • R3, R15, R21, P14, P22, P27, P28
  • WireShark labs
    • DHCP: 1, 4, 5, 7-8, 12-13
    • ICMP: 1-4
    • IP: 1-9
  • Source code grok:
    • A) Within the Linux source tree, find where ICMP TTL messages are generated.
    • B) Within the Linux source tree, find where IP fragmentation is implemented
Homework #5 (Chapter 5)
  • R3, R7, R9, R13, P5, P20, P21
  • WireShark lab
    • ARP: 1-7, 12, 16
  • Source code grok (Extra credit worth 10% of Homework #5):
    • A) Using Google or the Linux man pages, find out where in /proc the arp cache timeout value can be found
    • B) What is the default linux timeout for arp cache entries?
    • C) Within the Linux source tree, find and list the struct where this timeout is defined
    • D) Within the Linux source tree, find and list the function that implements the timeout
Programming project: A networked game

You are to choose a multiplayer game, specify a network protocol for supporting the game on-line, and implement the protocol faithfully in a programming language of your choice.  The protocol should be robust and concise.  In particular, the client should perform input validation and only send the server valid messages.  In addition, formatting strings and user-interface messages should be mainly generated at the client.  While the game should be fully functional,  you will be mainly graded on the quality of your protocol specification and implementation.    

Along with the source code of your game client and server, you will include an RFC-style document that specifies your game protocol messages.  An example RFC that you may base your protocol specification on is the IRC RFC 1459.  The RFC will specify the format of the messages that the client and server will exchange in order to properly implement the on-line game.

Both the source code of your game and your protocol specification are to be submitted together in a single tar file to the instructor.

In addition, a demo and code exam will be scheduled in order to discourage students from obtaining code from other sources.  You will be walking through your code with me as well as giving me a demo.  I will ask specific questions about the code that you are expected to answer.  Your final project will be graded upon the quality of the protocol as well as how well you can explain the code you've written. You MUST bring a hard copy of your protocol specification to the demo.

Sample Exams: MidTerm Exam | Final Exam
Evaluation
Midterm exam = 35%
Final Exam = 35%
Homework = 10%
Programming Project = 20%

Course objectives
This course is an introduction to the protocols that make today's Internet work and is intended for students who have programming experience in high-level programming languages.  At the end of the course, students will understand how the Internet's protocols work together to create the networked applications that are in use today.  Specifically, by the end of the course, you will know...