Activité 5 : Communiquer en réseau avec Qt


Durée approximative de l'activité pratique (4h00) :



Après avoir pris connaissance du document Typologie de réseau, répondez aux questions suivantes :


Questions 5.1 : Quel est le type de réseau utilisé lorsque vous êtes chez vous ?


Questions 5.2 : Quel est le type de réseau utilisé lorsque vous êtes au lycée ?


Questions 5.3 : Via quel réseau sont interconnecté la France et la Belgique ?


Questions 5.4 : Typologie des réseaux : Retrouver la bonne typologie en fonction des schémas. Exemple : Bus : 2, Maillé : 4 etc..


1.                                                                                        



2.




3.



4.





Questions 4.5 : Un compte rendu d'étape est demandé pour la suite de l'activité. C'est à vous d'indiquer sur votre copie les informations pertinentes qui permettront de vous attribuer une note pour la suite de cet activité :




Qt est une API orientée objet qui offre des composants d'interface graphique, d'accès aux données, de connexions réseaux,, d'analyse XML, etc. Qt est connu pour être la bibliothèque sur laquelle repose l'un des environnements de bureau les plus utilisés dans le monde GNU/Linux.

  1. 1. Introduction

    1. 1.1. Communiquer sur un réseau internet

Pour que 2 programmes communiquent entre eux via le réseau, il faut :

    • Connaître l'adresse IP identifiant l'autre ordinateur.
    • Utiliser un port libre et ouvert.
    • Utiliser le même protocole de transmission des données.



    1. 1.2. L'adresse IP

Chaque ordinateur est identifié sur le réseau par une adresse IP. Cette adresse représente un ordinateur. Cependant, un ordinateur peut avoir plusieurs IP :

    • Une IP interne : c'est le localhost, aussi appelé loopback. C'est une IP très pratique pour les tests.
    • Une IP du réseau local : c'est une IP privée, utilisée par les ordinateurs qui communiquent entre eux sans passer par internet.
    • Une IP internet : c'est uue IP publique, utilisée pour communiquer avec tous les autres ordinateurs de la planète qui sont connectés à internet.

Pour trouver son adresse IP, il existe plusieurs méthodes :

    • Pour l'IP interne : c'est 127.0.0.1 (ou son équivalent texte "localhost").
    • Pour l'IP locale : 
  • Sous Windows, ouvrez une invite de commande et tapez ipconfig
  • Sous Linux , ouvrez une invite de commande et tapez ifconfig
    • Pour l'IP internet : aller sur ce site web



    1. 1.3. Les ports

Un ordinateur connecté à un réseau reçoit beaucoup de messages en même temps (pages web, mails, …). Pour ne pas confondre ces données, on a inventé le concept de port.

Un port est un nombre compris entre 1 et 65 536. Voici quelques ports célèbres :

    • 21 : utilisé par les logiciels FTP pour envoyer et recevoir des fichiers.
    • 80 : utilisé pour naviguer sur le web par votre navigateur.
    • 110 : utilisé pour la réception de mails.

La plupart des ports dont les numéros sont inférieurs à 1 024 sont déjà réservés par votre machine. Nous ferons donc en sorte de préférence dans notre programme d'utiliser un numéro de port compris entre 1 024 et 65 536.


    1. 1.4. Le protocole

Définition : un protocole est un ensemble de règles qui permettent à 2 ordinateurs de communiquer. Il faut impérativement que les 2 ordinateurs parlent le même protocole pour que l'échange de données puisse fonctionner.

Il existe des centaines de protocoles de communication différents. Ceux-ci peuvent être très simples comme très complexes, selon si vous discutez à un "haut niveau" ou à un "bas niveau" :

    • Protocoles de haut niveau : par exemple le protocole FTP, qui utilise le port 21 pour envoyer et recevoir des fichiers, est un système d'échange de données de haut niveau.
    • Protocoles de bas niveau : par exemple le protocole TCP. Il est utilisé par les programmes pour lesquels aucun protocole de haut niveau ne convient. Vous devrez manipuler les données qui transitent sur le réseau octet par octet.

Les données s'envoient par paquets sur le réseau :

Ce sont les protocoles de bas niveau TCP et UDP qui s'en occupent. Il est donc impossible de connaître à l'avance la taille des paquets ou même leur nombre.

On peut envoyer ces paquets de plusieurs façons différentes :

    • Protocole TCP : il nécessite d'établir une connexion au préalable entre les ordinateurs. Il y a un système de contrôle qui permet de demander à renvoyer un paquet au cas où l'un d'entre eux se serait perdu sur le réseau.
    • Protocole UDP : il ne nécessite pas d'établir de connexion au préalable et il est très rapide. En revanche, il n'y a aucun contrôle ce qui fait qu'un paquet de données peut très bien se perdre sans qu'on en soit informé, ou les paquets peuvent arriver dans le désordre !


  1. 2. Architecture d'un projet de Chat (dialogue en temps réel entre deux ordinateurs)

On a 2 architectures possibles pour ce projet :

Une architecture client / serveur : c'est l'architecture réseau la plus classique et la plus simple à mettre en oeuvre. Les machines des utilisateurs (Patrice, Ludovic, Vincent...) sont appelées des "clients". En plus de ces machines, on utilise un autre ordinateur (appelé "serveur") qui va se charger de répartir les communications entre les clients.

Une architecture Peer-To-Peer (P2P) : ce mode plus complexe est dit décentralisé, car il n'y a pas de serveur. Chaque client peut communiquer directement avec un autre client. C'est plus direct, ça évite d'encombrer un serveur, mais c'est plus délicat à mettre en place.


Nous prendrons comme exemple une architecture client. Il va donc falloir faire deux projets :

  • Un projet "serveur" : pour créer le programme qui va répartir les messages entre les clients.
  • Un projet "client" : pour chaque client qui participera au Chat.


L'une des machines des clients peut aussi faire office de serveur. Il suffira de faire tourner un programme "serveur" en même temps qu'un programme "client".

En pratique donc, une seule personne lancera le programme "serveur" et le programme "client" à la fois, et toutes les autres lanceront uniquement le programme "client".

Principe de fonctionnement du Chat :


Il est plus simple de faire en sorte que le serveur renvoie le message à tout le monde sans distinction. Vincent verra donc son message s'afficher sur son écran de discussion uniquement quand le serveur l'aura reçu et le lui aura renvoyé. Cela permet de vérifier en outre que la communication sur le réseau fonctionne correctement.


Les messages qui circuleront sur le réseau seront placés dans des paquets.


Le paquet est constitué de 2 parties :

  • tailleMessage : un nombre entier qui sert à indiquer la taille du message qui suit. 
  • message : c'est le message envoyé par le client. 


Le protocole TCP va découper le paquet en sous-paquets avant de l'envoyer sur le réseau. Il n'enverra peut-être pas tout d'un coup :

On n'a aucun contrôle sur la taille de ces sous-paquets, et il n'y a aucun moyen de savoir à l'avance comment ça va être découpé.

Le serveur va recevoir ces paquets petit à petit, et non pas tout d'un coup. Il ne peut pas savoir quand la totalité du message a été reçue.

Le protocole TCP s'arrange pour que les paquets arrivent à destination dans le bon ordre contrairement au protocole UDP, qui est plus rapide, ne fait aucun contrôle sur l'ordre des paquets envoyés !



  1. L'objectif est de créer un salon de chat dans la salle SIN !

  2. Pour faire cela, il va falloir créer un serveur puis un client pour dialoguer sur la couche TCP-IP.

Créé avec HelpNDoc Personal Edition: Créer des livres électroniques EPub facilement