A few focus questions as you study for the midterm.
What exactly happens when a userspace program calls the
recv() system calls? Think about how data moves through the system,
including how that data interacts with buffers in the application and
the operating system.
What is the relationship between the
Layering–what is the role of the transport protocol? The network protocol? Application-layer protocols (such as HTTP)? How does one layer interact with another?
What is a subnet mask for? What is the relationship between a given subnet mask and the size of the resulting network? How many hosts can a given network support?
Can you reason about the performance of a protocol given information about the propagation delay, round-trip time, link bandwidth, etc?
What are route advertisements? What does longest-prefix matching mean?
When considering framing and parsing of application-layer protocols, what are the ways that message boundaries can be conveyed? Which of those are used by HTTP?
What are the different calling semantics of RPC protocols?
When sending parameters to an RPC server as part of invoking a remote procedure, how exactly do the parameters get sent over the network? Are there any differences between the types of parameters (and return values) that RPC can support as compared to local procedure calls? For example, could I pass a linked list as an RPC call parameter? Why or why not?
How does DNS work? What is the difference between recursive and iterative DNS resolution?