Posts

Showing posts from October, 2025

CST 311 Computer Networks - Week 8

Week 8 Overview: This final week combined advanced routing concepts with hands-on work through Programming Assignment 4, which expanded our network simulation and programming skills. The first part involved creating a custom Mininet network with multiple routers, switches, and hosts, manually configuring IP addresses, static routes, and verifying full connectivity using pingall and dump commands. This deepened our understanding of routing tables and network configuration. The second part extended our TCP chat service from the previous assignment into a group chat system supporting three clients simultaneously. We integrated this chat setup into the Mininet topology so each host could communicate with the server in real time. I also produced a narrated demo video showing message exchange and graceful exits. This week tied everything together: networking theory, routing logic, and socket programming, rounding out the course with a strong mix of conceptual and practical skills.

CST 311 Computer Networks - Week 7

Week 7 Overview: This week shifted focus to the control plane of the network layer, which governs how data paths are chosen and managed. We studied routing algorithms, specifically link-state (Dijkstra) and distance-vector (Bellman-Ford) methods, learning how routers exchange information and compute optimal paths. The lectures and practice problems helped visualize how these algorithms dynamically adapt to network changes. We also learned about intra-domain routing (like OSPF) and inter-domain routing (like BGP), which manage routing within and between networks. The quizzes and assignments strengthened our understanding of route calculation, convergence, and how control-plane logic differs from data forwarding in the data plane. This week emphasized how routers “think,” not just how they move packets.

CST 311 Computer Networks - Week 6

 Week 6 Overview: This week wrapped up the data plane and focused heavily on Programming Assignment 3, where we created a TCP-based chat service. We built both the server and client programs to enable two-way communication over reliable TCP connections. The project introduced multithreading, allowing simultaneous message sending and receiving between multiple clients, which made the chat feel more realistic. Everything was tested in Mininet with three hosts simulating a small network setup. For extra credit, I extended the program by adding username functionality, letting users identify themselves instead of generic client names, and implemented offline messaging, where messages sent before another client connects are stored and delivered once they join. These additions made the chat system more dynamic and closer to real-world applications. This week really tied together everything about TCP reliability, sockets, and concurrent programming in a practical, hands-on way.

CST 311 Computer Networks - Week 5

 Week 5 Overview: This week introduced the network layer’s data plane, focusing on how packets are forwarded from source to destination across networks. We studied the role of routers, packet switching, and datagram forwarding, as well as the structure of the IP header and how IP addressing works. A major topic was subnetting, learning how to divide IP address spaces efficiently and NAT (Network Address Translation), which allows multiple private devices to share one public IP. The Wireshark IP and NAT labs gave us hands-on experience capturing and analyzing packets to see how IP addresses change through routers and NAT devices. Through the quizzes and practice problems, we became more confident reading IP headers, identifying subnet masks, and understanding how routing decisions are made inside the network layer.

CST 311 Computer Networks - Week 4

Week 4 Overview: This week expanded on TCP and UDP concepts through both theory and programming practice. We learned how TCP ensures reliable communication using sequence numbers, acknowledgments, retransmissions, and congestion control. These ideas connected directly to Programming Assignment 2, which focused on developing two UDP-based client-server applications in Python. In Part 1, we built a UDP Ping Service to simulate sending and receiving packets while handling timeouts and calculating round-trip times. The server introduced artificial packet loss to show the unreliability of UDP, while the client measured packet loss rates and RTT statistics. In Part 2, we created a UDP Heartbeat Service, where the client periodically sent heartbeat messages with sequence numbers and timestamps. The server logged missing or received messages to track reliability. Running both applications in Mininet reinforced how real-world networking handles packet transmission, timing, and loss across unrel...

CST 311 Computer Networks - Week 3

Week 3 Overview: This week introduced the transport layer, focusing on how data moves between applications running on different hosts. We covered the core concepts of multiplexing and demultiplexing, which allow multiple applications to share the same network connection while keeping data organized. The lectures also went over UDP, the connectionless protocol known for its simplicity and speed, but lack of reliability. Through quizzes and examples, we learned how UDP works in practice, including checksum calculations for error detection. The Wireshark TCP lab previewed what we’d dive deeper into next week, giving us a look at how TCP segments appear in real network captures. Overall, this week built a strong understanding of how transport protocols serve as the middle layer between applications and the network core.

CST 311 Computer Networks - Week 2

Week 2 Overview: This week focused on the application layer, where user-level network programs operate. We learned the principles behind network applications, like how clients and servers communicate through sockets using established protocols. The lectures went deep into HTTP, explaining how web browsers and servers exchange data through request and response messages, covering topics like persistent vs non-persistent connections and status codes. We also explored the Domain Name System (DNS), understanding how human-readable domain names are translated into IP addresses through hierarchical servers. The labs were very hands-on: in Wireshark HTTP, we analyzed browser-server communication, while in Wireshark DNS, we captured and examined DNS query and response packets in real time. Together, this week tied theory and practice, showing how core Internet applications actually function behind the scenes. A major part of this week was Programming Assignment 1, where we practiced socket prog...

CST 311 Computer Networks - Week 1

Week 1 Overview:  This week introduced the fundamentals of computer networking and how the Internet actually works. We started by defining what the Internet is and understanding protocols as the rules that allow systems to communicate. The lectures explained the network edge, the devices and access networks that connect users, and the physical media that carry data. We also explored the network core, comparing packet switching and circuit switching, and how data moves through different layers of the Internet’s structure. A key focus was on performance concepts like delay, loss, and throughput, which affect how efficiently information travels. The chapter closed with an overview of protocol layering and Internet service models, setting the stage for everything else in the course. Lastly, we touched on network security and how vulnerabilities can be exploited. The lab with Wireshark gave hands-on experience observing real network traffic.