This repository contains my project work from the course IN3230 – Network and Communication Security at the University of Oslo (UiO).
The course provides a fundamental introduction to how modern communication systems work, including addressing, routing, flow control, reliability, error handling, and synchronization. The projects in this repository focus on low-level networking concepts implemented in C, tested in controlled network environments.
This repository contains two major projects based on the implementation of a Minimal Internet Protocol (MIP) stack and routing mechanisms, developed and tested using Mininet.
Each project includes source code, documentation, and reports describing design choices, protocol behavior, and testing results.
| Project | Description | Browse | Commit History |
|---|---|---|---|
| Project 1 | Minimal Internet Protocol (MIP) | IP_Project | Commits |
| Project 2 | MIP with Routing | IP_Rouring_Project | Commits |
This project implements a Minimal Internet Protocol (MIP) in C, providing a simplified model of IP-style packet communication.
Key features:
- Custom packet format and addressing
- Packet forwarding between nodes
- Basic reliability and error handling
- Communication between hosts in a virtual network
- Extensive testing using Mininet
The goal of this project is to understand how fundamental network-layer functionality can be implemented from scratch.
This project extends the MIP implementation with dynamic routing functionality.
Key features:
- Routing tables
- Distance-vector routing
- Poison reverse to prevent routing loops
- Multi-hop packet forwarding
- Failure handling and route updates
The project demonstrates how routing protocols work internally and how network topologies adapt to changes.
- Course name: Networks
- Course code: IN3230
- Institution: University of Oslo (UiO)
- Addressing and packet forwarding
- Routing and congestion control
- Reliability and error handling
- Synchronization and flow control
- Wired and wireless communication
- Network architectures and protocols
- Development of communicating programs
After completing this course and the projects in this repository, I am able to:
- Explain how packets are routed through a network
- Implement basic communication protocols in C
- Develop and test networked programs
- Understand routing algorithms and loop prevention mechanisms
- Use virtual network environments such as Mininet for testing
- Reason about reliability, congestion, and fault handling in networks
- Language: C
- Network simulation: Mininet
- Protocols: Custom MIP implementation
- Routing: Distance Vector, Poison Reverse
- Version control: Git and GitHub
- Documentation: Markdown and in-code comments
This repository demonstrates:
- Practical understanding of networking fundamentals
- Ability to implement low-level network protocols
- Structured and well-documented C code
- Experience with network simulation and testing
- A solid foundation for further work in networking and security
Philip Elias Fleischer Bachelor’s student in Informatics: Programming and System Architecture University of Oslo (UiO)