README page CIS656, spring 2004. Internet and Higher Layer Protocols. Saturday 9:15 - 12:10. Instructor: Teun Ott. Book: Forouzan, B.A. TCP/IP Protocol Suite (second edition, 2002) McGrawHill. All students must have access to a copy of the book. The bookstore has the book in stock. First class session: Sat 01/24/2004, 9:15 am, in Kupfrian 205. This course is mainly about the layers 3 and 4 in the TCP/IP stack, plus some material on higher layers. Knowledge of lower layers (physical layer and link layer) is not required: Enough material on ethernet will be reviewed to understand how ethernet supports TCP/IP. Knowledge of other link layer protocols than ethernet is not needed in CIS656. Therefore, it is no longer required that students take CIS 652 before CIS 656. Roughly, chapters 4 - 14 of Forouzan (plus some more material) will be covered. Students who read this ``README'' early enough and who feel like it can start reading Forouzan Ch 1 - 3. It is not essential but it is a good investment. Students in this class will learn to read and interprete the output of a packet sniffer like TCPdump or ethereal. Students will also become familiar with tools like ping, traceroute, nslookup, dig, arp, ifconfig, etc. Students in CIS 656 will do a project. In the past (in my sections) that always was a project where students write a program that emulates part of the behavior of a Router in the internet. See my web pages for CIS656, fall 2001 - spring 2003. This semester there will be a similar project. However, I will also consider other projects, in particular a project in the Internet Laboratory with students taking measurements using TCPdump or ethereal (or some other sniffer) and analyzing these measurements. These projects will be discussed in class as soon as you know enough about TCP/IP to understand what the projects are all about.README.txt --- Addition on 01/19/2004: Notwithstanding the above, one of the students asked me to be more specific on what students need to know with respect to projects and assignments. 1. The only formal requirement is that students are graduate students in Computer Science or some closely related field, and, in particular, have the programming skills commensurate with that requirement. There will be a project. The project consists of writing a program that reads the headers of a number of IP packets (in ``pseudo-binary'' form, i.e, characters zero and one), computes all the fields in the header, then emulates what a router would do with the packet. That is a specific router in a specific network that will be given in class. All knowledge of IP and Internet Routing needed in the project will be taught in class before you need it in the project. You have to do the programming yourself. It is preferred you do it in C++ using CC or gcc / g++ , and such, that it runs on the afs computers in the ``Engineering Computing Laboratory I'', GITC 2305. (computers afs1.njit.edu - afs36.njit.edu). BTW, that lab is open to all NJIT students. You are invited to use it. You can access it ``physically'' weekdays 8:00 am - 11:00 pm, and Sat/Sun 10:00 am - 6:00 pm. You can access it remotely (dial-in, or Telnet, or ssh) 24 hours a day, 7 days a week. (From inside NJIT also rlogin, I believe. I prefer ssh (secure shell), not really because of the security, but because it has a nicer interface. Try to get ssh: you can download it for for free on the web.) For more information: see http://telecom.njit.edu/ . To download the ssh software, see http://distrib.njit.edu/ . Feel free to do the software development on any computer (e.g. your laptop or PC), but remember, ultimately you have to hand it in, and the TA will run it on the test programs that are kept secret. Your submission must contains CLEAR instructions on how to compile, whether you use command line input, whether you use input/output redirection, whether there are input/output file names embedded in your program, etc. More instructions will follow in class. If you want to use a different language than C++, or a different compiler than CC etc, you must first ask permission. (Use of Java on a Solaris machine is automatically OK, but to be safe, ask first. Ask the TA.) 2. I do assume students already know how to surf the web, use Google to find URLs, etc. But if you do not know how to do that, your neighbor in class can show you in 10 minutes. If you really get stuck, ask the TA. (And in extreme cases, ask the professor). 3. While the above describes the lack of formal requirements, it is a fact of life that many (most?) graduate students in CS (etc) have had one or two undergraduate courses in computer networking. (After all, this is 2004, not 1984). So, if you have had no prior exposure to computer networking, you will find many of your classmates start the course knowing more than you do. Don't worry: Work hard. Never skip class. Pay attention in class. Ask questions. DO ALL HOMEWORK! Then, by the end of the semester, you will know more than they do.