Quelle est exactement la différence entre une session, une boîte de dialogue et une transaction?
Tous doivent-ils être présents ensemble?
Une transaction comprend une demande, toutes les réponses non finales (1xx) reçues et une réponse finale (2xx, 3xx, 4xx, 5xx ou 6xx), ainsi que les accusés de réception des réponses (ACK ou PRACK), sauf pour ACKs aux réponses 2xx. Par exemple:
SIP peer A sends an INVITE Request to SIP peer B
SIP peer B returns a Response of 100 TRYING; this is a non-final Response, so the transaction is not completed yet
SIP peer B returns 200 OK (a final response), accepting the invitation; this completes the transaction
Fondamentalement, une demande-réponse complète.
Une boîte de dialogue n'est qu'une série de transactions entre deux SIP pairs. Le but d'une boîte de dialogue est de configurer, éventuellement modifier, puis de démonter une session. D'où le nom Protocole d'initiation de session . Puisqu'il pourrait y avoir de nombreux dialogues en cours entre deux SIP pairs à tout moment (par exemple, il pourrait y avoir plusieurs appels simultanés en cours entre deux SIP), les boîtes de dialogue sont identifiées par les champs From, To et Call-ID dans l'en-tête. Donc, si SIP l'homologue A reçoit deux requêtes BYE) en même temps, il peut regarder ces champs pour déterminer à quelle boîte de dialogue ils appartiennent.
Un ensemble typique de transactions que vous pourriez voir dans une boîte de dialogue pourrait inclure:
SIP peer A invites SIP peer B to a session and suggests a certain codec, but does not include authentication and so is rejected
SIP peer A again invites SIP peer B to a session, this time supplying authentication, and the invitation is accepted
SIP peer B sends an invitation to change the codec used, and it is accepted
SIP peer A ends the session
Une session n'est qu'un flux multimédia (par exemple audio ou vidéo) circulant entre pairs, généralement composé de paquets RTP (et éventuellement RTCP). Par exemple, si SIP = est utilisé pour passer un appel vocal, la session correspond aux données vocales envoyées entre les points d'extrémité
Pour répondre à la question, avez-vous besoin des trois ensemble, vous avez besoin de transactions et de dialogues pour créer des sessions, et les sessions sont tout l'intérêt du protocole
Voici un lien vers un fil qui contient des exemples de dialogues et de transactions