Académique Documents
Professionnel Documents
Culture Documents
Mémoire de Licence
Filière : Informatique
Spécialité : GTR
Thème
Conception et Réalisation d’une Application
Web Basée sur WebRTC à Travers
un Serveur TURN
M……………… Membre
Nous tenons tout d’abord à remercier Dieu le tout puissant de nous avoir permis d’investir
dans notre travail avec autant de conviction, et de foi profonde.
Nous tenons aussi à remercier toutes les personnes qui ont contribué au succès de notre
mémoire et qui nous ont aidées lors de la rédaction de ce mémoire.
Nos vifs remerciements vont également aux membres du jury pur l’intérêt qu’ils ont porté à
notre recherche en acceptant d’examiner et de juger notre travail et de l’enrichir par leurs
remarques.
Enfin, nous tenons à remercier nos parents, pour leurs soutiens constants et leurs
encouragements.
L'utilisation de ces outils a été un succès, et elle a prouvé que notre application fonctionne
bien dans la pratique. Des implémentations futures possibles sont également présenté afin
d'ajouter encore plus de valeur à notre application.
Abstract
The use of these tools has been successful, and it has proven that our app works well in
practice. Possible future implementations are also presented in order to add even more value
to our application.
Sommaire
Figure 3.2 : Captures de l'interface d'inscription de l'application web et les messages d'erreurs ......... 23
Figure 3.3 : Captures de l'interface de connexion de l'application web et les messages d'erreurs ........ 23
PUB/SUB: publish/Subscribe
Les applications permettant les vidéo-conférences sont largement facilitées par l’utilisation
du protocole WebRTC. C’est le diminutif de Web Real-Time-Communication qui est
globalement un ensemble de standards permettant de mettre en place une communication
instantanée directement accessible depuis le navigateur et depuis le WEB d’une façon plus
générale en évacuant la nécessité d’une installation préalable. Avant l’avenue du WebRTC
pour mettre en place une communication par vidéo conférence, il fallait installer sur son
ordinateur ou son téléphone mobile des outils tiers souvent payant. Ce qui n’est pas très
pratique.
Bien que la communication de base WebRTC utilise le mode Peer-to-Peer, l’étape initiale
d’établissement de cette communication requiert de la coordination. Cette coordination est
fournie par un canal de signalisation.
La signalisation n'est pas spécifiée par la norme WebRTC et n'est pas implémentée par ses
API afin de permettre une flexibilité dans les technologies et les protocoles utilisés.
La signalisation et le serveur bidirectionnel qui la gère sont laissés au développeur de
l'application WebRTC.
Le WebRTC n’aura aucun problème lorsque la connexion s’établit au sein d’un même
réseau (réseau local). Des soucis peuvent se poser lorsqu’un pair souhaite atteindre un autre
pair en dehors du réseau. Ceci s’explique par le fait qu’il devra percer plusieurs couches telles
qu’un proxy un pare-feu ou encore un NAT.
1
CHAPITRE 1 : ETAT DE L’ART
1.1 Introduction
Ce chapitre permet de donner une vision générale sur le projet. Commençant par l’étude
De protocole WebRTC puis le mécanisme de signalisation, Et enfin les problèmes liés à la
complexité du réseau et les solutions pour remédier à ça.
2
1.3.1 Les APIs WebRTC
Le WebRTC se traduit par l’ajout de trois APIs dans le navigateur assurant chacun une
fonction spécifique : [3]
Permet accéder au contenu audio/vidéo capturé par l’appareil hôte (comme ceux
provenant de la webcam, du microphone ou du partage d’écran).
L’objet Media Stream permet un tel accès simplifié par la méthode getUserMedia, mais
encapsule aussi de puissants moteurs de traitement audio/vidéo internes permettant d’en
améliorer la qualité (encodage, décodage, synchronisation, gestion de la bande passante,
dissimulation des paquets perdus, réduction des bruits dans la bande audio, amélioration
de l’image dans le flux vidéo, etc.)
• L’API RTCPeerConnection
3
• L’API Data Channel
Permet d’envoyer et de recevoir des données autres qu’audio/vidéo (transfert des fichiers,
contrôle des machines à distances…) à travers un canal de communication pair à pair.
• Secure Real-time Transport Protocol (SRTP) : utilisé pour l'échange Avec des médias tels
que l'audio et la vidéo.
• Secure Real-time Control Transport Protocol (SRTCP) : utilisé pour Échanger avec des
statistiques et des données de contrôle pour une connexion SRTP.
• Stream Control Transmission Protocol (SCTP) : utilisé pour l'échange Avec des données
non médiatiques.
• Datagram transport layer Security (DTLS) : utilisé comme couche obligatoire de sécurité
et de cryptage.
WebRTC utilise le balayage réseau pour créer des connexions appariées à travers des
passerelles NAT et des pares-feux. IL tente successivement les méthodes suivantes :
1.5 Signalisation
4
Figure 1.3 : processus de signalisation [5]
Lorsque le mécanisme de signalisation a été complété avec succès, la connexion pair à pair
entre les utilisateurs peut s’établir et fonctionner en autonomie à partir de cet instant pour
l’échange de flux de données.
Dans le cadre de notre étude nous avons choisi le routeur WAMP comme serveur de
signalisation.
Il s’agit d’un protocole open source basé sur Web Socket permettant de faire communiquer
des technologies différentes ainsi que des processus et machines différentes découplés en
temps réel. [6]
Le routeur WAMP offre deux méthodes essentielles pour la gestion des messages en temps
réel :[7]
• RPC (remote procedure call) : permet d’appeler une fonction d’un autre code à distance à
travers une Web Socket.
• PUB/SUB : un client s’abonne (SUB) à un évènement et un autre client publie (PUB) un
évènement sur ce sujet.
D’une manière générale, tous les clients abonnés à un évènement en particulier reçoivent
des messages.
Chaque session créer entre un routeur WAMP et le client est définit par un royaume qui
représente le domaine de séparation entre l’administration et le routage car le routage des
appels et les événements sont séparé sur chaque domaine vu qu’on peut définir une politique
d’administration sur chaque domaine. Ce qui implique que les utilisateurs qui sont dans des
domaines différents ne peuvent pas s’entendre et communique.
5
1.5.3 Les informations échangées lors de la signalisation
Un message SDP est composé d’une série de lignes appelées champs dont les noms sont
abrégés par une lettre minuscule. Chaque ligne respecte un ordre précis afin de simplifier
l’analyse lexicale. [8]
m= Oui
Information sur le média
a= Oui
Attribut de média
Le SDP ne livre pas le média lui-même, mais utilisé par l'émetteur et le destinataire pour la
négociation du type et du format du média, et les propriétés associées. L'ensemble des
paramètres d'une session est souvent appelé un profil de session.
6
1.5.3.2 Description du mécanisme ICE
Tout pair (c'est-à-dire une application utilisant WebRTC) qui tente de communiquer avec
un autre pair génère un ensemble de candidats ICE. Les candidats représentent une
combinaison donnée d'adresse IP, de port et de protocole de transport à utiliser. Notez qu'un
seul ordinateur peut avoir plusieurs interfaces réseau (sans fil, filaires, etc.), il peut donc se
voir attribuer plusieurs adresses IP, une pour chaque interface.
ICE rassemble les connexions réseau disponibles, et utilise le serveur de signalisation pour
communiquer les meilleurs chemins via candidate ICE. [9]
Souvent les utilisateurs sont cachés derrière un NAT, ce qui vouloir dire que dans la plupart
des temps les appareils ne connaissent pas leurs adresses IP publique.
C’est ici que la technique ICE intervient pour permettre à WebRTC de communiquer en
faisant abstraction de la complexité des réseaux formant la réalité d’Internet. ICE va utiliser
des serveurs STUN et TURN pour pallier aux problèmes causés par le pare-feu, les routeurs
NAT et autres restrictions potentielles.
7
Un serveur TURN est une extension à STUN, lorsque celui-ci ne parvient pas à établir la
connexion. Il va permettre de relayer le média d’un utilisateur à l’autre, et devra être
présent durant toute la communication contrairement à STUN. TURN est une opération
définitivement plus exigeante et la communication directe devrait en tout temps être
privilégiée.
Différents niveaux de solutions s’offrent aux développeurs pour l’utilisation des serveurs
STUN/TURN à savoir :
3) Créer son propre serveur en utilisant par exemple une solution open source.
Conclusion
Dans la mise au point d’un système de communication instantanée, le WebRTC nous offre
que la partie basique pour des raisons de compatibilités. Toute l’architecture autour du
WebRTC qui consiste à construire des serveurs permettant de vous donner votre adresse, le
chemin accessible pour vous contacter ainsi que ceux qui redirigent les trafics des flux, est
laissé à la charge du développeur. Le WebRTC n’est pas un outil directement exploitable.
8
CHAPITRE 2 : ANALYSE ET CONCEPTION
2.1 Introduction
Dans ce chapitre, notre conception va se baser sur la création du système WebRTC pour la
communication (vidéo et audio) entre deux pairs qui nécessite deux entités un serveur de
signalisation (routeur WAMP) pour la coordination ainsi qu'un serveur TURN pour surmonter
les limitations de la VOIP.
2.2.1 Définition
UML est un langage permettant de modéliser nos classes et leurs interactions. Autrement
c’est un ensemble de notations graphiques s’appuyant sur des diagrammes et permettant de
spécifier, visualiser et de documenter les systèmes logiciels orientés-objet. [11]
Dans notre conception on a utilisé le langage UML comme outil de modélisation car il nous
a permet de :
Notre système est basé sur la configuration des API WebRTC qui représente le cœur de
notre application car il permet de lancer les Stream local des deux côtés ainsi que la gestion
des flux lors de la communication.
• Serveur de signalisation
• Serveur STUN
• Serveur TURN
9
SDP
SDP Serveur de signalisation
Flux SRTP
L'API L'API
RTCPeerConnection RTCPeerConnection
Flux SRTP
Rassemblement
Rassemblement des informations
des informations de candidats
de candidats
STUN
Les acteurs sont des personnes physiques qui possède des autorisations dans notre
système et capable d’effectuer des opérations sur ce dernier. On distingue 2 acteurs :
➢ Utilisateurs : c’est des simples utilisateurs qui possède tous les droits sur les
opérations de l’utilisation dans notre système (créer un compte, supprimer leurs
propres comptes, modifier les informations liées à leurs comptes, lancer une
visioconférence).
10
2.4.2 Diagramme de cas d’utilisation global
Lancer l'appel
Inclur
Recevez l'appel e
Inclur
e
Inclur
Modifier les Inclur S'authentifier e S'inscrire
informations de e
compte
Inclur
e
Supprimer le
compte
11
L'utilisateur L'application web Base de données
2-Afficher la page de
connexion
4-Afficher le formulaire
d'inscription
5-remplissage de formulaire
6-Vérification des informations
saisies
Alt
Transfère les
Données Afficher message données au BDD
Mal saisie d’erreur
Traiter les données
Compte créer avec succès
[Sinon] Afficher la page de
connexion
12
2.5.2 Authentification d’un utilisateur
Afficher la page
principale de connexion
Alt
[Sinon]
Afficher la page d’accueil
13
2.5.3 Diagramme de séquence de signalisation avec routeur WAMP
Connecter au realm1
Connecter au realm1
Créer la session
Créer la session
Registre la procédure
avec son identifiant
Registre la procédure
avec son identifiant
L'offre SDP
L'offre SDP
La réponse SDP
La réponse SDP
Figure 2.5 : Diagramme illustrant les opérations effectuées par le routeur WAMP dans notre
cas.
14
Scénario
4- Lors de lancement d’appel on fait appel à la procédure de l’autre pair par son identifiant.
Le diagramme de séquence entier nous permet de voir la conception de tout notre système
basé sur WebRTC avec les serveurs ICE (STUN/TURN) ainsi que notre serveur de
signalisation (routeur WAMP).
15
Peer A Serveur Serveur Serveur Peer B
STUN WAMP TURN
Connecter Connecter
Ouvrir la caméra
et audio Ouvrir la caméra
et audio
Créer une
connexion webrtc Créer une
connexion webrtc
Récupère les flux
de la caméra et Récupère les flux
l'audio de la caméra et
l'audio
Ajouter les flux au
peerConnection Ajouter les flux au
peerConnection
Créer une offre
SDP
16
Adresse Relay ??
Adresse Relay
Mon
adresse ??
Votre
adresse
Candidates ICE (A)
Candidates ICE (A)
Ajouter les
candidates ICE
Adresse Relay ??
Adresse Relay
Mon adresse ??
Votre adresse
Alt
Connexion directe
Echange des flux
[Sinon]
Echange des flux Echange
des flux
17
2.6 Base de données
Compte
Username
Email
Password
Cela veut dire que l’utilisateur peut créer plusieurs comptes avec même username mais
différent adresse email et vice versa.
Conclusion
Nous avons présenté dans ce chapitre une modélisation de notre système en utilisant le
langage UML.
Un ensemble de diagramme a été tracé (diagramme de cas d’utilisation, diagramme de
séquence) qui nous a permet de voir la conception de WebRTC avec des serveurs
(STUN/TURN/WAMP).
Dans le chapitre suivant nous allons présenter notre application Web ainsi que les différents
outils pour la réaliser.
18
CHAPITRE 3 : REALISATION
3.1 Introduction
La mise en œuvre de l’étude théorique, conceptuelle que nous avons faite précédemment
Nous permettons d’avoir une vue assez complète afin de réaliser une application de
visioconférence basé sur le protocole WebRTC.
Dans ce chapitre, nous exposons l’architecture de notre application et son fonctionnement,
les principales fonctionnalités et l’environnement de développement à travers la définition
des outils utilisés pour cette réalisation.
Pour le développement de cette application nous avons utilisé deux machines. Voici les
détails sur le matériel utilisé :
• WampServer
19
• Docker
Docker est un logiciel libre qui automatise le déploiement d’applications dans des
conteneurs logiciels. « Docker est un outil qui peut empaqueter une application et ses
dépendances dans un conteneur isolé, qui pourra être exécuté sur n’importe quel
serveur ». Ceci permet d’étendre la flexibilité de construction des applications et leurs
portabilités que ce soit sur la machine locale. Un Cloud privé ou publique. [13]
Chaque conteneur est constitué de plusieurs images. Les images c’est des fichiers
statiques non modifiable inclut les bibliothèques et les outils système, et les autres
paramètres des plateformes nécessaires à l’exécution d’un programme logiciel.
• Crossbar.io
Crossbar.io est une plate-forme de mise en réseau open source Avec les bibliothèques
clientes WAMP open source pour les applications distribuées et micro services. Il s'agit
D’une Image de crossbar. Avec une implémentation riche en fonctionnalités, évolutive,
robuste et sécurisée du protocole ouvert de messagerie d'application Web (WAMP). [14]
Cela veut dire que les clients se connecte au crossbar et routeur WAMP transporte les
messages de signalisation en temps réel.
20
• Coturn
Coturn est une implémentation gratuite et open source d'un serveur TURN et STUN
pour la VoIP et WebRTC. [15]
Il s’agit dans notre cas d’une image docker qui nécessite des inputs (adresse Relay,
adresse externe).
Visual studio code est un éditeur de code open-source développé par Microsoft pour
Windows, Linux et MacOs, supportant un très grand nombre de langages de
programmation. [16]
• HTML
HTML (Hyper Text Markup Language) est un langage de balisage pour la structure
et la présentation des pages Web dans les navigateurs.
• CSS
CSS (Cascading Style Sheets) est un langage de style utilisé pour décrire comment
les éléments HTML doivent être affichés dans la page web (agencement,
positionnement, décoration, couleurs, aille du texte, …). [17]
• JavaScript
21
• PHP
• MYSQL
22
Figure 3.2 : Captures de l'interface d'inscription de l'application web et les messages d'erreurs
23
Figure 3.4 : Captures de l'interface de lancement d'appel de l'application web
24
3.3.4 Interface de profil de l'utilisateur
Conclusion
25
CONCLUSION GENERALE
L’objectif qui nous a été proposé dans ce mémoire de construire une application de
vidéoconférence a était atteint.
L’utilisation de WebRTC basé sur les serveurs STUN/ TURN pour la communication en
temps réel de pair à pair c’est avérer une bonne solution.
Le temps accorder à la réalisation de ce mémoire nous nous pas permet de rendre plus
interactif notre application Web. Des améliorations peuvent être apporté à notre application
tel que :
26
BIBLIOGRAPHIE
[1] : Dan Ristic (juin 2015) développe des applications de communication interactives en
temps réel avec WebRTC , 1e éd., BIRMINGHAM_MUMBAI : Sonia Michelle
Cheema,Swati Priya,Neha Vyas.
[6] : Vayel (samedi 07 novembre 2015) Introduction au protocole WAMP, Disponible sur
: https://zestedesavoir.com/tutoriels/925/introduction-au-protocole-wamp-1/ (Consulté : 2
juin 2021).
[7] (20 déc. 2014) Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC
over Websocket, Disponible sur : https://fr.slideshare.net/sametmax/introduction-wampws-le-
protocole-websocket- pour-faire-du-pubsub-et-rpc-over-websocket-en-tempr (Consulté : 5
juin 2021).
[9] Salvatore Loreto , Simon Pietro Romano (mai 2014) Communication en temps réel avec
WebRTC , : O'Reilly Media, Inc..
[11] MBANJE J Vernack & NAHIMANA Chantal ( Novembre 2014) 'CONCEPTION D'UN
NOUVEAU SYSTEME D'AIDE A LA SUPERVISION DES ACTIVITES D'IMPRESSION
AVEC UML', in (ed.) CONCEPTION ET REALISATION D'UNE APPLICATION WEB
D'AIDE A LA SUPERVISION DES ACTIVITES D'IMPRESSION DANS UNE IMPRIMERIE «
CAS D'IMPRILAC ». Bujumbura, : , p.
[13]: Wahbi Belhadj (9 mars 2018) Virtualisation des serveurs et Sécurisation avec Docker,
Disponible sur: https://fr.slideshare.net/belhadjwahbi (Consulté: 9 juillet 2021).
[16] Wikipédia (22 juin 2021) Code Visual Studio, Disponible sur
: https://en.wikipedia.org/wiki/Visual_Studio_Code (Consulté : 25 juin 2021)
[STUN] : Andrew Prokop (21 juillet 2014) COMPRENDRE LES CONNEXIONS MÉDIA
WEBRTC — ICE, STUN, AND TURN, disponible sur
: https://andrewjprokop.wordpress.com/2014/07/21/understanding-webrtc-media-
connections-ice-stun -et-tourner/ (Consulté : 6 juin 2021).