Bachelor in Computer Science and Engineering (LEI) | 3rd Year - 1st Semester
This repository contains the practical assignments and laboratory projects developed for the Computer Networks (Redes de Computadores) course at the Faculty of Sciences and Technology of the NOVA University of Lisbon (NOVA FCT).
- TomΓ‘s Alves (Student No. 68681)
- Miguel Carmo (Student No. 65871)
The Computer Networks course introduces the fundamental concepts of computer networking and the Internet. The curriculum is heavily based on the TCP/IP protocol suite, covering the application, transport, network, and link layers.
The repository is organized into three main practical assignments (TPCs), each exploring different networking layers and concepts:
- Objective: Implement a reliable file transfer protocol on top of the unreliable User Datagram Protocol (UDP).
- Key Features:
- Custom
sender.pyandreceiver.pyimplementation mimicking a Sliding Window / Go-Back-N protocol. - Handling packet loss (simulated using Python's
random), timeouts, and retransmissions. - Ensuring ordered delivery of data blocks using sequence numbers and ACKs.
- Custom
- Documentation:
- Objective: Design and configure a virtual network topology using the Kathara network emulation tool.
- Key Features:
- Network topology configuration via
lab.conf, setting up multiple routers (r1tor4) and hosts (h1toh6) across different collision domains (netAtonetF). - IP addressing and subnetting.
- Configuration of static routing tables (
ip route add) and IP forwarding (sysctl net.ipv4.ip_forward=1) via.startupscripts. - Packet capture analysis using
.pcapfiles.
- Network topology configuration via
- Documentation:
- Objective: Understand and implement the mechanics of modern HTTP-based media streaming (similar to DASH/HLS).
- Key Features:
- Parsing a media
manifest.txtto extract track metadata, codecs, and segment offsets (programA.py). - Utilizing HTTP
Range: bytes=X-Yheaders to download specific media segments (programB.py). - Implementing a local streaming proxy (
proxy.py) using multithreading andqueueto fetch media chunks via HTTP and stream them to a local media player (e.g., VLC) via a TCP socket.
- Parsing a media
- Documentation:
- Transport Layer: Practical understanding of TCP vs. UDP, and the mechanisms required to build reliability (ACKs, window sizes, timeouts, sequence numbers) over an unreliable channel.
- Network Layer: IP addressing, subnetting (CIDR), and static routing table configuration.
- Application Layer: Interacting with HTTP APIs, constructing HTTP headers (Range requests), and socket programming in Python.
- Network Emulation & Analysis: Using Kathara (Docker-based network emulator) to deploy virtual networks and Wireshark to analyze
.pcappacket traces.
Copyright Β© 2026 Alvesss04. All Rights Reserved.