Protocole SIP : Initiation et Adressage
Protocole SIP : Initiation et Adressage
1. Adressage
SIP est un protocole standardisé qui permet l'initiation, la modification et la fin de sessions
multimédias interactives entre deux ou plusieurs participants sur un réseau IP. L'adressage SIP utilise
des identificateurs appelés URI (Uniform Resource Identifier) pour localiser les utilisateurs et les
services.
URI SIP : Les adresses SIP sont souvent appelées URI SIP. Un URI SIP ressemble à une adresse e-
mail, mais il est utilisé pour identifier des ressources ou des utilisateurs dans le contexte des
communications en temps réel. Par exemple, sip:utilisateur@[Link] est un URI SIP.
Parties de l'URI SIP :
sip: : Indique qu'il s'agit d'un URI SIP.
utilisateur : Identifie l'utilisateur ou l'entité.
@ : Sépare l'utilisateur du domaine.
[Link] : Indique le domaine où l'utilisateur est enregistré.
Exemple d'URI SIP : sip:alice@[Link] : Cela indique l'URI SIP pour l'utilisateur Alice
dans le domaine "[Link]".
Utilisation dans les requêtes SIP :
Lorsqu'un utilisateur souhaite initier une session, son client SIP envoie une requête INVITE à l'URI
SIP de la partie avec laquelle il souhaite communiquer.
Utilisation dans les réponses SIP :
Lorsque la partie destinataire reçoit la requête, elle répond par une série de messages SIP, comme
"100 Trying", "180 Ringing", et finalement "200 OK" si la session est établie avec succès.
L'adressage SIP permet donc aux participants d'initier des sessions de communication et de se trouver
sur le réseau, facilitant ainsi la mise en place de connexions multimédias via des protocoles.
1
Remarque
Les termes "URL" (Uniform Resource Locator) et "URI" (Uniform Resource Identifier) sont
étroitement liés mais ont des significations légèrement différentes. URI (Uniform Resource
Identifier) : C'est un terme plus général qui englobe les URL.
URL (Uniform Resource Locator) : C'est un type spécifique d'URI qui fournit l'adresse complète
d'une ressource sur Internet. Une URL indique comment récupérer la ressource, qu'il s'agisse d'une
page Web, d'un fichier, d'une image, etc. Une URL comprend généralement le schéma (comme "http"
ou "https"), le nom de domaine, le chemin d'accès et parfois des informations spécifiques sur la
ressource (comme un numéro de port ou une ancre).
2. Localisation d’un usager
La localisation physique d’un usager s’effectue en deux étapes. L’URL SIP permet à l’usager
appelant de localiser le SIP server. Celui-ci sera la destination du message « Invite » initial.
Soit le serveur connaît l’adresse physique de l’usager appelé et il permettra l’établissement
d’une connexion,
soit il redirige la requête vers un autre lieu où il sait que l’appelé pourra être joint.
Le fait que l’URL SIP pointe sur un serveur et non sur l’usager terminal donne à ce dernier une
plus grande mobilité. Cela permet aussi de soulager le serveur DNS (Domain Name Service) qui
n’a qu’à connaître l’adresse du serveur et non de tous les terminaux reliés au serveur.
3. Etablissement d’appel SIP directement de terminal à terminal
Un client SIP peut contacter un autre terminal SIP en envoyant une simple requête « Invite ». Ce
message « Invite » contient assez d’informations pour permettre au terminal appelé d’établir une
communication média avec l’appelant. Ces informations listent les différents types de média que
l’appelant peut recevoir et envoyer, ainsi que l’adresse transport (adresse IP et port) sur laquelle
l’appelé pourra établir la connexion média utilisant le protocole RTP. Le terminal appelé doit alors
indiquer qu’il accepte la demande.
Comme la requête était une invitation, l’acceptation du demandé (OK message) contient aussi
ses capacités ainsi que l’adresse sur laquelle il attend les données média.
L’appelant conclut cet échange pour un message d’acquittement (ACK message).Une
communication média peut donc être établie en un aller-retour et demi ce qui permet un
établissement de connexion très rapide par rapport à H.323 v1 (6 à 7 aller-retour).
2
4. L’architecture du protocole SIP
L'architecture de SIP est basée sur des relations client/serveur. Les principales composantes sont le
terminal (User Agent), le Proxy Server, le Redirect Server et le Registrar.
Les terminaux sont considérés comme clients lorsqu'ils effectuent une requête, et comme des
serveurs lorsqu'ils y répondent. Les terminaux peuvent communiquer directement entre eux
ou par l'intermédiaire d'autres serveurs.
Les serveurs SIP intermédiaires peuvent se comporter comme proxy serveur ou serveur de
redirection (redirect server).
Le proxy server joue le rôle de serveur d’un côté (réception de requête) et de client de l’autre
(envoi de requête). Un proxy server peut transmettre une requête, sans changement, à la
destination finale ou éventuellement modifier certains paramètres.
Un redirect server répond à une requête SIP « Invite ». Il établit la correspondance entre
l’adresse SIP du terminal appelé et la ou les adresses où il pourra effectivement être joignable.
Le redirect server n’est pas chargé d’accepter les appels ni d’émettre des requêtes. Il ne fait que
répondre aux requêtes émises par des terminaux SIP appelants.
Registrar server :Un registrar est un serveur qui traite les requêtes « Register » et peut
aussi avoir la fonction de proxy. Sa fonction est de connaître l’endroit où se trouve un
usager et de fournir cette information au proxy et au redirect server. En effet pour
pouvoir joindre un usager à partir d’une adresse SIP, il faut faire une correspondance
avec une adresse IP qui peut être variable (mobilité IP) : c’est le rôle du registrar.
3
Par exemples :
Réponse 300 _ l’URL SIP peut être contactée à différentes adresses (ex: sip:
robert_gsm@[Link], sip:robert_home@[Link])
Réponse 301 _ l’URL SIP ne peut plus être contactée à première adresse mais à la nouvelle
adresse indiquée
Réponse 302 _ redirection du client vers une adresse mais de façon provisoire.
5. Session Description Protocol (SDP)
Le protocole SDP est un protocole qui décrit les sessions audio, vidéo et multimédia. SDP utilise
des caractères ASCII (American Standard Code for Information Interchange) et donne les
informations nécessaires à l’établissement d’une communication multimédia telles que l’identité
de l’initiateur de la session, la bande passante disponible, les codeurs utilisés.
6. Les requêtes
Les échanges client-serveur se font à l’aide de requêtes dont voici le détail de chacun des messages :
INVITE Le message invite indique que l’application ou l’utilisateur est invité à participer à
une session. Le Corps du message décrit cette session (média supportés par l’appelant entre
autres). En cas de réponse favorable à l’invitation, l’invité doit spécifier également les médias
qu’il supporte dans son Corps du message. Un serveur est tenu de répondre à une telle
invitation, identifiée par son CALL-ID, par une réponse OK (code 200). Si un UAS reçoit
une requête INVITE avec un numéro de séquence Cseq supérieur à celui de la dernière
requête INVITE de même CALL-ID reçue, celui-ci doit mettre à jour cette dernière.
ACK Le message ack confirme que le client a reçu une réponse définitive à une requête
INVITE. Les réponses de code 2xx sont acquittées par les UAC et les autres types de
réponses définitives par les premiers PS ou UAC les ayant reçues. La requête ACK possède,
dans son Corps de message, une description définitive de la session que doit utiliser l’appelé.
Si le Corps du message est vide (car il est optionnel), l’appelé utilise le descripteur de session
de la requête INVITE. Après avoir envoyé une réponse de code 3xx, 4xx, 5xx ou 6xx, un PS
doit déterminer si la requête ACK lui est destinée ou si elle est destinée à un autre PS. Cette
détermination se fait en examinant le paramètre tag de l’URL TO. Le ACK lui est destiné si :
o le tag de l’URL TO de la requête ACK est égal au tag de l’URL TO de la réponse
o l’URL FROM, le CALL-ID et le Cseq de la requête ACK sont égaux à ceux de la
réponse.
4
OPTIONS Le message option. Un PS en mesure de contacter l’UAS appelé, doit répondre à
une requête OPTIONS en précisant ses capacités à contacter l’UAS. Si l’UAS ne supporte
pas cette méthode, il renvoie une réponse Busy (code 600) au PS.
BYE Le message bye est utilisée par l’UAS de l’appelé pour signaler au PS local qu’il ne
souhaite plus participer à la session. Si la requête INVITE contient une URL CONTACT,
l’appelé envoie la requête BYE directement à cette adresse plutôt qu’à l’URL FROM. Cette
méthode doit être supportée par les PS et devrait être supportée par les RS et UAS.
CANCEL Le message CANCEL est envoyée par un UAC ou un PS pour annuler une requête
non validée par une réponse finale d’état. Par exemple, un PS peut envoyer une requête
CANCEL aux destinataires n’ayant pas retourné une réponse finale après avoir reçu une
réponse 2xx ou 6xx du PS. Par contre, un PS qui reçoit une requête d’erreur la retransmet à
tous les destinataires qui y sont reliés. Les CALL-ID, Cseq, URL TO de la requête CANCEL
sont les mêmes que ceux de la requête l’ayant générée. Pour distinguer une réponse à une
requête CANCEL et une réponse à la requête originale, l’entête général est de type Cseq dans
le format du message de la requête CANCEL. Quand un RS ou un UAS a reçu une requête
CANCEL, il renvoie à l’émetteur une réponse OK(code 200) si la transaction existe bien et
une réponse Transaction Does Not Exist (code 481) sinon.
REGISTER Le message register est utilisée par le client pour enregistrer l’adresse listée
dans l’URL TO par le serveur auquel il est relié. Les requêtes sont traitées par le client dans
5
l’ordre où elles arrivent et celui-ci devra éviter d’envoyer une nouvelle requête REGISTER
tant qu’il n’aura pas traité la précédente. Le client doit définir une adresse d’enregistrement
du type Utilisateur@Domaine . Cette méthode assure un service de localisation.
INFOInformation de session en cours.
MESSAGE Permettre l’envoi de messages instantanés.
NOTIFYEnvoyer des notifications d’événements.
PRACK Implémenter le mécanisme spécial de sécurisation des réponses provisoires.
REFER Permettre la redirection d’appels.
SUSCRIBE Demander une notification d’événements.
UPDATE
7. Les réponses
Une réponse à un message est caractérisée, par un code et un motif, appelés code d’état et raison. Un
code d’état est un entier codé sur 3 bits indiquant un résultat à l’issue de la réception d’une requête.
Ce résultat est précisé par une phrase, textbased (UTF-8), expliquant le motif du refus ou de
l’acceptation de la requête. Le code d’état est donc destiné à l’automate gérant l’établissement des
sessions SIP et les motifs aux programmeurs. Il existe 6 classes de réponses et donc de codes d’état,
représentées par le premier bit.
Voici l’ensemble des codes réponses répertoriées par classe :
1xx Provisoire
Les réponses provisoires, aussi connues comme réponses informatives, indiquent que le serveur
contacté est en train d’effectuer certaines actions et n’a pas encore de réponse définitive. Un serveur
envoie une réponse 1xx si il s’attend à ce que l’obtention d’une réponse finale prenne plus de 200 ms.
Noter que la transmission des réponses 1xx n’est pas fiable. Elle n’oblige jamais le client à envoyer
un ACK. Les réponses provisoires (1xx) peuvent contenir un corps de message, y compris de
description de session.
Cette réponse indique que la demande a été reçue par le serveur du saut suivant
et qu’une certaine action non spécifiée est en train d’être effectuée au titre de cet
appel (par exemple, une base de données est consultée). Cette réponse, comme
SIP
Essai toutes les autres réponses provisoires, arrête les retransmissions d’un INVITE
100
par un UAC. La réponse 100 (En cours d’essai) est différente des autres
réponses provisoires, en ce qu’elle n’est jamais transmise vers l’amont par un
mandataire à états pleins.
L’appel est
SIP Un serveur peut utiliser ce code d’état pour indiquer que l’appel est en train
en cours de
181 d’être retransmis à un ensemble de destinations différent.
transmission
SIP En file Le demandé est temporairement indisponible, mais le serveur a décidé de mettre
182 d’attente l’appel en file d’attente plutôt que de le rejeter. Lorsque l’appelé devient
6
disponible, il retournera la réponse d’état finale appropriée. La phrase de cause
peut donner plus de précisions sur l’état de l’appel, par exemple, « 5 appels en
file d’attente ; le temps d’attente prévu est de 15 minutes ». Le serveur peut
produire plusieurs réponses 182 (En file d’attente) pour tenir l’appelant au
courant de l’état de l’appel en file d’attente.
SIP Accepted
202
3xx Réorientation
Les réponses 3xx donnent des informations sur la nouvelle localisation de l’utilisateur, ou sur des
services de remplacement qui pourraient être capables de satisfaire à l’appel.
SIP Déplacement L’utilisateur ne peut plus être joint à l’adresse figurant dans l’URI-de-
301 définitif demande, et le client demandeur devrait réessayer à la nouvelle adresse
donnée par le champ d’entête Contact. Le demandeur devrait mettre à jour
tout répertoire local, carnet d’adresses, et mémoires caches de localisation
7
d’utilisateur avec cette nouvelle valeur et rediriger les demandes futures
sur la ou les adresses listées.
L’appel n’a pas réussi, mais des services de remplacement sont possibles.
SIP Service de Les services de remplacement sont décrits dans le corps de message de la
380 remplacement réponse. Les formats pour de tels corps ne sont pas définis ici, et pourront
être le sujet d’une normalisation future.
8
402
Ce code est similaire à 401 (Non autorisé), mais indique que le client
doit d’abord s’authentifier avec le mandataire.
SIP Authentification du Ce code d’état peut être utilisé pour des applications où, plutôt que le
407 mandataire requise demandé, l’accès au canal de communication (par exemple, une
passerelle de téléphonie) exige l’authentification.
Le serveur n’a pas pu produire une réponse dans le délai requis, par
SIP Expiration du délai exemple, s’il n’a pas pu déterminer la localisation de l’utilisateur dans
408 de demande les temps. Le client peut répéter la demande sans modifications à tout
moment ultérieurement.
SIP Conditional
412 Request Failed
SIP Entité de demande Le serveur refuse de traiter une demande parce que l’entité corps de la
413 trop longue demande est supérieure à ce que le serveur est désireux ou capable de
traiter. Le serveur peut fermer la connexion pour empêcher le client de
continuer la demande.
Si la condition est temporaire, le serveur devrait inclure un champ
9
d’entête Retry-After pour indiquer qu’elle est temporaire et après quel
délai le client peut réessayer.
SIP URI de demande Le serveur refuse de servir la demande car l’URI-de-demande est plus
414 trop long long que ce que le serveur désire interpréter.
SIP Schéma d’URI non Le serveur ne peut pas traiter la demande parce que le schéma de
416 accepté l’URI dans l’URI-de-demande est inconnu du serveur.
SIP Unknown
417 Resource-Priority
10
empêche les communications avec l’appelé, ou il a activé le dispositif
« ne pas déranger »). La réponse peut indiquer un meilleur moment
pour appeler dans le champ d’entête Retry-After. L’utilisateur peut
aussi être disponible ailleurs (à l’insu de ce serveur). La phrase de
cause devrait indiquer une raison plus précise comme pourquoi
l’appelé est indisponible. Cette valeur devrait être réglable par l’agent
utilisateur. L’état 486 (Occupé ici) peut être utilisé pour indiquer plus
précisément une raison particulière pour l’échec de l’appel.
Cet état est aussi retourné par une redirection ou un serveur
mandataire qui reconnaît l’utilisateur identifié par l’URI-de-demande,
mais n’a pas actuellement de localisation de retransmission valide
pour cet utilisateur.
SIP L’appel/transaction Cet état indique que l’UAS a reçu une demande qui ne correspond à
481 n’existe pas aucun dialogue ou transaction existant.
SIP
Boucle détectée Le serveur a détecté une boucle.
482
SIP Le serveur a reçu une demande qui contient un champ d’entête Max-
Trop de bonds
483 Forwards avec la valeur zéro.
SIP Ambiguïté L’URI-de-demande est ambigu. La réponse peut contenir une liste
485 d’adresses possibles non ambiguës dans le champ d’entête Contact.
Révéler les solutions de remplacement peut porter une atteinte à la vie
privée de l’utilisateur ou de l’organisation. Il doit être possible de
configurer un serveur pour qu’il réponde par l’état 404 (Pas trouvé) ou
de supprimer la liste des choix possibles pour les URI-de-demande
ambigus.
Exemple de réponse à une demande avec l’URI-de-demande
sip:lee@[Link] :
SIP/2.0 485 Ambigu
Contact: Carol Lee <sip:[Link]@[Link]>
Contact: Ping Lee <sip:[Link]@[Link]>
Contact: Lee M. Foote <sips:[Link]@[Link]>
Certains systèmes de messagerie électronique et de messagerie vocale
11
fournissent cette fonction. Un code d’état distinct de 3xx est utilisé
dans la mesure où les sémantiques sont différentes : pour 300, il est
supposé que la même personne ou service sera joint par les choix
fournis. Alors qu’un choix automatisé ou une recherche séquentielle a
un sens pour une réponse 3xx, une intervention de l’utilisateur est
requise pour une réponse 485 (Ambigu).
SIP La demande a été reçue par un UAS qui avait une demande en cours
Demande en cours
491 dans le même dialogue.
Security
494 Agreement
Required
5xx Défaillance de serveur
Les réponses 5xx sont des réponses d’échec qui indique que le serveur lui-même s’est trompé.
SIP Erreur Le serveur a rencontré une condition inattendue qui l’a empêché de satisfaire
12
la demande. Le client peut afficher la condition d’erreur spécifique et peut
interne du réessayer la demande après plusieurs secondes.
500 Si la condition est temporaire, Le serveur peut indiquer quand le client peut
serveur
réessayer la demande en utilisant le champ d’entête Retry-After.
Le serveur n’a pas reçu de réponse dans les temps d’un serveur externe
Expiration auquel il a accédé en essayant de traiter la demande. La réponse 408
SIP
du délai de (Expiration du délai de réponse) devrait être utilisée à la place s’il n’y a pas
504
serveur de réponse dans la période spécifiée dans le champ d’entête Expires de la
part du serveur amont.
SIP Message Le serveur n’a pas été capable de traiter la demande car la longueur du
513 trop long message excède ses capacités.
580 Precondition
13
Failure
6xx Echecs totaux
Les réponses 6xx indiquent qu’un serveur a des informations certaines sur un utilisateur particulier, et
non pas seulement sur l’instance particulière indiquée dans l’URI-de-demande.
SIP N’existe Le serveur a des informations certaines que l’utilisateur indiqué dans l’URI-
604 nulle part de-demande n’existe nulle part.
14
8. L’entête SIP
Il y a certains des champs d’entête qui sont présents toujours dans les requêtes et les réponses, et
forment l’entête général :
15
Exemples
16
VII. RTP et RTCP pour le transport de données en temps réel
Le protocole IP permet de transporter les paquets IP à travers un réseau IP mais ne fournit aucun
mécanisme pour gérer les flux IP d’une session entre des terminaux IP. Cette fonction est
généralement effectuée par les protocoles TCP ou UDP (User Datagram Protocol), chargés de
vérifier que la transmission et la réception des paquets s’effectuent correctement.
17
Cependant, ces protocoles n’offrent aucune fonctionnalité permettant de gérer les flux temps réel,
audio ou vidéo, qui sont présents dans toutes les communications multimédia.
Les protocoles RTP et RTCP garantissent la qualité des communications multimédia en mode
paquet (gestion et contrôle des flux temps réel). Pouvant être mis en œuvre au-dessus d’IP, ils sont
utilisés par les deux protocoles de contrôle d’appel SIP et H.323.
UDP est préféré à TCP pour les transmissions « temps réel »; en effet la priorité est donnée à
la rapidité plus qu’à la qualité de transmission. UDP est un protocole de transport léger et sans
connexion. Il ne garantit pas la livraison des paquets ni l'ordre dans lequel ils sont reçus, mais il
est souvent privilégié dans les applications en temps réel, car il introduit moins de latence que le
protocole TCP (Transmission Control Protocol), qui assure une livraison fiable des données.
Les retransmissions effectuées par le protocole TCP, pour gérer la qualité de services, sont en
effet incompatibles avec des contraintes « temps réel ».
Le protocole RTP (Real-time Transport Protocol) est généralement utilisé en combinaison avec
le protocole UDP (User Datagram Protocol) pour le transport de données en temps réel, comme
la voix et la vidéo, sur les réseaux IP.
RTP est utilisé pour encapsuler les données multimédias et ajouter des informations de
synchronisation et de séquencement, facilitant ainsi la gestion de la lecture et de la présentation
des médias en temps réel. En combinaison, RTP sur UDP est couramment utilisé dans les
applications de voix sur IP (VoIP), de vidéoconférence et d'autres services de communication
multimédia en temps réel.
RTP est utilisé en association avec le protocole de contrôle RTCP (Real Time Control
Protocol) qui fournit les informations nécessaires sur la qualité de transmission des données et
sur les participants aux sessions multimédia.
Cependant RTP ne fournit pas de lui-même les mécanismes nécessaires à la gestion des
informations « temps réel ». Pour cela, les couches protocolaires inférieures doivent mettre en
œuvre des solutions nécessaires à ces données sensibles au délai.
1. Fonctionnement de RTP
Comme nous l’avons vu, IP est un réseau partagé en mode paquet. Les paquets envoyés sur un
réseau IP ont une gigue et un délai de transmission imprévisibles. Cependant les applications
multimédia requièrent des caractéristiques appropriées à la transmission et la gestion des
applications dites « temps réel ». RTP fournit, pour chaque paquet, un marquage temporel, un
numéro de séquence et d’autres paramètres permettant d’offrir un transport, de bout en bout, des
18
données « temps réel » sur un réseau en mode paquet.
19
L’identifiant du type de données (« payload type identifier ») spécifie le format des données
contenues dans le paquet. La connaissance de cette information permet à l’application
réceptrice de savoir comment gérer les données utiles du paquet. A un instant donné, l’émetteur
de flux RTP ne peut envoyer qu’un type de données, cependant il est possible d’en changer lors
d’une transmission. RTP donne aussi un identifiant de l’émetteur permettant au récepteur de
connaître la provenance des données.
Les paquets RTP et RTCP sont généralement transportés sur UDP/IP.
Pour débuter une session RTP, l’application définit une paire particulière d’adresses transport
(adresse IP et port UDP) de destination. Dans une session multimédia, chaque média est transporté
sur une session RTP différente pour laquelle sont émis des paquets de contrôle (RTCP). Ainsi
l’audio et la vidéo sont transportés sur des sessions différentes, ce qui permet à l’utilisateur final
de choisir le média qu’il désire recevoir.
RTCP est un protocole défini pour être utilisé en addition de RTP. Dans une session RTP, chaque
participant envoie périodiquement des paquets RTCP et donner des informations sur la qualité de
la transmission. Il existe 5 types de paquets pour transporter cette information de contrôle :
RR: « receiver report ». Les rapports des récepteurs sont envoyés par les terminaux qui ne
sont pas des participants actifs à la communication. Ils contiennent des informations sur les
données reçues, dont le numéro du dernier paquet reçu, la valeur moyenne de la gigue et le
« marqueur » temporel qui permettra de calculer le délai de transmission entre l’émetteur et
le récepteur
SR: « sender report ». Les rapports des émetteurs sont émis par les terminaux actifs. En plus
des informations données par le « receiver report », ils donnent des informations concernant
la synchronisation inter-média, le nombre de paquets et d’octets émis.
SDES: « source description items ». Contient des informations décrivant la source émettrice.
BYE: indique la fin de la participation d’un participant à une session.
APP: fonction utilisée par des applications spécifiques.
Ce protocole fournit à l’application les informations sur la qualité de la distribution des données.
20
Ces informations de contrôle sont nécessaires pour les émetteurs et les récepteurs. Les
informations de description des sources émettrices peuvent inclure des données en format texte
telles que le nom de l’utilisateur, le numéro de téléphone et l’adresse e-mail.
La gestion de la qualité de service de bout en bout impacte toutes les couches d’un réseau NGN,
depuis les terminaux jusqu’aux applications, en passant par les protocoles de gestion de niveau
intermédiaire (situés entre les couches Contrôle et Service) comme RTP et RTCP
21