VOIP SIP 事务的概念

【SIP基础】SIP协议响应代码 SIP响应是由一个用户代理服务器(UAS)或SIP服务器生成回复由客户端生成的请求的消息。它可能是一个正式的确认,以防止请求由UAC重发。 响应可能包含需要一个UAC信息一些额外的头字段 SIP有六个响应 1xx - 5xx已经借由HTTP,而6xx系列在SIP介绍。 1XX被认为是一个临时响应,其余的最终响应。 类 别 描述 动作 1xx 信息 这表明调用之前完成也被称为临时响 阅读详情

SIP协议中,比较有特点的就是SIP事务了。那么想要理解SIP事务的概念,我们还需要了解sip请求的一些内容。

sip事务的概念:一个sip请求以及由它触发的一系列应答(包括临时应答和一个最终应答)。

sip请求有6种(核心规范定义的,也有扩展),也叫6个方法(Method字段标识):

INVITE, ACK, OPTIONS, BYE, CANCEL, REGISTER

sip请求的格式包括请求行(如INVITE sip:192.168.101.30 SIP/2.0),

sip应答的格式包括状态行(如SIP/2.0 100 Trying);sip应答的状态码从100到699,其中100~199是临时(provisional)应答。

sip请求:INVITE请求是三次握手机制,其他请求都采用两次握手机制。

sip请求:CANCEL 请求用于取消悬而未决的事务,我的理解是一方发出INVITE,但是另一方始终没有做出应答,

发出200OK消息(超过了默认的振铃时长),那么UAC会 自动发出一个CANCEL请求,UAS返回200OK,

并且同时发出487  (SIP_REQUEST_TERMINATED     487   //请求无应答 ) 状态码的应答,

UAC再对收到的487消息发出ACK确认,即最开始的 INVITE和487以及ACK构成三次握手。

sip请求:OPTIONS请求用于询问服务器的性能情况,包括这个服务器所支持的方法(可能会有扩展方法)和会话描述协议。

代理服务器的三种类型:保留呼叫状态代理、保留状态代理、不保留状态代理。这三种类型的代理在处理能力和

所占用资源上有差别,在代理分发中我们采用网络核心无状态,而在流量较小的网络边界采用智能性高的保留(呼叫)状态服务器处理路由。

sip消息编码采用文本方式(即使用字符串),相对的是二进制的编码方式,前者易于调试和扩展,后者则有利于节省带宽。

sip标题头:

CALL-ID 字 段用于标识一个特定邀请以及与这个邀请相关的所有后续事务(即标识一个会话),比如一方发起邀请加入一个国际象棋的会话,那么INVITE请求以及应答, BYE请求以及应答都共享一个CALL-ID,因为这两个事务都属于一个特定邀请。而两个用户之间可以同时存在多个

邀请(比如在下象棋的同时发起聊天的邀 请),那么一个邀请中的后续事务将通过这个邀请特有的CALL-ID来区分,如一方发出BYE消息来结束聊天,

但是下棋仍然进行中,那么另一方将根据 BYE消息的CALL-ID来确定要结束的究竟是哪一个会话。该文章讲述了理解SIP事务的概念2.

CSeq 字段是用来


给同一个会话中的 事务进行排序的。可以理解为,会话由CALL-ID来标识,会话中的事务则由CSeq标识。除了ACK请求和CANCEL请求,INVITE之后的请求中 CSeq字段的数字是最初请求(INVITE)的CSeq递增的结果。而ACK和CANCEL请求则拥有与它所确认(取消)的请求相同的CSeq数字部 分,只是方法名不同。

Contact 字段是被呼叫方发送200OK消息时带上的,包含了被叫方的真实IP,这样sip服务器在路由第一个INVITE请求之后就可以被卸载掉(越过),不再需要存在于信令路径中。

Recode-Route和Route字 段是用来使sip服务器保留在每次请求中,不被绕过。Record-Route字段由信令路径上的服务器添加(每经过一个信令路径上必须存在的代理,就添 加一个Record-Route标题头),maddr参数包含该代理的IP地址。被叫方发出的200OK应答包含Record-Route和 Contact字段(Record-Route可能有多个),呼叫方收到200OK后根据这两个字段创建用于后续请求的Route标题头(可能有多个), 其包含的是信令路径上的下一跳的下一跳的(hehe,有点别扭,不过意思是对的)真实IP。

To 字段 总是包含被呼叫方的地址(通过sip代理时是公用地址,点对点时是真实ip),要注意的是区别该标题头和sip消息请求行中的Request-URI。 To在信令路径中不会被代理改变,然而Request-URI包含的是信令路径中下一跳的地址,因此在路途中被每个代理改变。

Via 字 段存储所有处理请求的代理地址(包括用户代理和sip代理),它可以用来检测路由循环,也用于使应答消息经过请求消息来时相同的路径(方向相反)。因此, 在请求消息发送时,via标题头的数量是随着跳数逐渐增加的,而应答消息返回时,via标题头的数量则逐渐递减(每经过一跳则剥离一个有它自己地址的 Via标题头)。

(sip标题头完)

sip消息可能含有消息体(一个或多个),通常是会话描述符,也可以是照片或其他附件。一般情况下,消息体只对UA有意义,因此可被端到端加密。

有时候,sip代理处于控制的原因也需要检查被交换媒体的信息。

sip请求中NVITE事务:

SIP使用UDP传输协议来传送INVITE消息时,要使用逐 跳重传机制保证INVITE的最终传送,即用户代理UA和sip代理proxy都要保证INVITE

到达下一跳,下一跳收到时会返回一个临时应答 (proxy返回100Trying,UA返回100Trying和180ringing),代理在限定时间内收不到应答即会重传INVITE。

临时应答(100~199)用于阻止逐跳INVITE重传,没有端到端的可靠传输,也就是说当被叫方返回180应答时,如果在路径中途丢失,也不会重传。

最终应答(200~699)能被保证到达它们想要去的目的地。

成 功应答(200~299)被可靠地传送到呼叫方UA,但不是使用逐跳重传机制。只有呼叫方UA能为最终成功应答发送一个ACK(直接发送到被叫方UA),

 如果成功应答在路径中途丢失或者UA发出的ACK丢失,那么被叫方会在限定时间内收不到ACK时重新发送最终应答,直到收到ACK的确认。

非成功最终应答(300~699)使用和INVITE一样的逐跳机制。被叫方用户代理将持续重传非成功应答(给前一跳),直到收到ACK为止(proxy也可以

为非成功应答发送ACK)。

sip请求中CANCEL事务:

CANCEL事务与INVITE事务都是逐跳事务,但是处理方法不同,路径上的每一个代理收到CANCEL请求时,都会发送一个最终应答来响应

(而不是发出临时应答),并且向下一跳发送一个CANCEL请求。

SIP应答消息状态码 SIP应答消息状态码与功能类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 queue 排队181* session progress 会话进行会话成功(2XX) 200 OK 会话成功重定向(3XX) 300 multiple 多重选择301 move... 阅读详情

相关推荐

Android 开发 voip/sip 程序

首先说明一下相关概念,voip 和Sip ,voip 的意思是网络电话,会话发起协议(SIP)是建立VOIP连接的IETF标准。SIP是一种应用层控制协议,用于和一个或多个参与者创建、修改和终止会话。SIP的结构与HTTP(客户-服务器协议)相似。客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机发送一个响应。该请求与响应形成一次事务,sip协议主要是基于udp的传输方式(语音数据),

Android 小生的博客 1万+

SIP协议之事务(transaction)及INVITE事务

SIP事务(SIP Transaction):SIP 事务发生在客户端和服务器之间并且由从第一个从客户端发送到服务器的请求直到最后一个。SIP协议是一个事务协议,组件间的交互是由一系列独立的消息交换完成的。具体来说,一个SIP事务由一个请求和任意个应答组成,包含0个或多个临时应答以及一个或多个最终应答。

szkbsgy的专栏 4327

语音业务VOIP开发之SIP协议篇(三) —— SIP报文解析

下面深入了解SIP报文:      SIP是基于一个类似HTTP协议的请求应答的通讯模式。每一个通讯都包含对某个功能的请求,并且起码需要一个应答。在这个应答中,Alice的软电话发送一个含有Bbo的SIP URI抵制的INVITE通讯请求。INVITE是一个SIP请求的例子,表示请求方(Alice)希望服务方(Bob)应答。INVTE请求包含一系列的包头域(Header fields)。包头中包

知秋一叶 1万+

SIP协议-关于Session(会话)、Dialog(对话)、Transaction(事物)的理解

最近在看asterisk的代码,发现难以理解,反复思考后认为,难以理解的根本原因还是对电话业务的逻辑不熟悉,导致看代码愈发的晦涩难懂。我认为其中最重要的几个部分是对Session(会话)、Dialog(对话)、Transaction(事物)流程的理解。因此这里总结了一下会话、对话和事务的概念,并分别对其进行了详细的概念分析。会话用于进行媒体流传送。当一方发出请求,而另外一方或多方接受请求并通过信令交互成功后才能建立会话。其本质是跟SDP内信息相关。在SDP中,多媒体会话指的是一组的媒体发送方和接收方及媒体流

nb_zsy的博客 4521

android sip协议通话代码实现

android里面的voip通话基于sip协议,关于voip和sip协议的了解,请大家去参考相关文档,本文不做解释. sip协议的核心是SipService,它的注册与一般服务的注册不同,绝大多数Service都是之间在SysetmServer中进行注册,而SipService是在TeleService apk中注册, 具体代码在PhoneGlobals.java中. Handler mHa

xqzhan的专栏 9676

基于SIP协议的Android VoIP语音通话系统开发实战

SIP注册流程的核心目的是将用户代理(UA)的身份信息(如SIP URI)绑定到当前网络地址,使得SIP服务器能够将其他用户的呼叫请求正确地转发到该UA。这一流程是SIP会话建立的基础,其正确性直接影响到后续通话的可达性。SDP协议是IETF定义的用于描述多媒体通信会话的协议,其核心作用是在SIP会话中交换媒体参数,确保会话双方能够协商出一致的媒体配置。SDP本身并不负责传输,它通常作为SIP消息体(如INVITE或200 OK)中的payload进行传输。

weixin_30765637的博客 1012

asterisk 对接 移动IMS 外呼接通时返487错误(已解决)

症状: 1.呼入正常 2.外呼部分手机号正常 3.外呼部分号码时,外线一接通,IMS会返回487,然后就挂掉了 经查是maxptime 与移动IMS不匹配造成,移动要求是240,但是asterisk的是150 参考了下面的文档 RTP Packetization - Asterisk Project - Asterisk Project Wiki 尝试了 修改sip_additional.conf 外呼结果是如下,因为这样只能改变ptime ,而 maxptime 超过1

张拓的博客 1万+

SIP协议与Asterisk实战:构建高效VoIP通信系统

在中编写路由逻辑:lr>)逻辑说明:- 匹配任意号码_X.;- 使用插入Route头,强制请求经指定代理;Dial()触发请求转发。

weixin_33308579的博客 1448

SIP(Session Initiation Protocol,会话初始协议)

一、概念: SIP(会话发起协议): 是一个应用层的信令控制协议, 定义了用户间交互式媒体会话的发起,修改和终止过程. SIP默认使用UDP 5060端口,但也可以使用TCP 5060。   SIP的四项基本功能:定位用户,将SIP地址解析为IP地址; 协商Session的feature和capability; 在进行呼叫时改变会话参数; 负责会话的建立和中断。

梦想专栏 1512

Win10管理员权限的‘暗门’:从mmc.exe被阻止,聊聊UAC与自动提权那些事儿

本文深入解析Windows 10中UAC(用户账户控制)与自动提权机制,探讨mmc.exe被阻止的深层原因及解决方案。从UAC工作原理到自动提权机制,再到具体诊断与修复步骤,帮助用户理解并解决权限管理问题,同时平衡安全性与便利性。

weixin_30521161的博客 419

芯片设计数字后仿与SDF文件:原理、流程与实战调试指南

在数字芯片设计流程中,时序验证是确保芯片功能正确与性能达标的核心环节。其原理在于通过精确的物理延迟模型,模拟信号在真实硅片上的传播行为,从而暴露理想仿真中无法发现的时序问题。这项技术的核心价值在于它是连接前端逻辑设计与后端物理实现的桥梁,能有效发现建立时间/保持时间违例、时钟偏斜、竞争冒险等关键风险,是保障芯片一次流片成功的关键步骤。其典型应用场景包括高性能计算单元、复杂SoC以及低功耗设计中的状态切换验证。本文聚焦于数字后仿真的具体实施,深入解析SDF文件的结构与反标机制,并提供从环境搭建、波形分析到与静

weixin_34279184的博客 382

计算机基本知识

NAT是网络地址翻译就是把公网IP翻译成私有地址, 又叫端口映射或端口转发. 采用路由方式是指ADSL拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。这时ADSL的外部地址只有一个,比如61.177.*.*。 而内部的IP是人为设置的,比如ADSL设为192.168.0.1,下面的电脑就依次设为192.168.0.*(*表示1,2,3,...)。Real

563

Android 面试题 Handler篇

1.Handler的实现原理。

ViewHandKownHealth的博客 955

VoIP通话之SIP协议

一、前言 SIP(Session Initiation Protocol), 是属于应用层的控制协议,主要用于在一个或多个参与者之间创建,修改和中止会话(sessions).会话的类型包括IP电话, 多媒体流分发和多媒体会议等. SIP邀请(invitations)用于创建携带会话描述(如SDP信息)的会话,允许参与者使用一系列兼容的媒体类型. SIP使用一种叫代理服务器的元素来帮助对用户当前位置进行转发,对用户进行验证和授权,并为用户提供相应的功能. SIP同时也提供了注册函数以允许用户上传他们的当前

clark的专栏 3128

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(四)-无人机系统(UAS)命令与控制(C2)通信用例

UTM向5G网络提供无人机系统C2通信所需的信息,例如服务类别、无人机系统服务的流量类型、授权的无人机系统服务所需的QoS以及无人机系统服务的订阅。遵循模型B的网络辅助C2模型,为了确保UAS操作的C2通信的服务可用性和可靠性,特别是当无人机在操作员的视线之外(BLOS)飞行时,为无人机提供支持冗余的C2通信链路。如果需要创建额外的C2通信连接或更改现有数据连接的配置以进行C2通信,则5G网络会根据无人机系统的授权服务信息和C2通信中所需的QoS和优先级,修改或分配一个或多个C2通信流量的QoS流。

u011376987的博客 2051

SAP FB03凭证修改实战:巧用BAPI FI_DOCUMENT_CHANGE更新抬头与行项目

本文详细介绍了SAP FB03凭证修改的实战技巧,重点解析了BAPI FI_DOCUMENT_CHANGE的使用方法。通过该接口,用户可以在不冲销原凭证的情况下直接更新抬头文本(BKTXT)和行项目文本(SGTXT),确保凭证编号连续且符合审计要求。文章包含核心机制解析、完整实现步骤、错误处理方案以及高级应用场景,帮助开发者高效完成SAP财务凭证修改。

weixin_29251567的博客 424

VOIP之SIP协议

SIP协议的一些理解

Yanci23的博客 1611

抖音自定义卡片链接(图文链接)

抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil

傅恒的博客 4140

【SIP协议介绍】

1. 概述 SIP(Session Initiation Protocol)中文名为初始会话协议,是一个在IP网络上进行多媒体通信的应用层控制协议,它被用来创建、修改、和终结一个或多个参加者参加的会话进程。是一种通信协议,定义了如何在通信设备(计算机,电话,手机,PDA等)之间相互连接和信息交换。 SIP 是为Internet 制定设计的协议,像HTTP协议一样是基于文本UTF-8字符集;采用事务机制(请求/应答机制),每一个请求触发Server的操作方法,请求 和响应构成一个事务,事务间彼此独立;SIP协

qq_25137439的博客 1万+

YOLOv12改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

《YOLOv12高效涨点改进专栏》提供500+创新改进方案,涵盖卷积、主干网络、注意力机制等模块优化,适用于检测、分割等任务。改进点来自顶会论文和个人经验,支持多种模型版本和任务场景。专栏包含详细教程、数据集增强、性能评估工具等,帮助科研人员快速实现模型优化和论文发表。提供完整运行项目和环境配置指导,适合计算机及相关专业研究人员使用,持续更新保障长期科研需求。

Ai缝合怪、助力小伙伴高效发论文 2301

动网格-网格重构之铺层(三)

运动区域可以是边界区域 (Boundary Zone),也可以是单元区域 ( Cell Zone)。指定了体网格再生方法后,FLUENT自动地根据运动区域(dynamic zones)的运动来调整内部节点以再生体网格。必须保留至少一层网格。(4)如果边面的法向和运动方向偏角较大,生成的网格扭斜度会比较大铺层算法不适用于边界形状变化较大的情况。(1)体网格再生方法的选择(Smoothing,Layering,Remeshing);(2)适用网格种类:四边形、六面体、三棱柱(网格的分布要服从一定的规则)。

weixin_44386973的博客 2095

音视频处理(四):一文讲清楚VoIP语音通话SIP和RTP协议

语音技术从模拟电话发展到全IP化的VoIP技术,经历了数字化和协议信令自动化的演进。SIP协议作为会话控制协议,采用UDP传输,负责信令控制,而RTP协议承载语音流。SIP协议架构包含注册服务器、代理服务器、用户代理等组件,通过文本格式的请求行、消息头和消息体进行通信。关键流程包括注册(register)和通话(invite),其中注册流程分为需要认证和无需认证两种方式。SIP地址信息类似网络路由转发,包含to/from/uri/via/contact等字段用于路由和响应。

qq_40036519的博客 2535

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SIP,VOIP状态码详解

SIP (Session Initiation Protocol) 状态码类似于 HTTP 状态码,用于指示 SIP 请求的结果。SIP 状态码分为六个类别,每个类别都有一个特定的含义范围。

hongkid的专栏 3708

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Sip消息流程

基本消息(Basic Messages) 在SIP环境中会被发送的基本的消息有: 大多数时间内,你会使用到REGISTER,INVITE,BYE还有CANCEL。而另外一些消息会被用在其他的特性当中。举例来说,INFO被用在DTMF relay和通话中消息信息(mid-call signaling information)。PUBLISH,NOTIFY和SUBSCRIBE则用来支持列席系统...

ly930156123的博客 4314

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIP协议小白入门:用快马10分钟搭建第一个VoIP应用

SIP(Session Initiation Protocol)是互联网上实现语音、视频通话的基石协议。建议从修改SDP参数开始实验,比如调整音频编解码器,观察呼叫建立过程的变化。这种即时反馈的学习方式,比单纯读RFC文档高效得多!Vue3实现响应式界面。

AgatePanther34的博客 826

sip协议栈详解

SIP协议是一种用于创建、修改和终结多媒体会话的应用层信令协议,广泛应用于 VoIP、视频会议、即时消息等场景。它采用客户机 / 服务器模式,通过在各个网络节点之间传递信令消息,为用户提供更加灵活、高效的通信服务。

m0_74369704的博客 666
上一篇: WebRTC简介及其与SIP互通
下一篇: SIP出错原因码
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值