This repository was created to keep and document our work during networking labs. I (Manuel Rocca) did these labs with Matteo Morbée within the ULB college context for the INFO-F303 course, also called "Réseaux, information et Communication" in french. This means we had directives given to us that we had to follow in order to respond to questions linked to the theoretical course.
The directives were made by ULBs staff (PhD students, teachers, ...; their names are written at the top of each directive document) as well as the lab setups (files used to run the VMs to simulate a network). Our work on these labs consists of reports we made for each part that answer the asked questions (note: the questions are in english but all of our answers are written in french) by using Wireshark to catch packets going through the network.
Our reports aren't perfect. This is in part due to the fact that they were done within a time limit of two hours. If some parts feel rushed, it is normal. Even though we did not have the time to analyze everything in perfect detail, the time constraints brings some interesting things to the table:
- knowledge applied on the fly
- group management and communication (who does what and how to communicate the results efficiently)
- stress management (it was graded, hence the stress to perform)
From the fourth lab, we had an optional homework to do during the week-end. Those were made with more attention as we had more time on our hands.
Here is a small introduction to each topic covered in each lab:
| Lab number | Topic |
|---|---|
| 1 | Introduction to Netkit and Virtual Machines and DNS |
| 2 | Basic HTTP requests and TCP handshake |
| 3 | TCP flow and congestion control and error recovery |
| 4 | IP protocol, masks, collision domains, subnets |
| 5 | Routing protocols: RIP and OSPF |
| 6 | Frames and Spanning Tree Protocol |
Each concept will be detailed in each labs README file. Feel free to look around !
Each lab contains two subdirectories:
- doc: containing the directives and reports of the lab
- lab: containing the programs to run the VMs (made by ULB staff)
Here is the structure of this repository's directories:
.
├── lab1
│ ├── doc
│ └── lab1
├── lab2
│ ├── doc
│ └── lab2
├── lab3
│ ├── doc
│ └── lab3
├── lab4
│ ├── doc
│ └── lab4-jh
├── lab5
│ ├── doc
│ └── lab5-jh
├── lab6
│ ├── doc
│ └── lab6-jh
├── netkit-help.pdf
├── netkit-jh_install.sh
└── README.md
- Netkit
- Wireshark
Use the netkit installation script found on Netkits GitHub page.
For Wireshark, install it via sudo:
sudo apt install wireshark -y
We suggest trying the installation script first and then, if it doesn't work, search for a solution.
Look for Wireshark in your favourite package manager.
Use Virtual Machines.
In each lab, you can find subdirectories in which lie the config files. In a general rule of thumb, to initiate the VMs (with Netkit installed), run the following command in your bash terminal:
lstart -f # -f to start the VMs simultaneouslyAlternatively, to run a specific VM, use:
vstart <name> # where name is the VM's nameTo close the VMs properly, run:
lhaltor
vhalt <name>To stop a specific VM.
Optionally:
lcleanTo clean up memory files and avoid meaningless memory comsumption.
Finally, use:
lcrash
# or
vcrash <name>To crash VMs if an issues is encountered.