15/07/2025
Salut les devs,
Aujourd’hui, parlons un peu de comment se font les échanges de données lors d’un appel IP, comme sur WhatsApp, Messenger ou toute autre application de communication moderne. Contrairement aux appels GSM classiques, ici, on parle de voix sur IP (VoIP) avec des protocoles bien différents.
Regardez l’image ci-jointe : ce que vous voyez dans le terminal, ce sont des métadonnées. Elles sont échangées pour établir une connexion peer-to-peer entre deux utilisateurs via leurs navigateurs grâce à WebRTC.
Voici ce qui se passe :
1. Tu cliques sur le bouton "Appeler". À ce moment-là, ton navigateur envoie un message spécial au serveur appelé un offer SDP (Session Description Protocol). Ce message contient des infos comme :
- le type d’appel (audio ou vidéo),
- les codecs supportés,
- les ports disponibles,
- et d'autres paramètres techniques.
2. Le serveur de signalisation (par exemple un serveur WebSocket avec Ratchet en PHP) va relayer cet offer à la personne que tu veux appeler (disons Monsieur X).
3. Si X accepte, il envoie à son tour une answer SDP.
Le SDP, c’est comme une carte d’identité technique de la connexion.
4. Ensuite, place au ICE (Interactive Connectivity Establishment). C’est là qu’on cherche le chemin le plus direct possible entre les deux appareils. Ils échangent leurs adresses IP privées, publiques, et les ports via les candidats ICE.
5. Une fois que tout est validé, les navigateurs établissent une connexion directe (peer-to-peer) et commencent à transmettre le flux audio ou vidéo.
Tu vois ? Quand tu appelles quelqu’un, tu ne fais pas qu’appuyer sur un bouton. Tu mets en route une série d’échanges techniques intelligents pour que la magie de la communication instantanée fonctionne.
Et tout ça, sans que les utilisateurs ne le voient. C’est notre boulot, en tant que devs, de comprendre ça, de l’implémenter, et de l’améliorer.
N'hésitez pas à partager et à poser vos questions
script