Assignments
Assignments
HW 1 (due 10/03):
Wireshark Lab 01: A packet sniffer is the primary tool used to observe the messages exchanged between running protocol entities. As its name suggests, a packet sniffer captures (“sniffs”) the messages sent to and from your computer, and can typically store or display the contents of the various protocol fields within these captured packets. In this lab, you will begin working with Wireshark, a widely used packet sniffer that allows us to capture and inspect packet-level data. We will use Wireshark to explore several aspects of the HTTP protocol: the basic GET/response interaction, the structure of HTTP messages, retrieving HTML files with embedded objects, and HTTP authentication and security. There are four problems (Q1–Q4) you need to complete for this homework. Note that Q0 is only a practice exercise designed to help you get familiar with running Wireshark and does not need to be submitted.
Programming Assignment 01: The goal of this project is to give you some hands-on practice with both Python and the basics of how two programs can talk to each other over a network using Socket Programming. Don’t worry if this is your first time writing socket code, we’ll build things up step by step. You’ll be working with starter files that guide you through each task, and by the end you’ll have two separate programs: a server and a client. These two will be able to connect, send messages back and forth, and process text in simple but interesting ways. We’ll begin with a simple first step: when a client connects to the server, the server will send a short greeting message to confirm the connection. From there, you’ll expand the programs into an echo service, then add a transformation that flips strings around, and finally, you’ll hook everything up to files so you can send and save multiple messages automatically. Along the way, you’ll pick up important networking concepts like ports, connections, message framing, and how to handle input/output with Python.
HW 2 (due 10/24):
Wireshark Lab 02: In this lab, you will continue working with Wireshark to analyze the transport layer protocols that support the Internet: UDP & TCP. Recall that UDP is a simple and connectionless protocol, while TCP provides reliable, connection-oriented data transfer. By capturing and inspecting packets with Wireshark, you will explore how UDP is used for DNS lookups, how TCP establishes connections through the three-way handshake, how TCP estimates round-trip times, and how flow control and congestion control affect performance. There are four problems (Q1–Q4) you need to complete for this homework. Note that there is no Q0 in this lab.
Programming Assignment 02: In this project, you will create your own small-scale DNS (domain name system). The system includes a client, a local server, top-level domain servers, a root server, and an authoritative server. These servers will be able to run on different iLab machines. You will implement the iterative resolution with a cache and log requests/responses/resolutions in output files. Just like the last project, this one will also use Python. Your experience of socket programming from the previous project will come in handy.
HW 3 (due 11/14):
Wireshark Lab 03: In this lab, you will explore the network layer, focusing on the Internet Protocol (IP) and Internet Control Message Protocol (ICMP). You will examine how packets are addressed, delivered, and diagnosed, analyze key IP fields such as source and destination addresses, TTL, and fragmentation, and capture ICMP messages like Echo Request/Reply, Time Exceeded, and Destination Unreachable to understand how ICMP supports error reporting and network diagnostics.
Programming Assignment 03: In project 3, you will implement a reliable sender using an unreliable UDP socket. Specifically, you will implement reliability based on stop-and-wait and cumulative-ACK-based selective repeat ARQ. We will test reliability by checking that the receiver’s version of the file matches exactly with the sender’s version of the file. There are a few samples provided in the project archive for your testing and reference.
HW 4 (due 12/08):
Wireshark Lab 04: You will use Wireshark to explore the link layer of the Internet protocol stack by analyzing Ethernet and ARP behavior in a provided packet trace. This assignment examines how devices communicate on a local network using MAC addresses, EtherType fields, and ARP-based IP-to-MAC resolution. By inspecting Ethernet II headers, broadcast versus unicast delivery, ARP Requests and Replies, and the placement of upper-layer protocol data inside frames, you will gain hands-on experience with the mechanisms that allow IP packets to reach their next-hop destination on a LAN.
Programming Assignment 4: You will implement core networking concepts spanning the Transport, Network, and Link layers. The system includes a TCP congestion control simulator (modeling slow start, congestion avoidance, and loss recovery), routing algorithms (Dijkstra's link-state and Bellman-Ford distance vector), and link layer protocols (Slotted ALOHA for medium access control and CRC for error detection). These components demonstrate how real networks manage data transmission rates, compute optimal paths, and ensure data integrity. Using deterministic and probabilistic simulations, you will analyze congestion window behavior over time and verify error detection mechanisms through visualizations and computed metrics. As with earlier assignments, Python will be the programming language used. This assignment will be completed in Google Colab, and all the concepts you have learned in class will help you throughout.