SIP协议中与Dialog相关的概念

news/2024/12/25 21:39:46/文章来源:https://www.cnblogs.com/bjtime/p/18621961

如下RFC文档所述:在SIP协议中,对话(Dialog)是由两个用户代理(User Agent,简称UA)之间持续一段时间的端到端关系,通过Call-ID、To-tag和From-tag来标识(即Dialog ID),用于对一个会话(Session)进行信令交互。对话代表一个上下文场景,据此来阐释相关的SIP消息(即一系列事务)。对话的建立通常是在收到响应消息(如180响应)时开始,收到2XX响应时才真正建立对话

A dialog is a peer-to-peer SIP relationship between two user agents that persists for some time. A dialog is identified by a call identifier, local tag, and a remote tag. A dialog is established by SIP messages, such as a 2xx response to an INVITE request. The dialog facilitates sequencing of messages and proper routing of requests between the user agents. The dialog represents a context in which to interpret SIP messages. A dialog was formerly known as a call leg.

 

在RFC文档中出现了一些Dialog相关的概念: early dialog, confirmed dialog, inside of a dialog, outside of a dialog, mid-dialog。但这些概念在文档中模糊不清,没有严格定义。这里从中摘录了一些描述,个人了解有限,欢迎讨论。

> early dialog:早期对话

  • A dialog established by a non-final response to a request is in the "early" state and it is called an early dialog, and then transition to the "confirmed" state when a 2xx final response arrives. 收到18x临时响应时建立的Dialog.
  • For other responses, or if no response arrives at all on that dialog, the early dialog terminates.
  • 早期对话通常由CANCEL终结.

 

> confirmed/final dialog:最终对话

  • 收到对200 OK (Inivte)的ACK响应才建立最终对话.
  • 最终对话通常由BYE终结.
  • The caller's UA MAY send a BYE for either confirmed or early dialogs, and the callee's UA MAY send a BYE on
    confirmed dialogs, but MUST NOT send a BYE on early dialogs.

 

> outside of a dialog:对话外

  • 表示消息处于对话之外。这些消息通常用于会话的初始建立或者在没有建立对话关联的情况下发送。 

  • Examples of requests sent outside of a dialog include an INVITE to establish a session and an OPTIONS to query for capabilities.
  • A request outside of a dialog MUST NOT contain a To tag. 对话外的请求不含To-tag.
  • 不确定200 OK (INVITE)之前的可靠性临时响应是否outside of a dialog。

 

> inside of a dialog:对话内

  •  强调消息是在一个已经成功建立的对话内部.
  • 不确定200 OK (INVITE)之前的可靠性临时响应是否inside of a dialog。

 

> mid-dialog:对话中

  • mid - dialog指的是在一个已经建立的对话过程中发生的事务或消息。它用于在对话期间对会话进行修改、更新等操作。
  • mid-dialog requests may have been sent within the early dialog.

  • The UAS will receive the request from the transaction layer.  If the request has a tag in the To header field, the UAS core computes the dialog identifier corresponding to the request and compares it with existing dialogs.  If there is a match, this is a mid-dialog request.

 

为方便理解,下图是IMS网络中比较完整的SIP对话建立和终止流程图:  

  • 有的流程中可能没有183响应和UPDATE请求。
  • 180 Ring可能不带“100rel”参数,无需PRACK确认。
  • ACK是一个独立的事务。
  • 属于outside of a dialog的请求不只是流程图上的消息。

  

1)REGISTER流程是否算作一个对话?

RFC指明了REGISTER请求不会建立对话A REGISTER request does not establish a dialog.

‌属于非对话消息处理‌:在对话建立之前或对话结束后的消息交换,如注册消息(REGISTER)和取消注册消息(DE-REGISTER),这些操作不在当前对话的上下文中进行‌。

 

2)如何区分初始邀请(INVITE)和再邀请(Re-INVITE)消息?

在SIP消息中,初始INVITE和Re-INVITE消息,都是同一个SIP方法(SIP method)"INVITE",区分如下:

初始INVITE不带To-tag,该参数通常是在1xx响应消息中分配的。而Re-INVITE带上了之前已经分配的To-tag信息。

 

参考文档:

1. SIP Introduction

2. RFC 3261: SIP: Session Initiation Protocol

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858305.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBuilderX运行到微信开发者工具

HBuilderX运行到微信开发者工具

快手MARM 文章理解

阅读了快手的论文 MARM,论文中的算法 符号看起来不容易理解。 对照图自己研究了下, 理解了。需要知道为什么(b) 和(c) 中 的中间结果是相同的。需要知道 masked-self-attention缓存是怎么处理,看箭头快手 MARM: Unlocking the Future of Recommendation Systems through Mem…

NSSCTF--Crypto--[CISCN 2023 初赛]badkey

NSSCTF Crypto [CISCN 2023 初赛]badkey[CISCN 2023 初赛]badkey task: from Crypto.Util.number import * from Crypto.PublicKey import RSA from hashlib import sha256 import random, os, signal, stringdef proof_of_work():random.seed(os.urandom(8))proof = .join([ra…

deque容器/构造函数/赋值操作/大小操作/插入和删除/数据存取/排序

deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度会比vector块 vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:…

CSS基础-长度单位

💖简介 在CSS中,长度单位分为绝对长度单位和相对长度单位。这些单位用于定义元素的尺寸、边距、填充、字体大小等属性值 vmin和vmax是CSS中的相对长度单位,它们基于视口(viewport)尺寸来定义元素的宽度或高度。这些单位使得元素的尺寸可以根据视口的大小进行缩放,从而有…

基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN

1.算法运行效果图预览 (完整程序运行后无水印) filePath =Test_data\悲伤1.wav类型:悲伤 识别置信度Vmax =0.9559 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)Labsn = []; % 遍历每种情绪 for i = 1:length(Em_kind)Labs0…

学习高校课程-软件设计模式-访客模式(lec13)

Visitor: Problem Example: exporting the graph into XML format 示例:将图表导出为 XML 格式Visitor: Solution Place the new behavior into a separate class called visitor The original object passed to the visitor’s method as an argument

[学习笔记] 线性筛与欧拉函数

一 线性筛主要讲下思想,埃氏筛法就是用所有质数标记所有倍数,这样的时间复杂度是 \(O(n\log n\log n)\),有两只 \(\log\)。可是我不想要 \(\log\),于是欧拉筛: 改进:存下质数表。对于每一个数,只标记自己与不超过自己最小质因子的数的乘积,对于质数表 \(2,3,5\),循环到…

低空经济的地理信息支撑:构建安全、高效的飞行管理体系

随着无人机等低空飞行器的广泛应用,低空空域管理的重要性日益凸显。地理信息技术作为低空空域管理的重要支撑,对于保障低空经济的健康发展具有不可替代的作用。 地理信息技术在低空空域管理中的作用地理信息技术在低空空域管理中扮演着关键角色,主要体现在以下几个方面:空域…

【Nginx应用】Windows下使用Nginx反向代理访问MySQL数据库

环境说明1和2互通,2和3互通,1和3不通,想要在1上访问3上的msyql服务。实现步骤如下: 一、安装nginx 1.1 下载nginx 下载地址 https://nginx.org/download/nginx-1.26.2.zip 1.2 将下载的安装包上传到192.168.221.134运维跳板机,并解压1.3 nginx常用操作 1.3.1 启动nginx…

Hume 语音模型 OCTAVE:实现情感语音合成、声音克隆和多角色对话生成;通义开源多模态说话人识别项目 3D-Speaker

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编…

[学习笔记] 网络流

网络流,梳理一下然后看下 trick。 网络流主要难点在于建模,网络流很多 trick 现在已经很难有新意了。很多很好想的都是紫题,没啥含金量啊。 最大流 在残量网络中找到一条路径,设边集为 \(u\),要求满足 \(\min_{ x\in u} C_x ≠ 0\),即每条边残量皆不为 \(0\)。此时将这条…