1. Two primary goals: low-effort interconnection and generality. The phone network was designed for exactly one application: phone calls, and didn't emphasize low-effort interconnection. This was mostly because the phone network was owned and operated by one major entity (AT&T). 2. Packet switching because during the 50% of the time that you application is dormant, you can use the network's links to transmit data belonging to other applications. This leverages the fact that not all applications want to send data at the same time (statistical multiplexing). 3. Circuit switching. For an application like audio, the throughput requirements are much less demanding, but it's more important that you have predictability (i.e., no queueing). Circuit switching provides this predictability by guaranteeing that if you're using a circuit on the network, no one else is. 4. Application layer: DNS lookup to find IP address from domain name. Getting data from the application (such as the search query typed into the browser) and sending it over packets using a socket API call. Transport layer: Connection establishment (using accept/listen) and reliable and in-order delivery of HTML/CSS/JavaScript pages. Routing layer: At the end hosts, the routing layer inserts the destination address into packets and sends it to the default router. Every router then consults its forwarding table to determine who to forward the packet to next (i.e., the next hop) until it eventually reaches the destination. Link layer: Once a laptop/desktops knows its first/default router, it needs to actually get packets to this first/default router using either WiFi or Ethernet. The link layer handles this. Physical layer: For the link layer to work, you need a cable or antenna, and a way to translate bits into voltages on a wire/antenna. This is the domain of the physical layer. 5. Stop And Wait: 1/RTT_min packets per second. Sliding Window: W/RTT_min packets per second. Multiply the two quantities by packet size if you want the answer in bits per second. 6. It's not valid in Stop And Wait because the sender will never move on to transmitting the 5, 6, and 7th packet (and hence the receiver won't receive the 7th packet) until the sender receives an ACK for the 5th one. It's valid in Sliding Window assuming a window size that is at least 5 packets. The reason for this is that right before 12 is transmitted at the sender, the sender has not yet received ACKs for 5, 6, 9, and 11. So the sender's window must be at least 5: 4 to account for the 4 packets (5, 6, 9, and 11) that haven't yet been received and hence ACKed and 1 more to allow the packet with sequence number 12 to be transmitted. 7. Everyone uses a large window: congestion collapse. Everyone uses a small window: underutilization if the number of people is small. Eventually, this will also lead to congestion collapse but at a later point because each person's individual window is small. 8. Any of the examples from section 3, 4, or 5 from lec6.pdf is a valid answer. 9. Look at question 14 in https://cs.nyu.edu/courses/fall18/CSCI-UA.0480-009/exams/midterm_solutions.pdf 10. For a small file, the fetch time is dominated mostly by the minimum round-trip time because the file fits into a packet. So it's the time taken to send and receive a single packet. For a large file, the fetch time is dominated by the transmission delay (there are thousands of packets to be transmitted), which is in turn dominated by capacity. So for a small file, I would bring the server closer to the user. For a large file, I would add more capacity to the client-to-server link. 11. See Section 5 of lec9.pdf for one example for what happens when a BGP advertisement is false. We could ask similar questions inspired by the YoutTube outage discussed in section 5. 12. Won't be tested. 13. Hierarchy allows DNS to scale to a large number of domain names (and corresponding IP addresses). For instance, the TLD server for the .com TLD is only responsible for domain names that end with .com. Similarly, a TLD server for the .edu TLD is only responsible for domain names that end with .edu. In other words, hierarchy creates a division of responsibility where each entity is only responsible for a portion of domain names. 14. Domain Name System, Public vs. Private IP addresses. 15. A large alpha makes the timeout calculation converge faster to a new set of RTT values, while a small alpha is more sluggish.