I try to assign most homework 2 weeks ahead of time. However, check this page frequently, I may make last minute changes. In particular, if during teaching I run into an interesting situation I may assign homework for the next Saturday with only a few days lead-time. Make sure to frequently ``reload'' or ``refresh'', or you may read an outdated copy from your cache! Frequently read your Email at your afs account. If I send Email to the whole class, that is where it goes. Hand in homework after class by pushing it under the door of my lab, GITC 4325, before 13:00 every Saturday. Hardcopy unless the TAs have given permission to hand it in otherwise. Every Saturday after class (12:15 - 13:15) one of the TAs will be in GITC 4325 to hand back homework and to answer questions. If you want to hand in homework late, ask permission from the TAs, NOT from Dr Ott. Teun Ott. TAs: Ms Harit, vh4@njit.edu Mr Jain, rbj2@njit.edu Homework for Sat 02/01/2003: Read Forouzan pp 1 - 56. Get IETF RFC 1700. (www.IETF.org , etc). Have a look at RFC 1700 (too large to read entirely). Log in to any Unix system. Do ``man nslookup'' . Read the nslookup man pages. Hand in (hardcopy, Sat 02/01/2003 before 13:00, under door of GITC 4325): 1. What is currently the highest RFC number? What are title and authors of that RFC? 2. Forouzan p 44 problem 16. 3. Forouzan p 44 problem 17. 4. Use RFC 1700 to find the ethertype of IPv4. Show you really used RFC 1700 by copying 5 lines, the middle one of which gives the information. It is NOT enough to get the correct ethertype! (No credit for the right ethertype, only for the right 5 lines !). Log in to any Unix system. Play with nslookup. Do (do not hand in): nslookup afs1.njit.edu nslookup alizarin.njit.edu nslookup 128.235.204.81 See what happens if you give only part of the name. (e.g. only afs1 , or only afs1.njit , etc.). For some computer outside of the Americas, find name as well as IP address. If you can not find any computer outside the Americas (shame on you!) try ftp.eu.uu.NET . In that case, explain what you get. (Do not hand in). --- There are (at least) two ways to get RFCs. Both start by: Go to the IETF web page, www.ietf.org . Click on ``RFC pages''. Then: (1) {put in RFC number} This gives you the RFC. or: (2) {click on ``RFC editor web pages'', click on ``RFC search'', Type in keyword(s), e.g. RFC number.} This (hopefully) gives you a list of relevant RFCs, with some additional information: ``Obsoletes'', ``Obsoleted by''. Fairly often, an RFC becomes obsolete. Then it is replaced by a newer RFC. The older RFC remains accessible, but is ``obsoleted by'' the newer RFC. Homework for 02/08: Read Forouzan pp 56 - 110. Log on to any Unix system. Do ``man ping''. Read the ``man ping'' pages. Find out what RFC obsoleted RFC 1700. Read that RFC in its entirety. Use that information to find the following: 1. The ethertype of IPv4. 2. The ethertype of IPv6. 3. The protocol numbers of TCP and of UDP. In all four cases, show you went to the right database by copying 5 lines, with the appropriate line in the middle. Just getting the right answers is NOT enough! 4. Forouzan p 86 problem 26. 5. Forouzan p 112 problems 1, 2, 3. 6. let x.y.z.u/k be a network address (or a route in a routing table). PROVE (mathematically) that this network address can not have a one among the last (32 - k) bits. (If it did, no packet would ever have a hit with this route in the table). ---- About ping: Computers with the Solaris OS give the RTT (in ping) rounded off to nearest msec. So often you see RTT = 0 . (There is a fix for this: next semester). Computers with the Linux OS give the RTT (in ping) rounded off to nearest microsecond (or 10 microseconds, if the RTT is ``large''). To give students access to ping on linux, CIS 656 students have or will soon have access to lafite.njit.edu . Only using ssh (secure shell). prompt>: ssh lafite.njit.edu . (etc). The syntax of ping is different on Linux than on Unix: lafite-41 ott>: ping -c 10 -i 1 -s 1000 afs4 PING berman.njit.edu (128.235.204.91) from 128.235.35.52 : 1000(1028) bytes of data. 1008 bytes from berman.njit.edu (128.235.204.91): icmp_seq=1 ttl=254 time=0.857 ms Use lafite only if you feel you need the higher accuracy. ---- DO, but do not hand in: Log on to any Unix system, NOT alizarin.njit.edu (same as afs1). Do ping alizarin.njit.edu Do ping -s alizarin.njit.edu (terminate with control-C when you have seen enough). Do ping -s alizarin.njit.edu 70 10 Find out what all the numbers mean that you have seen. For some computer outside the Americas, find the Round Trip Time from NJIT to that computer and back. If you can not find any computer outside the Americas, use ftp.eu.uu.NET , also try the two IP addresses of that computer (computer system?). --- Homework for 02/15: Get the IETF RFC with title ``Requirements for Internet Hosts -- Communication Layers''. Read sections 3.3.2 and 3.3.3 of this RFC. Read Forouzan pp 119 - 163. Log in to any Unix system. Do: man traceroute read the traceroute man pages. From a computer inside NJIT, try traceroute to a few computers inside NJIT. (128.235.204.6, 128.235.204.81, 128.235.204.90, 128.235.204.109, 128.235.32.5, 128,235.251.2, 128.235.251.10). For some computer outside the Americas, find the sequence of routers a packet passes through on its way from NJIT to that computer. WARNING: This will not work. Due to the NJIT firewall, traceroute does not work from inside NJIT to outside NJIT. If you have access to a computer outside NJIT, try traceroute on that computer. Also see the CIS656 page for the fall of 2002, homework about traceroute. If you can find the time, do the homework on netstat, arp, and ifconfig (for 02/22) already before 02/15. If you paid attention in class you know enough about these tools to understand what you see. Make sure you understand the outputs you see! Do (hand in) 1. Give the definitions of EMTU_R and of EMTU_S. 2. Between two afs computers inside NJIT (say afs1 and afs2), find the largest ping size that works. Show how you did this: copy a FEW lines of output. Explain what you see. 3. For a computer outside of the Americas, find the largest ping size that works (from NJ to that computer). Find a computer outside the Americas where that number is less than 65507. (For example ftp.eu.uu.NET , many computers outside the Americas have this property). Show a FEW lines of output. Explain this behavior. You will need to do a bisecting search to find exactly the largest size that works. 4. Forouzan p 140 problem 10. 5. Same, problem 11. 6. Same, problem 21. 7. Forouzan p 165 problem 17. 8. Forouzan p 166 problem 32. Use ``min hop'' routing. In case of a tie, do NOT go through 111.0.0.0/8 . m3 = 111.20.18.14 . m4 = 194.17.21.14 . --- Homework for 02/22: Study for the midterm. The midterm is closed book. A ``cheat sheet'' will be provided with information you must be able to use but need not memeorize. Read Forouzan pp 169 - 203. Get the RFC that describes what address ranges are permitted (``recommended'') for Private Internets. Read sections 1, 2, 3, and 4 of this RFC. Log on to a Unix system. Do ``man arp'', read the arp man pages. Do arp -a . (Do this a few times, with a few seconds in-between). Choose any hostname in the arp cache, do arp . Log on to a Unix system. Do ``man netstat'', read the netstat man pages. Do netstat -r , netstat -rn , netstat -ra , netstat -ran . Log on to a Unix system. Read the ifconfig man pages. Do ifconfig -a . Do (hand in): Forouzan p 188 problems 15 - 22. Do (hand in): Describe the mask of the (sub-)network 128.128.128.0/20 . Which of the following IP addresses is in that (sub-)network? For each, answer yes or no and give a BRIEF explanation. (1) 128.129.128.10 (2) 128.128.144.170 (3) 128.128.129.160 (4) 128.128.128.144 The midterm includes: Forouzan pp 1 - 203, All classnotes up to and including 02/15, All compulsory assigned reading up to and including 02/22, All homework (whether handed in or not) up to and including 02/22. (Yes, including the ones you do for 02/22). --- Homework for 03/01/03: Read Forouzan pp 203 - 246. Get the RFC of which the title simply is ``Internet Protocol''. (Sept 1981). Note: in the IETF RFC pages the author is given as J. Postel. On the RFC itself it is given as ``Information Sciences Institute''. Note: This is a very old RFC! Read the sections on loose source route, strict source route, record route. Make sure to have a DESIGN for the code of project A. Make sure to have thought about the design of the code in project B! (Project B should re-use code from project A!). Make sure to have roughly equal amounts of time for designing, coding, and testing! Find two afs computers that you are SURE are on the same network. Use two ways to verify this. Use ping to determine (approximately) the bandwidth of some LAN in NJIT. Hand in. Include plot. If you do not know how to get a plot: log on to a Unix box. Do man gnuplot . Do (hand in): Forouzan p 189 problems 23 and 24. Forouzan p 224 problems 25, 39. --- Homework for 03/08 Read Forouzan pp 253 - 281. Work on the code for Project A. Code should be done by 03/08, so you can TEST the code until 03/15. Do (hand in): Find the IP addresses and ``real'' names of afs35 and of afs57 . Log in to both these computers. (Simultaneously, or sequentially: I do not care). (Either in the lab or remote. For me, one accepted ssh, for the other I had to use telnet. From within NJIT you can also try rsh and rlogin.) In each, do ``ifconfig -a''. What are the masks of the networks afs35 and afs57 are connected to? What are the network addresses of these networks? Use this information to show that afs35 and afs57 are NOT on the same subnetwork. Do traceroute from afs35 to afs57, and do traceroute from afs57 to afs35. Use the result to show again that afs35 and afs57 are not on the same subnetwork. What can you say about name(s) and address(es) of the router(s) connecting the subnetworks afs35 and afs57 are on? Show all (relevant(!)) outputs. (See also homework for next week on afs35 and afs57: you might want to do it now.) Do (hand in) Forouzan p 270 problems 21, 22, 23. About afs1 - afs36 and afs49 - afs59: afs1 - afs36 are in the lab on the second floor of GITC. Students can log in ``physically'' by going to the lab. Students can log in remotely: By telnet from anywhere. If you have ssh, by ssh from anywhere. From NJIT computers by rlogin or rsh. afs49 - afs59 are in Weston 461. The door to that room has a combination lock: 0-6-2,3-6. Students are allowed in there. Students can log in physically by going to Weston 361. Remote login is possible only by Telnet from other NJIT computers, not from off-campus. afs49 - afs59 do not have ssh. So from off-campus: first log in to one of afs1 - afs36, by whatever method you like. Then telnet from afs1 - afs36 to afs49 - afs59. Mr Savino (cdsavino@juno.com) informed me: you can also get into afs49 - afs59 via the NJIT modem pool. Ask him for details if that is how you want to do it. --- Homework for 03/15 Read Forouzan pp 282 - 304. Log in to a Unix system. Do ``man dig''. Read the ``dig'' manual pages. Hand in the well-designed, cleanly coded, well-tested code for project A. Let the TAs know who you will partner with for project B. Do (do NOT hand in) Log on to afs35 and to afs57 (same as last week) On both, do ``netstat -r''. Compare the outputs, notice they use different formats. The one in afs57 is closer to how we did it in class. On both, do a couple of times ``arp -a''. Notice the difference. Log on to any Unix system in NJIT, not afs1. Do (do not hand in): (prompt>:) nslookup afs1 (prompt>:) dig afs1 (prompt>:) dig afs1.njit.edu (prompt>:) dig argerich.njit.edu Do (hand in) Forouzan p 294 problem 28. --- 03/22 no class: spring break. Make sure to use the break to make a design for the code for project B. In project B it is (even) more important to make a design before starting to code! Play with nslookup, dig, ping, traceroute, ifconfig, netstat, arp. Do homework for after academic break! Use the spring break to redo the ``ping project''. See homework for 03/29. --- Homework for 03/29 Read Forouzan pp 305 - 343. Work on the code for project B. oooooo In the ``ping excercise'' you handed in 03/08, many students showed they do not know how to report results from an experiment. We will redo this homework for 03/29. You can use the same data you used before, or you can collect new data. You now have access to both lafite and mouton (lafite.njit.edu and mouton.njit.edu , remote access only), so you can use these if you decide to collect new data. What you do: Collect the data. Do the analysis. Document the analysis. (Explain what you do). Report the results. Unless the amount of data is too large, report the raw data in an appendix. So, in the specific case of the ping excercise: (1) Decide which pings to do. (2) Do them. For a number of ``packet sizes'', do 5 to 10 pings. Which delay do you use for each packet size? The max of the 5 or 10? The min? The mean? something else? Think about it and motivate your answer. (3) Make the plot. I assume you use a program. After all, You are a Computer Scientist! (YaaCS!). Think about how to represent points. Dots? X-s? Circles? Something else? (4) Look at plot. Is it the way the theory said it should be? If not, can you find an explanation? Is there ``noise'' (randomness) in the system? Is there a need to redo the experiment at another time of the day? (Say due to competing traffic that made delays very random)? (5) Write down the analysis. Measure the slope, make an estimate for the bandwidth. Add an appendix that shows all data (or if you have a very large amount of data, an appendix that shows a representative sample from the data). Hand in, including plot. Feel free to re-use your old data. On the other hand, if your old data was not good, feel free to collect new data. Feel free to use lafite and mouton. EVERYBODY MUST collect his/her own data! I you see ``strange things'': check whether it is reproducible. If it is, it may be very interesting! Try to find the reason. And/or, see whether the strange behavior is there all the time, or only at certain times, or only for certain hosts, etc. Be a scientist! Use a plotting routine! If you like gnuplot, feel free to use gnuplot. Otherwise, use some other software. But do not plot by hand! (YaaCS!). Hand in on Sat March 29. Optional (do not hand in): Write a script (shell script, Perl script, C script, whatever) that does the whole process: collect all data, analysis, plotting, etc, automatically, without further intervention on your part. Or at least with as little intervention as possible. So if you find you do not like the result, you can redo it (different time, different computers) spending only 90 seconds of your time. (And maybe a few minutes or a few hours of CPU time). YaaCS! oooooo Ping does not seem to work anymore from inside NJIT to outside NJIT. To do a ping excercise outside NJIT: Go to Google. Search for Ping. Find a public ping site. Ping from that site to a computer outside North America. ( ftp.eu.uu.net worked for me, but please find your own site outside North America). Do not hand in, but study the output: it is likely to appear on an exam. Traceroute does not work from inside NJIT to outside NJIT, or from outside NJIT to inside NJIT. To do a traceroute excercise: Go to Google. Search for Traceroute. Find a public traceroute site. Do traceroute from that site to a computer inside NJIT. Also, do traceroute from that site to a computer outside North America. ( ftp.eu.uu.net worked for me, but please find your own site). Do not hand in, but study the output: it is likely to may appear on an exam. Do (hand in): Forouzan p 348 problems 38, 39, 40. --- Homework for 04/05 Read Forouzan pp 353 - 367 (sections 13.1 and 13.2). Study for the second midterm. Second midterm postponed until 04/12. Work on the code for project B. Code should be done by 04/05, so you can TEST the code until 04/19. SACK (Selective Acknowledgements) is implemented as a TCP option. There are two options. One is used only in SYN packets, it is used by endpoints of a TCP connection to tell each other they understand SACK. This option has Code = 4 and Length = 2. If both endpoints understand SACK, SACK will be used. The other option is used by the endpoints in case there is a missing packet, in that case it is used to give details about what bytes have been received. This option has Code = 5, the length depends on how many ``holes'' there are in the received byte stream. Go to the IETF RFC pages, search for "SACK". You will find two RFCs. Of the later of the two, read pp 1 and 2, and as much more (in both RFCs) as needed to understand the SACK options. The following are three IP packets observed in TCPdump. Note: some lines are too long, will not print right on most printers. Verify these 3 packets are a three-way handshake for a TCP connection set-up. Obtain the values of all fields (including options) in the IP and TCP headers. Which of the two computers talking understands SACK? (both? none? one? the other?). Do not hand in. The "long line" gives a short description of the packet. Then follows the actual packet, in hexadec. A similar question WILL be asked in the second midterm. I do not know what the "5555" (0101010101010101) at the end of the second packet stands for. Guess: An error, part of the preamble of the next ethernet frame. See also IP HLEN, IP TL, TCP HLEN. Headers must be an integer times 32 bits long! I never noticed this before, but now it seems all SYN-ACKs have this strange "5555" at the end. 12:25:58.810248 maan.njit.edu.34558 > www.njit.edu.80: S 1980355430:1980355430(0) win 24820 (DF) 4500 0030 5387 4000 4006 c95d 80eb 20f3 80eb fb19 86fe 0050 7609 d366 0000 0000 7002 60f4 3389 0000 0101 0402 0204 05b4 12:25:58.810770 www.njit.edu.80 > maan.njit.edu.34558: S 870259173:870259173(0) ack 1980355431 win 8760 (DF) 4500 002c f17d 4000 fe06 6d6a 80eb fb19 80eb 20f3 0050 86fe 33df 19e5 7609 d367 6012 2238 3977 0000 0204 05b4 5555 12:25:58.810793 maan.njit.edu.34558 > www.njit.edu.80: . ack 1 win 24820 (DF) 4500 0028 5388 4000 4006 c964 80eb 20f3 80eb fb19 86fe 0050 7609 d367 33df 19e6 5010 60f4 1278 0000 The following is a packet observed in TCPdump. Check it is part of a TCP flow. Decode all fields, including options, in IP and TCP headers. What is oak telling maan about missing bytes? Do not hand in. A similar question WILL be asked in the second midterm. 12:26:00.906282 oak.njit.edu.nfsd > maan.njit.edu.1023: . ack 173788067 win 24820 (DF) 4500 0034 68c2 4000 3f06 e404 80eb cc33 80eb 20f3 0801 03ff 45a0 ab28 0a5b cba3 8010 60f4 a6ce 0000 0101 050a 0a5b cd6f 0a5b ce0f Do (and hand in) Forouzan p 349 problem 41. Forouzan p 402 problems 59, 61. --- Homework for 04/12 Read Forouzan pp 367 - 395. Second Midterm: Cumulative! EVERYTHING up to now: Classnotes up to 04/05, assigned reading and homework up to 04/12. --- Homework for 04/19 Read Forouzan pp 405 - 423. Hand in the cleanly coded, well-tested code for project B. BEFORE 04/19/2003 13:00. --- Homework for 04/26 Read Forouzan pp 787 - 821. --- Homework for 05/03 To be assigned. --- 05/10: Final Exam. Cumulative! Everything covered, read, or done until now! --- Homework for the summer of 2003: Read the rest of Forouzan. In particular: Ch 15, Ch 18, Ch 20, Ch 22, Ch 24, Ch 25, Ch 27, Ch 28, Ch 29, Ch 30. But these are hardly more important than the ones I did not mention. Own your own copy of Forouzan's book!