§ 2.1.1

L'INVITE.

Alice envoie une requête. Elle inclut un SDP qui décrit le canal audio qu'elle propose — codec, port d'écoute, adresse IP.

INVITE sip:bob@sip.ippi.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-7a1f
Max-Forwards: 70
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 1 INVITE
Contact: <sip:alice@192.0.2.4:5060>
Content-Type: application/sdp

v=0
o=alice 2890844526 2890844526 IN IP4 192.0.2.4
m=audio 49170 RTP/AVP 0 8 96
a=rtpmap:96 opus/48000/2

L'INVITE est la seule méthode SIP qui demande un ACK final — parce que c'est la seule qui peut faire sonner un téléphone, et qu'il faut une confirmation explicite que l'utilisateur a bien décroché des deux côtés.

§ 2.1.2

100 Trying.

Le proxy d'Alice (ou le UAS de Bob) acquitte la réception. Ça stoppe les retransmissions de l'INVITE : l'UDP n'étant pas fiable, Alice retransmet son INVITE toutes les 500 ms tant qu'elle n'a pas reçu une réponse provisoire. Le 100 dit : j'ai vu, je m'en occupe.

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-7a1f
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 1 INVITE
§ 2.1.3

180 Ringing.

Le téléphone de Bob sonne. Alice reçoit cette réponse et joue un ringback tone local — le bip-bip-bip d'attente qu'on entend dans le combiné. Sauf si Bob renvoie un 183 Session Progress avec une description SDP : alors le ringback vient du réseau, en RTP, avant même que Bob décroche.

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-7a1f
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>;tag=b2c1
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 1 INVITE
Contact: <sip:bob@198.51.100.7:5060>

Notez le tag=b2c1 sur le To. C'est le tag de Bob, ajouté à partir de cette réponse. Désormais le triplet Call-ID + From-tag + To-tag identifie le dialogue précoce. Si Alice annule, son CANCEL doit citer ces trois éléments.

§ 2.1.4

200 OK.

Bob décroche. Le 200 contient son propre SDP — la réponse à l'offre d'Alice. Bob y annonce le codec qu'il accepte parmi ceux proposés, son adresse IP et son port RTP. À partir de cet instant, les deux extrémités connaissent la totalité du contrat média.

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-7a1f
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>;tag=b2c1
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 1 INVITE
Contact: <sip:bob@198.51.100.7:5060>
Content-Type: application/sdp

v=0
o=bob 3812744426 3812744426 IN IP4 198.51.100.7
m=audio 38214 RTP/AVP 96
a=rtpmap:96 opus/48000/2
§ 2.1.5

ACK.

Alice confirme avoir reçu le 200. C'est la troisième poignée de main. Sans ACK, Bob considère que l'appel a échoué et retransmettra son 200 jusqu'à expiration. Une fois l'ACK reçu, le dialogue est confirmé et le RTP commence à couler.

ACK sip:bob@198.51.100.7:5060 SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-9d2e
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>;tag=b2c1
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 1 ACK
§ 2.1.6

BYE.

L'un des deux raccroche. Peu importe lequel — le BYE peut venir d'Alice ou de Bob. Il est acquitté par un 200 OK et le dialogue est clos. Le flux RTP s'arrête.

BYE sip:bob@198.51.100.7:5060 SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4:5060;branch=z9hG4bK-c0fa
From: "Alice" <sip:alice@lacroix.tv>;tag=a3f7
To: "Bob" <sip:bob@sip.ippi.com>;tag=b2c1
Call-ID: 2c2e9f2c@lacroix.tv
CSeq: 2 BYE

Le CSeq est passé à 2 : c'est la deuxième transaction du dialogue, après l'INVITE initial. Le CSeq numérote les transactions, pas les messages.

§ 2.1.7

« Six messages texte pour un appel téléphonique. Le reste est de l'air. » — note de lecture

Suivant : S'inscrire au registrar →