CS 594/494 - Internetworking Protocols (TCP/IP) (3 credits) Instructor: Jim Binkley Fall, 2003 Course Title: Internetworking Protocols (TCP/IP) Syllabus -------- Class time: T/Th: 4:00-5:50, starts Sept 30, tuesday Classroom: taught at PSU, NH 454 (Neuberger Hall), IP TV to OCATE OCATE: room TBD, ask at the OCATE office when you get there. Office hours: at PSU, T/Th 9-10 in FAB building at my office, 120-14. or send email to make appt. PSU Office: FAB 120-14. Email: jrb@cs.pdx.edu TCP Class Page: http://www.cs.pdx.edu/~jrb/tcpip.html Mailing list: tcpip@cs.pdx.edu To join: send email to majordomo@cs.pdx.edu To: majordomo@cs.pdx.edu --- subscribe tcpip Text: TCP/IP Illustrated. The Protocols. Volume 1. W. Richard Stevens. Addison-Wesley. 1994. ISBN 0-201-63346-9. Optional, but extremely helpful: Unix Network Programming. W. R. Stevens, 2nd edition. ISBN 0-13-490012-X. Prentice-Hall. 1998. (Useful for information on programming BSD sockets, in particular see chapters 4-6, 8, 9 in 2nd edition). Excerpts from: You will be expected to read a few IETF RFCs (to be assigned in class). You will be expected to obtain them from the Internet with anonymous ftp (or the web). Home page: Note that the syllabus, assignments, and even most lecture slides are available from the class home page. Students should make themselves familiar with the home page. Students should also join the class mailing list ASAP. This does not mean wait a month, and then say "can you tell me what you sent to the mailing list"? Prerequisites ------------- Students must... - be familiar with the functions of a modern multiuser operating system. E.g., an Intro to OS class like PSU CS 333/533, or OGI CSE 513. - be familiar with C and have access to a UNIX-based networked computer (Linux, FreeBSD, Solaris that has sockets/clients/servers). - have the ability to send Internet e-mail to the address above. Goals ----- To provide an overview of the structure and algorithms used in the TCP/IP networking protocols that make up the foundation of the Internet. Protocols and technologies covered will include an introduction to the link layer, ARP, IP, ICMP, UDP, TCP, routing protocols, and application protocols and systems like the DNS, NFS, SMTP, FTP, HTTP, IPv6, multicasting protocols and applications (if time permits), and security issues, including a brief introduction to network security. To provide architectural insight into protocol design issues and operating system implementation techniques, typically in terms of the Berkeley UNIX socket programming model. To provide socket programming experience with the client/server model. To provide experience reading Internet RFC's and/or drafts. Rough Calendar (may slip as needed) ----------------------------------- When What Assignments ---- ---- ----------- Class plan: Sept 30-Oct 1 Syllabus, Intro to TCP/IP, main txt c.1, net txt chapters on socket prog. Intro, BSD Sockets programming intro A1 out (on th) reliable programming mystery lecture Oct 7-9 link layer, ethernet, slip, ppp c.2,4, appendix A. ARP (if we get there) Oct 14-16 IP layer, subnetting c.3, c.12 (broadcast) ICMP/ping and traceroute c.6-8 Oct 21-23 intro to routing c.9, c.10 + routing protocols + ipv6 Oct 28-30 bootstrapping, RARP, BOOTP, DHCP. c.5,15,16 UDP, c.11 (udp) Nov 4 midterm A1 in Nov 6,13 TCP c.17-23 (warning!) A2 out Note: Nov 11 is holiday Nov 18-20 DNS/FTP/NFS c.14, 27, 29 Nov 25 SMTP(email), HTTP(www) c. 28, 26 Nov 27 Thanksgiving/holiday Dec 2-4 network security intro A2 in on Dec 4 Dec 9 final tuesday: dec. 9: 3:30 - 5:20 (pm...) Assignment Methodology ---------------------- The two programming assignments must be turned in on paper, in class. (This means source). None of the assignments may be done in groups, but must be accomplished on your own. Source code for assignments must IN ADDITION be shar'ed (program provided) and e-mailed to me with a postmark no later than the beginning of the class at the due date. Each assignment turned in must include: special note: Figure out how shar works BEFORE you submit your assignment, and test it by mailing it to yourself please. shar/unshar exist in the windows world too. - Design documentation in ASCII - source code and Makefile - output of test runs (use script or construct a debug logging system) - a written test plan with suitable test cases. It need not be long, but it should be SUFFICIENT and explain what the test case does, expected results. It should match up with the test run output. The source code must be well commented. Each file should have a header comment that explains what the file is for and what functions reside in the file. Each function should have a function header that explains briefly what the function does and discusses function inputs and outputs. Comments should be meaningful. Code should be done in ANSI C, C++, or K&R C. C style should approximate the style given in Kernighan and Ritchie. More in class when the first assignment is handed out. Readibility will be a significant factor in grading. In all cases, a suitable "log" or script output must be presented that proves that the program in question *worked*. Late assignments will always be accepted up to the next class period with one letter grade (11 points out of 100%) deducted. Two notes: 1. Note that an assignment is LATE if it is not turned in at the start of the class on the day due. No LATE assignments will be accepted. 2. Note that BOTH an email shar must be sent AND a paper version must be turned in. This is not optional. Failure to pay attention and learn how to do this may result in the loss of a letter grade. shar is findable e.g., on sirius.cs.pdx.edu at /usr/local/bin/shar. Take a bunch of files, and mail them to yourself BEFORE you turn in the assignment. Learn how shar works. And test submitting an assignment (to yourself) to make sure that you can do it successfully. Make sure you submit all necessary files and that you do not miss any. Note that shar is an open-source GNU utility. It isn't exactly rocket science either, and has been ported to Microsoft OS platforms in the past. If you are on Microsoft, find one, and learn how to use it asap. Assignment Outline ------------------ A1: write a UDP-based client/server with a reliable protocol built on top of UDP. The protocol should use a simple timeout/retransmission/ack scheme with a checksum and sequence number. All students will be expected to implement the test bed simulator mechanism. We will learn about UDP client/servers and sockets. A2: a simple "FTP-like" TCP-based client-server using a remote procedure call (RPC) mechanism will be developed and layered on top of TCP. Sun RPC may be used or you may develop your own just for this program. Protocol design goal here is to design a simple RPC protocol. We also want to learn how to use TCP sockets and how TCP clients/servers are structured in terms of the socket model. Optionally we MAY do a simple ftp client. Grading ------- Programming Assignment #1: 100 points Programming Assignment #2: 100 points Midterm: 100 points Final: 100 points ---- Total: 400 points Each assignment and test will weigh the same. Your final grade for the course is determined by determining the percentage of the points you earn with respect to the total possible. Each letter grade occupies roughly a 10 point spread (A: 90%-100%, B: 80%-90%etc). Miscellaneous Comments ----------------------- I regard this class as "IP bootcamp". It is a graduate-level class which undergraduates at PSU are privileged to take. This is a graduate class and a scholarly attitude is expected. The class is more focused on software (how TCP/IP works) than the latest telco/WAN technology. I believe that it is a fair substitute for any traditional academic "Introduction to Communications" class and much more appropriate for real TCP/IP work, be it programming, protocol design, network administration, or graduate research. Students will also learn a great deal about the art of network protocol design and about the mysteries that occur "on the wire". Try to read the textbook sections before the lecture. You will probably get more out of the lecture that way. Make sure you understand what the right-hand column in the syllabus is for (chapters/assignments). Readings out of texts are suggested. You MAY always read more.