Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Computer Networks (RC) - NOVA FCT 🌐

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).

✍️ Authors

  • TomΓ‘s Alves (Student No. 68681)
  • Miguel Carmo (Student No. 65871)

πŸ“Œ About the Course and Projects

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:

1. Assignment 2 (TPC2): Reliable Data Transfer over UDP πŸ“¦

  • Objective: Implement a reliable file transfer protocol on top of the unreliable User Datagram Protocol (UDP).
  • Key Features:
    • Custom sender.py and receiver.py implementation 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.
  • Documentation:

2. Assignment 3 (TPC3): Network Emulation & Static Routing πŸ–§

  • 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 (r1 to r4) and hosts (h1 to h6) across different collision domains (netA to netF).
    • IP addressing and subnetting.
    • Configuration of static routing tables (ip route add) and IP forwarding (sysctl net.ipv4.ip_forward=1) via .startup scripts.
    • Packet capture analysis using .pcap files.
  • Documentation:

3. Assignment 4 (TPC4): HTTP Media Streaming Proxy 🎬

  • Objective: Understand and implement the mechanics of modern HTTP-based media streaming (similar to DASH/HLS).
  • Key Features:
    • Parsing a media manifest.txt to extract track metadata, codecs, and segment offsets (programA.py).
    • Utilizing HTTP Range: bytes=X-Y headers to download specific media segments (programB.py).
    • Implementing a local streaming proxy (proxy.py) using multithreading and queue to fetch media chunks via HTTP and stream them to a local media player (e.g., VLC) via a TCP socket.
  • Documentation:

🧠 Concepts and Acquired Skills

  • 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 .pcap packet traces.

πŸ“„ License

Copyright Β© 2026 Alvesss04. All Rights Reserved.

About

FCT NOVA - RC - Computer Networks (Redes de Computadores)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages