README page CIS656, fall 2005. Internet and Higher Layer Protocols. Saturday 9:15 - 12:10. Instructor: Teun Ott. Book: Forouzan, B.A. TCP/IP Protocol Suite (third edition, 2005) McGrawHill. All students must have access to a copy of the book. The bookstore has the book in stock. First class session: Sat 09/03/05, 9:15 am, in Kupfrian 211. 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 - 15 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. This is neither necessary nor required, but not a bad investment (whether you take CIS 656 or not). 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 2005, or the ``Class projects'' page on this site. 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. --- Addition on 07/29/2005 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. See the ``Class projects'' page on this site. 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 Java using javac, or 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 Java or C++, or a different compiler than javac or CC etc, you must first ask permission. 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 2005, 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! Do the projects. Then, by the end of the semester, you will know more than they do.