Bonjour. Dans la leçon précédente, nous avons établi la structure fondamentale d'un message SIP, en identifiant ses quatre composants : la ligne de début, les en-têtes, la ligne vide et le corps. Nous allons maintenant approfondir l'élément le plus dynamique et le plus crucial pour votre travail sur les SBC : la section des en-têtes (headers).
L'objectif de cette leçon est d'apprendre à interpréter les en-têtes SIP essentiels. Comprendre le rôle de chacun — From, To, Via, Contact, Call-ID, CSeq, Route et Record-Route — est fondamental. Ce sont précisément ces champs que vous analyserez et modifierez avec les règles de manipulation d'AudioCodes pour contrôler le routage, la sécurité et l'interopérabilité des appels.
Commençons par une vue d'ensemble vidéo qui présente plusieurs de ces en-têtes dans le contexte d'un message INVITE.
Cette vidéo, "SIP Headers Explained" de la chaîne VoIP Wala, introduit l'importance des en-têtes SIP pour l'analyse des messages et présente un exemple de requête INVITE que nous allons décortiquer.
Regardez le début de la vidéo, de l'introduction jusqu'à la présentation de l'exemple de message. Cela posera le contexte pour notre analyse détaillée.
Nous allons maintenant classer ces en-têtes en deux catégories fonctionnelles : ceux qui identifient la session et gèrent son état, et ceux qui déterminent le chemin de la signalisation.
Headers d'Identification et d'État : Le "Qui" et le "Quoi"
Ces en-têtes définissent les participants de l'appel et permettent de corréler les messages entre eux au sein d'une même session de communication.
From, To, Call-ID et CSeq
FrometTo: Ces en-têtes identifient respectivement l'initiateur (l'appelant) et la destination (l'appelé) de la requête. Ils contiennent une URI SIP et souvent un nom d'affichage. Il est important de noter que leToheader n'est pas utilisé pour le routage de la requête initiale ; c'est la Request-URI de la première ligne qui remplit ce rôle.Call-ID: C'est un identifiant unique universel (UUID) qui est généré par l'appelant et reste identique pour tous les messages (requêtes et réponses) appartenant à une même session d'appel. C'est le principal "fil rouge" qui lie unINVITEà sonBYEcorrespondant.CSeq(Command Sequence): Cet en-tête contient un numéro de séquence et la méthode de la requête (INVITE,BYE, etc.). Il permet de distinguer les différentes requêtes au sein d'un mêmeCall-ID(une même session). Le numéro de séquence s'incrémente pour chaque nouvelle requête (par exemple, unINVITEauraCSeq: 1 INVITEet leBYEsuivant auraCSeq: 2 BYE). Il sert à ordonner les transactions et à différencier les retransmissions des nouvelles requêtes.
La combinaison de ces en-têtes est ce qui définit un dialogue SIP. Un dialogue est une relation de signalisation de pair à pair qui persiste pour une certaine durée. Il est identifié de manière unique par la combinaison de trois éléments :
Call-ID- Le
tagde l'en-têteFrom(une chaîne de caractères aléatoire ajoutée par l'UAC) - Le
tagde l'en-têteTo(une chaîne de caractères aléatoire ajoutée par l'UAS dans sa première réponse)
La vidéo suivante explique le rôle de chacun de ces en-têtes.
Continuons avec la même vidéo pour détailler ces quatre en-têtes d'identification.
Veuillez regarder les segments suivants : Explication du 'To' header Explication du 'From' header Explication du 'Call-ID' Explication du 'CSeq' Notez bien la distinction entre Call-ID (qui identifie tout l'appel) et CSeq (qui identifie une transaction dans l'appel).
L'image ci-dessous illustre parfaitement ce concept. Observez comment le Call-ID reste constant tout au long de l'échange, tandis que le CSeq change pour la transaction BYE.

Headers de Routage : Le "Où" et le "Comment"
Ces en-têtes sont le GPS du protocole SIP. Ils dictent le chemin que les messages doivent emprunter à travers le réseau, que ce soit pour les réponses ou pour les requêtes futures.
Contact et Via
-
Contact: Cet en-tête est l'un des plus importants mais aussi l'un des plus mal compris. Il contient l'adresse directe à laquelle un User Agent souhaite recevoir les futures requêtes au sein d'un même dialogue. Par exemple, dans unINVITE, l'appelant met son adresse dans leContactpour que l'appelé sache où envoyer unBYEou unre-INVITE. Ce n'est pas l'adresse de l'appelant (qui est dansFrom), mais son adresse de "réponse directe". C'est un point crucial pour la manipulation sur un SBC, qui agit souvent en tant que B2BUA (Back-to-Back User Agent) et réécrit cet en-tête. -
Via: Cet en-tête trace le chemin de la signalisation. Chaque proxy ou SBC qui relaie une requête SIP ajoute son propreViaheader en haut de la liste. LesViaheaders sont ensuite utilisés pour router les réponses en sens inverse, en suivant le chemin exact que la requête a emprunté. ChaqueViaheader contient également un paramètrebranchqui, combiné avec la méthode duCSeqet l'URI de la requête, identifie de manière unique une transaction.
La même vidéo explique très clairement le rôle des en-têtes Via et Contact.
Regardez maintenant ces deux segments : L'explication du 'Via' header, qui illustre comment plusieurs Via peuvent s'empiler. L'explication du 'Contact' header, qui souligne son rôle pour les requêtes et réponses futures.
Record-Route et Route
Ces deux en-têtes fonctionnent en tandem et sont essentiels lorsque l'appel passe par un ou plusieurs proxys SIP qui doivent rester dans le chemin de la signalisation pour toute la durée du dialogue. C'est le cas typique d'un SBC.
-
Record-Route: Lorsqu'un proxy "stateful" (comme un SBC) reçoit une requêteINVITE, il peut vouloir s'assurer que toutes les requêtes futures de ce dialogue (par exemple,BYE) passeront aussi par lui. Pour ce faire, il insère un en-têteRecord-Routecontenant sa propre adresse dans la requêteINVITEavant de la transmettre. S'il y a plusieurs proxys, chacun ajoute son propreRecord-Route. -
Route: Lorsque le destinataire (UAS) répond avec un200 OK, il copie tous les en-têtesRecord-Routede l'INVITEdans sa réponse. L'initiateur (UAC) reçoit ainsi le chemin complet des proxys. Cet ensemble deRecord-Routeest appelé le "Route Set". Pour toutes les requêtes ultérieures au sein du dialogue, l'UAC copiera ce "Route Set" dans une série d'en-têtesRoute. Ces en-têtesRouteforcent la requête à suivre le chemin des proxys établi lors de l'INVITEinitial. C'est ce qu'on appelle le "loose routing".

L'article suivant explique en détail cette interaction complexe mais vitale.
Contact and Record-Route headers explained - Smartvox Labs
Cet article de Smartvox Labs est une excellente ressource qui démystifie le fonctionnement des en-têtes Contact, Record-Route et Route avec des schémas clairs.
Veuillez lire les sections suivantes : Commencez par "What is the function of the Contact header?" pour consolider votre compréhension de cet en-tête. Lisez ensuite la section "Introducing the Record-Route header" qui explique pourquoi cet en-tête est nécessaire en présence de proxys. Poursuivez avec "How Record-Route headers are used". Cette partie est cruciale, elle montre comment le "Route Set" est établi. Enfin, lisez "Introducing Route headers" et la brève explication du mécanisme de "loose routing". Cela vous montrera comment le "Route Set" est utilisé dans les requêtes suivantes.
Pour visualiser ce processus, la vidéo ci-dessous montre une animation du flux. Même si l'audio est en hindi, les diagrammes et les mots-clés SIP sont universels et très parlants.
Cette vidéo, "SIP Record Route Header", anime le processus de création des en-têtes Record-Route et leur transformation en en-têtes Route. Concentrez-vous uniquement sur les schémas.
Observez attentivement les animations dans ces sections : Le problème initial : un ACK ou un BYE contournerait les proxys sans Record-Route. La solution : les proxys P1 et P2 ajoutent leurs adresses dans des en-têtes Record-Route dans l'INVITE, et ces informations sont renvoyées dans le 200 OK. L'utilisation : le téléphone A utilise ces informations pour construire des en-têtes Route pour la requête BYE, forçant le message à passer par P2 puis P1.
Résumé de Référence
Le tableau suivant, tiré de la documentation de VoIPmonitor, est un excellent aide-mémoire que vous pouvez consulter.
Understanding the SIP Protocol - VoIPmonitor.org
Ce document fournit un tableau concis qui résume le rôle de chaque en-tête essentiel.
Consultez le tableau sous la section "SIP Headers". Il résume les en-têtes que nous avons vus (Via, From, To, Call-ID, CSeq, Contact, Record-Route) et confirme comment un dialogue est identifié.
Conclusion
Dans cette leçon, nous avons décortiqué les en-têtes SIP qui sont au cœur de la signalisation. Vous devriez maintenant être capable de les interpréter et de comprendre leur rôle spécifique :
- Identification & État :
From,To,Call-ID, etCSeqtravaillent ensemble pour identifier de manière unique un dialogue et les transactions qui le composent. - Routage :
Contact,Via,Record-Route, etRouteconstituent le système de navigation de SIP, assurant que les requêtes et les réponses atteignent leur destination, même à travers des réseaux complexes avec des proxys et des SBC.
La distinction entre le routage des réponses (via les en-têtes Via) et le routage des requêtes subséquentes (via les en-têtes Route dérivés de Record-Route) est un concept clé en ingénierie SIP. Sa maîtrise est indispensable pour configurer et dépanner un SBC AudioCodes.
Dans la prochaine leçon, nous assemblerons toutes ces pièces du puzzle. Nous tracerons un flux d'appel SIP complet, de l'INVITE initial au BYE final, en observant comment ces en-têtes sont utilisés et modifiés à chaque étape.