Système et Réseaux : TP8
Couche transport
Système et Réseaux : TP8
Couche transport
avril 2024 — Pierre Rousselin (conseils technique Thierry Monteil)
Exercice 1 : Les ports
1. Afficher le contenu du fichier /etc/services pour répondre aux questions suivantes.
a) Quels sont les ports « bien connus » ?
b) Quels sont les ports privés, utilisables comme ports éphémères ?
c) Quels ports sont associés aux protocoles ssh, http, dns ? Pour sélectionner les lignes dont la
première colonne est blah, on peut utiliser
$ awk '$1 == "blah"' /etc/services
2. a) Afficher la liste des sockets TCP, les ports associés et les processus avec la commande ss -tp.
Voir les lignes associées à votre navigateur web (s’il n’est pas ouvert, ouvrez-le).
b) Certains des ports affichés sont des well-known ports et leur numéro est remplacé par un nom
dans la sortie de la commande. Chercher rapidement dans le fichier /etc/services les numéros
associés et les noms complets des protocoles. Se documenter brièvement sur le web sur ceux-ci
pour savoir à quoi ils servent.
c) Les ports utilisés par votre navigateur sont-ils bien connus ?
d) Si vous ouvrez deux onglets différents vers le même serveur web, combien de sockets sont créées ?
3. À l’aide des commandes dig et nmap voir quels sont les sockets en écoute (et les ports associés) sur
ent.univ-paris13.fr. À quels services correspondent-ils ?
––- * ––-
Exercice 2 : socat sur une seule machine
1. Ouvrir deux terminaux. Dans le premier terminal, lancer la commande
$ socat -dd udp-recv:2222 -
Dans le second,
$ socat -dd - udp-send:127.0.0.1:2222
Puis entrer des messages. Voir sur le second terminal. Quel port éphémère est utilisé par le processus
qui envoie des datagrammes ?
2. À quoi correspond l’adresse 127.0.0.1 ? Essayer d’envoyer un datagramme à 127.42.42.42 sur le
port 2222. Commenter.
3. En fait, toutes les adresses 127.0.0.1/8 sont des adresses de loopback et le processus socat qui
reçoit est configuré pour recevoir les datagrammes UDP sur le port 2222, quelle que soit l’adresse par
laquelle il les reçoit, ce qui est presque toujours ce que l’on veut et un bon comportement par défaut.
On dit qu’on a bind (attaché) l’entrée du processus au port 2222 et à l’adresse 0.0.0.0, c’est-à-dire
tout ce qui arrive.
Ceci dit, on va s’amuser un peu avec les adresses de loopback : on peut bind plus précisément les
entrées en restreignant les adresses de destinations.
Tuer tous les processus socat, puis en créer deux nouveaux qui reçoivent des datagrammes, le premier
avec la commande
$ socat -dd udp-recv:2222,bind=127.42.42.42 -
Le second avec
$ socat -dd udp-recv:2222,bind=127.1.1.1 -
En utilisant des nouvelles commandes socat,
a) envoyer un datagramme au premier (vérifier que le second n’a rien reçu) ;
b) envoyer un datagramme au second (vérifier que le premier n’a rien reçu). 1
1. Je voulais aussi faire du broadcast mais visiblement ce n’est pas possible en loopback.
L2 Informatique et DL — 2024 – 2025 1 Université Sorbonne Paris Nord
Système et Réseaux : TP8
Couche transport
4. Que donne la sortie de socat udp-recv:25 - ? Pourquoi ?
5. Que se passe-t-il si vous lancez deux fois la commande
$ socat -dd udp-recv:2222 -
––- * ––-
Exercice 3 : socat, c’est mieux à plusieurs
1. (sur deux hôtes) Convenez d’un numéro de port pour le processus qui reçoit le premier datagramme.
Puis l’un d’entre vous lance avec socat un processus qui reçoit des datagrammes sur ce port et
l’autre lui en envoie.
Pour le moment vous ne pouvez pas vous répondre, c’est le moment idéal pour lui dire tout ce que vous avez sur le cœur sans qu’il/elle puisse
vous interrompre !
Qu’est-ce qui doit être connu à l’avance pour que l’envoi du premier datagramme puisse avoir lieu ?
2. (sur deux hôtes) La commande socat permet en fait des échanges dans les deux directions.
Un premier processus attend (écoute) un premier message :
$ socat -dd udp-listen:port -
et le deuxième lui envoie un message et les deux processus seront faussement connectés :
$ socat -dd - udp:adresse:port
où port et adresse sont à remplacer convenablement.
Vous pouvez ensuite envoyer et recevoir des messages des deux côtés.
3. (sur au moins trois hôtes) Au moins deux processus sur au moins deux machines reçoivent des
datagrammes sur le même port UDP.
D’autres processus envoient des datagrammes en broadcast sur ce réseau avec :
$ socat -dd - udp-send:adresse:port,broadcast
où adresse est à remplacer par l’adresse de broadcast du réseau et port par celui qui a été choisi.
––- * ––-
L2 Informatique et DL — 2024 – 2025 2 Université Sorbonne Paris Nord