CS 594/494 - Internetworking Protocols (TCP/IP) Instructor: Jim Binkley Fall, 2007 Course Title: Internetworking Protocols (TCP/IP) Syllabus -------- Class time: Tu/Th: 4:00-5:50, starts Sept 25, Tuesday Classroom: Urban Center 304, Office hours: at PSU, Tu/Th 1:00-2:00 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: (Mailing list part here is correct for fall 2007) https://mailhost.cecs.pdx.edu/mailman/listinfo/cs494 rules: 1. join the mailing list 2. send email to the list from the address you used to join 3. find the web archive so you don't need to ask questions that have already been answered 4. email goes to: cs494@cecs.pdx.edu Text: TCP/IP Illustrated. The Protocols. Volume 1. W. Richard Stevens. Addison-Wesley. 1994. ISBN 0-201-63346-9. This book is not "too old". It is still the best book on the subject. There is nothing much in it that is not used now. The problem with the Internet is that there are always MORE technologies. But you have to start somewhere. The instructor will supplement it as necessary. Optional, but extremely helpful (wise students will get this book): Unix Network Programming. Stevens, Fenner, Rudoff, 3rd Edition ISBN 0-13-141155-1, 2004. (Useful for information on programming BSD sockets, in particular see chapters 3-11 in particular. chapter 11 has getaddrinfo. other chapters may be of interest. Note: the second edition and later have two volumes. You want the first volume. Any edition of this book will work, although the latest edition is best. 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 after school starts. 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. - 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. Approximate Calendar (may slip as needed) ------------------------------------------ Week of What Assignments ---- ---- ----------- Class plan: Sept 25 Syllabus, Intro to TCP/IP, main text c.1, net text chapters on socket programming Intro, BSD Sockets programming intro A1 out (on thursday) reliable programming mystery lecture Make sure you have sockets code handouts (not IPV6 though yet) by thursday. Oct 2 link layer, ethernet, slip, ppp c.2,4, appendix A. ARP (if we get there) Oct 9 IP layer, subnetting c.3, c.12 (broadcast) ICMP/ping and traceroute c.6-8 Oct 16 intro to routing c.9, c.10 + routing protocols + ipv6 Oct 23 bootstrapping, RARP, BOOTP, DHCP. c.5,15,16 UDP, c.11 (udp) Oct 25 midterm A1 in A1 due at class start time Nov 6 TCP c.17-23 (warning!) Nov 13 DNS/FTP/NFS c.14, 27, 29 Nov 20 SMTP(email), HTTP(www) c. 28, 26 Nov 22/23 Thanksgiving/holiday Nov 27 network security intro A2 in this week Nov 29 a2 due at class start time Dec 3 finals week Dec 4 final probably tuesday, Dec. 4 15:30-17:20 Assignment Methodology ---------------------- The two programming assignments must be turned in on paper, in class. (This means source). (remote students must at least email them though). None of the assignments may be done in groups, but must be accomplished on your own. Source code should be ASCII only, no binary. You may send a shar or tar archive as an attachment. Do not send a zip archive please. Each assignment turned in must include: - Design documentation in plain ASCII (not word) - 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 test plan is input. The test run output reflects the test plan. 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*. On the first assignment, late assignments will be accepted up to the next class period with one letter grade (11 points out of 100%) deducted. Assignments later than one week will not be accepted. A2 must be turned in on time. Late assignments will not be accepted. 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. 2. Note that BOTH an email version 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. Remote students will be judged on "lateness" however by their email, not their paper. However they should get the paper to the instructor SOMEHOW. 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. Be sure and pay attention to just what assignment is being implemented here. Doing the wrong one will not do your grade any good. 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). Grading is a subjective process. Showing up at class *on time*, politely answering questions, and in general showing a charming interested scholarly attitude is not likely to hurt you. 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". This class is the first class of a three course sequence on networking. The second class is on routing and switching. The third class is on network security. Taken together they provide a powerful background in Internet-based networking. 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. Believe me, there is more. 2007 Jul Aug Sep S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S 1 2 3 4 5 6 7 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30 Oct Nov Dec S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S 1 2 3 4 5 6 1 2 3 1 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31