分享

IMS系统的SIP消息

 和老康一起学5G 2022-08-29 发布于陕西

在IMS系统中SIP消息分为请求(requests)响应(responses)两大类其中:

  • 请求开头行中包含一个定义请求方法及一个请求发送位置的Request-URI。

  • 响应开头行中包含响应代码。

一、请求消息

SIP中的请求(requests)是用于建立通信的代码。其作为补充SIP响应通常指示请求是成功还是失败。SIP的请求消息中由另一个用户代理或服务器执行的特定操作,其通过两种方法执行:

  •    核心方法(Core Methods)

  •    扩展方法(Extension Methods)

二、核心方法  在SIP消息中共有六种核心方法执行,它们分别为:

2.1.邀请(INVITE)用于启动与用户代理的会话,具体用于在用户代理之间建立媒体会话,其中:

  • INVITE可以在消息体中包含调用者的媒体信息;

  • 如果INVITE已收到成功响应(2xx)或已发送ACK,则认为会话已建立。

                              图1.INVITE及应答消息

  • 邀请中一个成功的INVITE请求会在两个用户代理之间建立一个对话,该对话一直持续到发送BYE来终止会话。

  • 在已建立的对话中发送的邀请称为重新邀请。

  • Re-INVITE 用于更改会话特征或刷新对话状态。

2.2.再见(BYE)用于终止已建立会话方法,可由主叫或被叫方发送结束会话。

  • BYE不能由代理服务器发送。

  • BYE请求通常端到端路由,绕过代理服务器。

  • BYE不能发送到待处理的INVITE或未建立的会话。

2.3.登记(REGISTER)请求执行用户代理注册,由用户代理发送到注册服务器。

  • REGISTER请求可以被转发或代理,直到它到达指定域的权威注册商。

  • 它在正在注册的用户的To标头中携带AOR(记录地址)。

  • REGISTER 请求包含时间段(3600秒)。

  • 一个用户代理可以代表另一个用户代理发送注册请求。这也称为第三方注册;其中From标记包含代表To标头中标识的一方提交注册的一方的URI。

2.4.取消(CANCEL)用于终止未建立的会话;用户代理使用此请求取消之前发起的挂起呼叫尝试。

  • CANCEL可由用户代理或代理服务器发送;

  • CANCEL是逐跳请求,即它通过用户代理之间的元素并接收下一个有状态元素生成的响应。

                              图2.CANCEL消息及应答

2.5.确认(ACK)用于确认对INVITE的最终响应。一个ACK总是朝着INVITE的方向前进。如果它在INVITE中不可用,则它可能包含SDP主体(媒体特征)。

图3.ACK消息中SDP

  • ACK不能用于修改初始INVITE中已经发送的媒体描述。

  • 接收ACK的有状态代理必须确定是否应将ACK 下转发到另一个代理或用户代理。

  • 对于2xx响应,ACK是端到端的,但对于所有其他最终响应,当涉及有状态代理时将逐跳工作。

                                     图4.486与ACK应答

2.6.选项(OPTIONS)用于向用户代理或代理服务器查询其功能并发现其当前可用性;对请求响应列出了用户代理或服务器功能。代理不生成OPTIONS请求。

三、扩展方法

3.1.订阅(SUBSCRIBE)用户代理使用SUBSCRIBE来建立订阅获取有关特定事件的通知。

  • SUBSCRIBE中包含一个Expires标头字段,指示订阅的持续时间。

  • Expires时间段过后,订阅将自动终止。

  • 订阅在用户代理之间建立对话。

  • 可通过在到期时间之前,在对话框中发送另一个SUBSCRIBE来重新订阅。

  • 用户订阅将收到200 OK。

  • 用户可通过发送另一个Expires值为0的SUBSCRIBE方法来取消订阅。

                            图5.SUBSCRIBE消息及应答

3.2.通知(NOTIFY)用户代理使用NOTIFY来获取特定事件的发生。当订阅者和通知者之间存在订阅时,通常会在对话框中触发NOTIFY。

  • 如果通知者收到每个NOTIFY将得到200 OK响应。

  • NOTIFY包含一个表示事件Event头字段和一个表示订阅当前状态的subscriptionstate头字段。

  • NOTIFY总是在订阅开始和结束时发送。

3.3.发布(PUBLISH)被用户代理用来向服务器发送事件状态信息。

                      图6.PUBLISH消息传递

  • 当有多个事件信息源时,PUBLISH最有用。

  • PUBLISH请求类似于NOTIFY,只是它不是在对话中发送的。

  • 一个PUBLISH请求必须包含一个Expires头域和一个Min-Expires头域。

3.4.参考(REFER)被用户代理用来引用另一个用户代理来访问对话的URI。

  • REFER必须包含一个Refer-To标头。这是REFER的强制标头。

  • REFER可以在对话框内部或外部发送。

  • 202 Accepted将触发REFER请求,表明其他用户代理已接受该引用。

3.5.信息(INFO)用户代理使用将呼叫信令信息发送到与其建立了媒体会话的另一个用户代理。

  • 这是一个端到端的请求。

  • 代理将始终转发 INFO 请求。

3.6.更新(UPDATE)如果会话未建立,UPDATE用于修改会话的状态。用户可以使用UPDATE更改编解码器。

  • 如果建立了会话,则使用重新邀请来更改/更新会话。

3.7.早确认(PRACK)用于确认收到可靠传输的临时响应(1XX)。

  • 通常PRACK由客户端在收到包含RSeq可靠序列号和supported:100rel标头的临时响应时生成。

  • PRACK在机架标题中包含(RSeq + CSeq)值。

  • PRACK方法适用于所有临时响应,除了100 Trying响应,它永远不会可靠地传输。

  • 一个 PRACK可包含一个消息体,可用于提供/回答交换。

3.8.信息(Message)用于使用SIP发送即时消息。IM通常由参与文本对话的参与者实时交换的短消息组成。

  • MESSAGE可以在对话内或对话外发送。

  • MESSAGE的内容作为 MIME 附件携带在消息正文中。

  • 通常会收到200 OK响应,表明消息已在其目的地传递。

本文根据 https://www./相关文章翻译整理

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多