The goal of this assignment is to familiarize yourself with (or remind yourself of) the fundamentals of TCP/IP and Internet architecture.
Read the following:
- required: Kerrisk Chapter 58 "Sockets: Fundamentals of TCP/IP Networks, all sections (Safari link) Be sure to read the instructions for using safari on the course information page.
- optional: Cerf, V., and Kahn, R., A Protocol for Packet Network Intercommunication, IEEE Transactions on Communications, Vol. COM-22, No. 5 May 1975 (http://www.cs.princeton.edu/courses/archive/fall06/cos561/papers/cerf74.pdf)
The Kerrisk chapter is required reading.
The Cerf/Kahn paper is the original one in which they proposed the design of TCP/IP. It is provided not so that you will understand or memorize all the details, many of which have changed anyway, but to give a sense of what the designers were thinking about when they created TCP/IP. Some parts of the paper are difficult or obscure, and it's not intended that you burn hours trying to understand the parts that don't come easily. Indeed, one very important skill in starting to read reasearch papers is to learn how to get highlights and as many details as you can during an initial reading. Treat this as an exercise in doing that.
No submission required
There are no questions for you to answer for this assignment, just the reading. The information in Kerrisk will be important throughout the course, and may be covered on quizzes or tests.
Future work and reading out of order
Chapter 58 stands pretty well on its own, but it's part of a larger sequence in Kerrisk that introduces Unix/Linux sockets and their use for a variety of purposes. Sooner or later, we will likely get to Chapter 56, which gives an overview of the socket API, and Chapter 59, which covers programming of sockets specifically for TCP/IP (Chapter 57 on Unix domain sockets is more or less irrelevant for our course.)
So, some students may prefer to just start by at least skimming Chapter 56 and/or going on to Chapter 59, but neither is required at this time. Also, if you do this extra reading, keep in mind that we will mainly use the older IPV4 style APIs covered in 59.13 (and described as obsolete :-)), which are easier and plenty good for our purposes. So, we won't mess with getAddrInfo and friends. If you write production level code, then you really should learn and use those new interfaces; for classroom purposes, the old ones have better cost/benefit.