Students in CIS 656 in the spring of 2003 will do a project. The project will consist of two parts: A and B. In project A students work independently. (``teams of 1''). In project A students write a program that reads a number of IP packet headers in ``pseudo binary'' (see examples) and computes and prints all fields in the packet header. For the ToS field, use the ``DSCP and ECN'' approach. See the examples ``Project A in'' and ``Project A out'' in the spring 2003 CIS 656 page. To make grading easy: students MUST use identical format as in the example ``out'' page. (We will use ``diff'' in the grading). In the example ``in'' page two ``in'' packets are illegal and have an error reported. The actual test will have a few more illegal input packets. Include error reports. Error reports need not be identical to what my program does (because I will not give more examples). Do not go overboard on the error reporting, but make sure you recognize and flag bad packets. (So in project B you do not try to route them). In Project A the EoO, No-Op, Record Route, Loose Source Route, and Strict Source Route must be included. Grading of project A: Your program will run on a secret test file with ~ 14 packets, you get a fixed number of points for every packet you describe exactly correct. In project B students will work in teams of two. In project B students will write a program that mimmicks the behavior of a router. See the CIS 656 pages for fall 2001, spring 2002, fall 2002 for examples. The network etc will be different. More details will be given later. In project B only EoO, No-Op, and Strict Source Route options will occur. (And of course packets without IP options). Students should write the code for project A in such a way that it can be re-used in project B. Project A is due Sat March 15 13:00, by Email. Project B is due Sat April 12 13:00, by Email. Programs must come with a simple and clear manual on how to compile and run, that informs whether input and output files must have special names, informs whether input and/or output redirection is used, whether command line input is used, etc, Programs MUST compile and run on afs computers running Unix (Solaris). Permitted compilers are g++, cc, CC, javac . If you want to use a different compiler, ask the TAs for permission before you start coding.