Advanced networks

COM-407

Lab 3 instructions Abstract Lab 3 is both a progra...

This page is part of the content downloaded from Lab 3 instructions Abstract Lab 3 is both a progra... on Sunday, 25 January 2026, 04:00. Note that some content and any files larger than 50 MB are not downloaded.

Description

Lab 3 instructions

Abstract

Lab 3 is both a programming lab and an analysis lab. On one hand, you will program client/server applications, you will apprehend TCP/IP principles from the programmer’s point of view with the notion of sockets. You will experiment different protocols and ways of communication (TCP, UDP, unicast, multicast). Furthermore, you will see how Transport Layer Security (TLS) is used to secure TCP connections. On the other hand, you will analyze traffic traces with Wireshark to understand the mechanisms hidden from the programmer’s perspective. It will highlight some fundamental mechanisms of UDP, TCP (packetisation, acknowledgment,...) and TLS (secure handshake, certificates, ...). The grade for this lab depends both on your score in the Moodle quizzes and on your score in the script
scoring system.

ORGANIZATION OF THE LAB

If you have no prior experience with programming, you should consider doing
• part 1 and 2 the first week,
• parts 3, 4 and 5 the second week.
• You may safely skip part 6 (which is optional and for bonus).
If you have some experience with programming, you may
• skip part 1.1 (which is not graded),
• do parts 1.2, 2, 3, 4 and 5
• and do part 6 if time permits (it is optional and for bonus).

In each part, you will be required:
• to DESIGN one (or several) scripts according to the requirements and to TEST them against the servers that we provide,
• to ANALYZE the behavior of the application by means of prints, packet captures, bash commands, and to ANSWER quizzes within Moodle,
• to SUBMIT your script(s) for scoring.

ENVIRONMENT

For this lab, you must create your scripts using Python3. This lab has been designed to be performed on the Mininet VM on the VDI platform; however, you can also do it on your own machine, provided you are connected to EPFL wifi or on EPFL VPN.
For this lab, we need to install a few additional packages on your local machine or local virtual machine (this step must be repeated if you restart the VM). These packages are already installed on the Mininet VM on the VDI platform. Open a terminal and type:

sudo apt install manpages-dev python3-pip idle openssl
pip3 install websocket-client

Useful links for socket programming with Python:
• Python documentation on socket: http://docs.python.org/3.7/library/socket.html
• The Python socket documentation is not complete. It is often useful to look at the Unix documentation of the corresponding functions. In particular, the socket options are described by typing man 7 socket, man 7 ip or man 7 ipv6 in a terminal. These pages are also available directly on the internet, for example http://linux.die.net/man/7/ipv6.

To fetch the required materials for this lab, open a terminal on your Mininet VM and run:
git clone https://github.com/nal-epfl/Advanced-Networking-Labs.git
All the scripts for this lab are located in the 

Lab 3/
 directory of the cloned repository.

PREPARING YOUR SCRIPTS FOR SCORING

The script scoring system is running on https://icvm0079.xaas.epfl.ch/. It is accessible from within EPFL (EPFL Wi-Fi) or via the EPFL VPN only.
To pass the tests of the scoring system, it is essential that you respect the prototype of each script, i.e., the command line specification used to launch it. You have unlimited attempts, and only the best score for each part will be kept. However, as the scoring may take some time, we recommend that you thoroughly test your script before submitting it to the system.

You can, of course, discuss with other students, but plagiarism will not be tolerated. Your scripts will be
processed by JPlag https://github.com/jplag/JPlag to detect similarities with other students’ scripts. The TA team will always make the final decision after a manual inspection of the scripts with high similarity. Do not write any personal data in your Python scripts: Neither your name, nor your email address, nor your SCIPER number.

The system closes on Thursday, 20 November 2025, 03:59 AM Lausanne local time. All attempts submitted before the deadline will be processed.