0% ont trouvé ce document utile (0 vote)
7 vues2 pages

TP Client/Serveur : Sockets TCP/UDP

Le document décrit un TP sur le développement d'applications client/serveur en utilisant des sockets et les protocoles TCP/UDP. Il inclut des instructions sur la capture de paquets avec tcpdump et wireshark, ainsi que des manipulations pour créer un client HTTP, un serveur concurrent, et des échanges de messages. Des prérequis en programmation C sont nécessaires, et un travail personnel est recommandé en plus des séances de TP.

Transféré par

ALI Ouchar Cherif
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues2 pages

TP Client/Serveur : Sockets TCP/UDP

Le document décrit un TP sur le développement d'applications client/serveur en utilisant des sockets et les protocoles TCP/UDP. Il inclut des instructions sur la capture de paquets avec tcpdump et wireshark, ainsi que des manipulations pour créer un client HTTP, un serveur concurrent, et des échanges de messages. Des prérequis en programmation C sont nécessaires, et un travail personnel est recommandé en plus des séances de TP.

Transféré par

ALI Ouchar Cherif
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ces deux outils permettent d’établir des filtres de capture de paquets de manière assez fine.

La
TP Client/Serveur – M2SRIV : Utilisation syntaxe des filtres utilisés est la même pour wireshark que pour tcpdump. Par exemple,
la commande tcpdump –i eth0 tcp dst port 53 permet de ne capturer sur
de l’interface sockets pour des l’interface eth0 que les segments TCP dont le port de destination est 53. Pour plus
d’informations, consultez la page manuelle de tcpdump.
communications TCP/UDP de type
2. Développement d’un client HTTP
client/serveur
2.1. Vérification de la présence du serveur HTTP
Le format d'une requête HTTP est le suivant :
Auteur : Olivier GLÜCK, Université Lyon 1 - la première ligne est composée d’une commande HTTP (GET/POST/HEAD/…), d’une
URL qui identifie la ressource demandée puis de la version du protocole HTTP utilisée
Objectifs - les lignes suivantes constituent l'en-tête de la requête HTTP
- utilisation de l’interface sockets - la fin de l’entête est signalée par une ligne vide
- développement d’un client HTTP - les lignes suivantes constituent le contenu de la requête qui bien souvent est vide (sauf dans
- développement et études d’une application Client/Serveur en mode connecté le cas d’une requête POST)
- développement et études d’application Client/Serveur en mode non connecté
- développement d’un serveur traitant des requêtes de plusieurs clients (mode concurrent) Voici un exemple de requête qui demande des informations sur la page d’accueil du serveur
HTTP à l’aide de la commande HEAD. La réponse du serveur se trouve à la suite de la
Pré-requis requête.
ogluck@lima:~$ telnet [Link] 80
Programmation en langage C, notions sur TCP/UDP Trying [Link]...
Connected to localhost.
NB Escape character is '^]'.
Ce TP se déroule sur une séance de 3 heures. Ce temps n’est pas suffisant pour réaliser ce qui HEAD / HTTP/1.1
est demandé. Un travail personnel conséquent est nécessaire en plus de la séance de TP. Host: localhost
Accept: */*

1. Introduction (pour vous aider !) HTTP/1.1 200 OK


- Consultez l’interface des sockets présentée en annexe. Date: Mon, 13 Nov 2017 12:31:23 GMT
Server: Apache/2.4.10 (Debian)
- Bibliographie : J.M. Rifflet – « La communication sous UNIX »
Content-Type: text/html; charset=iso-8859-1
- PENSEZ à sauvegarder vos fichiers entre chaque séance.
- Outils de capture de paquets : Connection closed by foreign host.
Vous aurez à utiliser au cours de ce TP un outil de capture de paquets (analyseur réseau). Pour ogluck@lima:~$
communiquer, les machines échangent des informations sous forme de paquets qui sont
l’unité de données échangées sur le réseau. Il est possible « d’écouter » le câble Ethernet et de Manipulation
regarder ce qui se passe quand vous lancez des commandes comme ping, rlogin, … Contactez le serveur HTTP sur le port 80 (port standard HTTP) de la machine serveur
([Link]) et effectuez une requête analogue pour vérifier que le serveur est en bon état
Un premier outil permettant d’observer le réseau s’appelle tcpdump. Pour écouter le trafic de marche. Quelle commande utilisez-vous ? Remplacez le HEAD par un GET. Que
sur l’interface eth0, il faut taper la commande tcpdump –i eth0. constatez-vous ?
Par défaut, tcpdump écoute en « promiscuous mode », c’est à dire qu’il capture et analyse
toutes les trames circulant sur le réseau même celles qui ne concernent pas la machine sur 2.2. Client HTTP en mode connecté
laquelle il tourne.
Manipulation
Un deuxième outil, un peu plus convivial que tcpdump car utilisable en mode graphique
Ecrire un programme client en mode connecté qui lit au clavier une requête HTTP et affiche
avec un affichage plus lisible, est l’utilitaire wireshark. N’oubliez pas de cocher la réponse du serveur.
« Update list of packets in real time ».
Manipulation et questions

2
Une fois que votre programme fonctionne correctement, regardez avec un outil de capture de
paquets les messages HTTP, les segments TCP et les datagrammes IP échangés au cours
5. Serveur en mode concurrent
d’un échange Client/Serveur. Comment s’établit la connexion au niveau HTTP et au niveau Manipulation
TCP ? Qui décide de fermer la connexion ? Quand ? Quels sont les ports utilisés par le client
et le serveur ? Dessinez un chronogramme des échanges observés. Transformez le serveur en mode connecté écrit précédemment (avec le sleep) pour qu’il
Refaites la même capture en remplaçant votre client HTTP par celui de la question 2.1. Que puisse répondre à plusieurs clients simultanément (serveur mono protocole, mono service en
constatez-vous ? Expliquez ! mode concurrent). Vous pourrez vous aider des exercices vus en cours. Mettez en place et
décrivez un test permettant de constater que les multiples requêtes clientes sont bien traitées
en parallèle. Que constatez-vous par rapport à l’écoulement du temps si le nombre de clients
3. Transfert de messages en mode connecté est important ?
Manipulation Manipulation
Ecrire un programme Client/Serveur qui transfère des messages en mode connecté (TCP) Transformez maintenant le serveur afin qu’il puisse répondre à trois services simultanément
entre deux stations selon le schéma ci-dessous. La station 2 doit envoyer 60 fois l’heure (serveur mono protocole, multi services en mode concurrent).
courante à la station 1. Le serveur pourra conserver le service initial et proposer de nouveaux services de votre choix
(exécution d’une commande distante par exemple pour connaître le nombre de processus qui
Manipulation et questions tournent sur le serveur, transfert de fichiers, …). Mettez en place une procédure de test
- Comptez sur le client et sur le serveur le nombre de messages échangés. Refaites le même permettant de vérifier que deux requêtes clientes pour un service distinct sont bien traitées en
comptage en ajoutant sur le serveur un délai d’environ une seconde entre chaque message parallèle.
(sleep). Que constatez-vous ? Y a t-il des pertes de messages ?
- Regardez avec wireshark les messages échangés. Les segments TCP envoyés
correspondent t-ils exactement aux écritures que votre programme fait sur la socket ?
- Que se passe t-il si vous débranchez le câble réseau reliant le client et le serveur ? Même
question si vous débranchez puis rebranchez rapidement le câble. ?
- Pouvez-vous avec votre implémentation actuelle servir plusieurs clients ? Si oui, peuvent-ils
être servis simultanément ? Lancez simultanément un nombre suffisant de clients pour remplir
la file des connexions pendantes du serveur. Que se passe t-il si vous lancez alors un client
supplémentaire alors que la file est pleine ?

4. Transfert de messages en mode non connecté


Manipulation
Ecrivez une nouvelle version du programme précédant en mode non connecté (UDP). Refaites
les manipulations demandées et répondez de nouveau aux questions posées. Quelles sont vos
conclusions ? Comment faire en sorte que votre serveur puisse répondre à plusieurs clients ?

Station 1 Station 2
Bonjour

Il est hh:mm:ss !

Il est hh:mm:ss !

Il est hh:mm:ss !

Il est hh:mm:ss !

Au revoir

3 4

Vous aimerez peut-être aussi