Le protocole SIP, pour Session Initiation Protocol, est un protocole de signalisation conçu pour établir, modifier et terminer des sessions multimédias. Il peut être ainsi associé à une session audio comme un appel téléphonique, une visioconférence ou encore la gestion de la présence d’un utilisateur. Il constitue ainsi les fondations des systèmes de téléphonie IP. Pour en faire bon usage, il convient de maitriser les différentes méthodes SIP.
Dans cet article, vous découvrirez tout sur le protocole SIP et plus particulièrement :
- Présentation des entêtes des messages SIP
- Les méthodes SIP, découvrez les requêtes
- Les méthodes SIP, découvrez les réponses
Le protocole SIP est particulièrement apprécié pour son caractère ouvert, sa standardisation par l’IETF (Internet Engineering Task Force) et ses similitudes avec différentes autres protocoles web. En effet, il hérite de certaines approches et fonctionnalités de protocoles de transport du web et des e-mails comme le HTTP, pour Hyper Text Transport Protocol ou SMTP, pour Simple Mail Transport Protocol.
Les entêtes SIP
Lorsque deux terminaux SIP souhaitent établir, modifier ou terminer une session, ils s’échangent des messages SIP. On appelle communément cela un dialogue SIP. Il se compose de différentes informations normalisées permettant de mener à bien la négociation.
Les principaux champs que l’on retrouve dans toutes les entêtes SIP sont les suivants :
- “Via” : Il contient les informations sur le chemin pris par la requête au travers de différents serveurs SIP successifs et indique où la réponse doit être envoyée
- “To” : Il indique l’identité du destinataire sous forme d’AOR afin que le message puisse lui être acheminé
- “From” : Il contient l’identité SIP de l’émetteur de la requête sous forme d’AOR, pour Address Of Record, son adresse d’enregistrement SIP. Il est également possible d’y trouver son nom (“Display Name”) entre guillemets.
- “Cseq” : Il indique le numéro de séquence associé à une requête ou une réponse SIP. Il va permettre d’identifier et d’ordonner la séquence de messages du dialogue. En cas de perte d’un paquet et d’une retransmission, il permettra de garder la chronologie des requêtes.
- “Call-ID” : Il représente l’identifiant unique du dialogue SIP. Il va permettre de faire le rapprochement entre les différentes requêtes et réponses d’une même session.
- “Max-Forwards” : Il permet de limiter le nombre de serveurs SIP qui peuvent être traversés jusqu’à la destination du message SIP. Chaque serveur traversé viendra ainsi décrémenter la valeur de ce champ.
Il existe une plus d’une trentaine d’autres champs optionnels permettant de partager des informations sur différents aspects de la session, comme les champs : “Allow”, “Contact”, “Content-Type”, “Content-Length” ou encore “Unsupported”.
Alors si vous voulez tout savoir sur les 44 entêtes SIP disponibles, nous vous invitons à consulter la RFC 3261, section 20.
Méthodes SIP, les requêtes
Lors de ces échanges de messages SIP, les terminaux vont réaliser des requêtes correspondant à différentes actions, sur lesquels elles obtiendront des réponses.
Il existe 6 principales requêtes SIP décrites dans le RFC 3261 :
- “REGISTER” : Cette méthode assure l’enregistrement de l’agent SIP, aussi appelé UA pour User Agent. Il lui permet de communiquer son adresse IP et l’URL ou il peut être joint
- “INVITE” : Elle permet à un agent de demander l’établissement d’une nouvelle session SIP
- “ACK” : Elle vient confirmer l’établissement d’une session et de la requête “INVITE”
- “CANCEL” : Cette méthode SIP annule une autre requête en cours.
- “BYE” : Elle vise à terminer une session entre agents
- “OPTIONS” : Elle permet d’obtenir différentes informations sur un agent, sans pour autant ouvrir de session
Ces différentes méthodes sont complétés par différents RFC afin d’enrichir le socle d’échange SIP initial. Nous pouvons par exemple citer “PRACK”, “NOTIFY”, “SUBSCRIBE”, “UPDATE” ou encore “PUBLISH”.
Si vous voulez en savoir plus, nous vous invitons à consulter les RFC 3262, RFC 6665, RFC 3311, RFC 3903 pour les méthodes citées, et les RFC 3428, RFC 6086 et RFC 3515 pour disposer d’une vue exhaustive.
Méthodes SIP, les réponses
Une fois qu’un agent SIP a reçu une requête, il convient alors de lui répondre. Le format de réponse du protocole SIP est similaire à celui des réponses HTTP.
Nous pouvons les classifier en 6 principales catégories :
- “Provisional / Informational ” – 1xx : Requête reçu et en cours de traitement. Nous trouvons par exemple des réponses du type “180 – Sonnerie”, “181 – Transfert d’appel” ou encore “183 – Early Media”.
- “Successful” – 2xx : Requête reçu, comprise et acceptée avec succès par l’agent. La réponse “200 – Ok” à une “INVITE” est indispensable pour la création d’une session SIP.
- “Redirection” – 3xx : La requête a été reçu mais une action additionnelle doit être prise par l’appelant pour compléter sa requête. Cette réponse va fournir par exemple des informations additionnelles sur la localisation de l’utilisateurs appelé. La réponse “301 – Déplacé Définitivement” va ainsi indiquer que l’appelé n’est plus disponible à cette adresse et qu’il doit tenter de le joindre à une nouvelle adresse.
- “Request Failure” – 4xx : Les réponses SIP de ce type sont caractéristiques d’un échec de la requête effectuée qui ne pourra donc pas aboutir. Le fameux “404 – Non trouvé” indique ainsi que l’utilisateur souhaité n’existe pas dans l’agent contacté.
- “Service Failure” – 5xx : Cette réponse indique une problème du côté du serveur ayant la charge de traiter la requête. Il peut avoir un “500 – Erreur interne au serveur” s’il rencontre un problème inattendu ou encore un “503 – Service indisponible” s’il se trouve surchargé ou temporairement indisponible pour maintenance.
- “Global Failures” – 6xx : Cette classe de réponse indique un refus d’un agent d’initialiser la session. Ce refus est basé sur un ensemble d’informations dont le serveur dispose comme par exemple “600 – Occupé” pour indiquer que le destinataire est occupé ou encore “603 – Refusé” lorsqu’il ne souhaite pas participer à la communication.
Chacune de ses classes de réponses comprennent une variété de réponses. Si vous voulez tout connaître sur les différentes réponses possibles, la RFC 3261 détaille ces éléments dans la section 21. Sinon n’hésitez pas nous contacter, nos experts se feront un plaisir d’échanger avec vous sur toutes les subtilités de ce protocole et de la VoIP.