Let’s dive into VoIP protocols — Episode 1 : SIP Partie 1 Version FR

Approche théorique du “Session Initiation Protocol”

Constantin VURLI
PCAP-Inspector
3 min readMar 1, 2018

--

English edition available here

Pour ce premier véritable épisode de la série, commençons notre exploration des protocoles VoIPs en nous penchant sur SIP. Si vous n’avez pas encore lu l’épisode d’introduction, je vous invite à aller voir l’Episode 0 dans lequel je décris le procédé et fais une courte introduction sur les protocoles VoIP et leurs rôles.

Les bases

SIP a été initialement conçu en 1996 et standardisé par l’IETF dans la RFC 2543 en 1999. Cette RFC a ensuite été remplacée en 2002 par la RFC 3261. Comme le décrit cette RFC, SIP est “un protocole de contrôle (signalisation) de la couche applicative qui permet de créer, modifier, et terminer des sessions avec un ou plusieurs participants. Ces sessions incluent des appels de téléphonie sur Internet, de la distribution de contenus multimédia et des conférences multimédia.”

Fonctionnement

SIP fournit 5 services :

  • Localisation de l’utilisateur : c’est le fait de déterminer le terminal à utiliser pour la session.
  • Disponibilité de l’utilisateur : c’est le fait d’évaluer la volonté de l’utilisateur appelé à communiquer.
  • Capacités de l’utilisateur : c’est le fait de définir les médias utilisables et leurs paramètres.
  • Mise en place de la session : c’est la “sonnerie”, l’établissement des paramètres de session pour les différents membres de la conférence.
  • Management de la session : cela inclue le transfert et la fermeture des sessions, la modification des paramètres de session et l’invocation de services.

Pour faire cela, SIP fonctionne d’une manière similaire à HTTP, les clients envoient des requêtes invoquant une méthode sur le serveur et reçoivent une réponse. Toutes les transactions sont au format texte. L’adressage se fait avec des URI, sous la même forme que les e-mails : sip:host@domain.

Composants

Il y a deux types de composants dans un système SIP : Les “User Agents” et les serveurs.

Les trois types de serveurs sont :

  • Les passerelles : Elles transfèrent les requêtes au nœud suivant.
  • Les serveurs de redirection : Ils renvoient l’adresse du noeud suivant.
  • Les serveurs d’enregistrement (Registrars) : Ils gardent la localisation des utilisateurs.

Les “User Agents” sont composés de 2 parties :

  • UA client : Initie les requêtes SIP.
  • UA serveur : Répond pour l’utilisateur.

Il y a un troisième type de composant hybride : les “Back To Back User Agents” (B2BUA). Ils agissent comme un proxy du point de vue du client mais offrent des possibilités étendues car ils agissent différemment en réalité. Nous étudierons ces différences dans la partie 2 avec des exemples concrets.

Couche Transport

SIP est compatible avec de nombreux protocoles de transport, principalement TCP et UDP, et ne dépend pas de TCP pour la fiabilité. Il est aussi compatible avec TLS par exemple si du chiffrement est nécessaire. Nous reviendrons plus tard sur les procédés de chiffrement.

Interactions principales

Enregistrement

Comme nous l’avons vu plus tôt, le serveur d’enregistrement garde la localisation des utilisateurs (IP). Il permet une traduction entre l’URI sip:Bruno@domain.xyz et l’IP : 1.2.3.4 sur le réseau. Pour ce faire, le client envoie une requête REGISTER au serveur avec son URI, IP et d’autres informations complémentaires. Il peut aussi enregistrer plusieurs IP pour faire sonner plusieurs téléphones au même moment par exemple. La plupart du temps, le serveur proxy fournit aussi la fonction d’enregistrement.

Appels

Un schéma sera plus clair qu’un long paragraphe. La situation avec un proxy :

Flux d’appel SIP

Dans le prochain épisode, nous passerons à la pratique avec des exemples concrets. Au programme : Authentification, B2BUA vs Proxy, serveur de redirection.

--

--

Constantin VURLI
PCAP-Inspector

Consultant Réseau & Sécurité chez CNS Communications.