一 SIP会话发起协议 - 先知道是什么( 二 )


SIP请求与响应SIP消息有两种类型 - 请求与响应

  • 请求的开始行包含定义请求的方法及定义要发送请求的URI
  • 同样,响应的开始行包含响应代码
方法可以被认为是SIP请求,它们请求由另一用户代理或服务器采取的特定动作 。
方法分为两种类型 : 核心方法 与 扩展方法
六种核心方法Invite 邀请
  • 用于启动与用户代理的会话 。
  • 成功的Invite 请求在两个用户代理之间建立对话 。
  • 在已经建立的对话框中发送Invite 被称为 re-invite,re-invite用于更改会话特性或刷新对话框的状态 。
  • 可以在邮件正文中包含主叫方的媒体信息 。

一 SIP会话发起协议 - 先知道是什么

文章插图
示例:
INVITE sips:Bob@TMC.com SIP/2.0  Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9  Max-Forwards: 70  From: Alice<sips:Alice@TTP.com>;tag = 1234567  To: Bob<sips:Bob@TMC.com>   Call-ID: 12345601@192.168.2.1     CSeq: 1 INVITE  Contact: <sips:Alice@client.ANC.com>  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY  Supported: replaces  Content-Type: application/sdp  Content-Length: ...      v = 0  o = Alice 2890844526 2890844526 IN IP4 client.ANC.com  s = Session SDP  c = IN IP4 client.ANC.com  t = 3034423619 0  m = audio 49170 RTP/AVP 0  a = rtpmap:0 PCMU/8000 Bye 挂断
  • Bye是用于终止既定会话的方法 。
  • BYE请求通常路由端到端,绕过代理服务器 。
Register 注册
  • REGISTER请求执行用户代理的注册 。
  • 它在正在注册的用户的To头中携带AOR(记录地址)
Cancel 取消
  • CANCEL用于终止未建立的会话 。
  • CANCEL是逐跳请求,即它通过用户代理之间的元素,并接收下一个有状态元素生成的响应 。

一 SIP会话发起协议 - 先知道是什么

文章插图
ACK 确认
  • ACK用于确认对INVITE方法的最终响应 。
options
  • OPTIONS方法用于向用户代理或代理服务器询问其功能并发现其当前的可用性 。
八种扩展方法订阅
  • 用户代理使用Subscribe建立订阅,以获取有关特定事件的通知 。
  • 它包含一个Expires头字段 , 指示订阅的持续时间 。期限过后,订阅将自动终止 。
  • 订阅在用户代理之间建立一个对话 。
  • 用户可以使用Expires值0(零)发送另一个SUBSCRIBE方法来取消订阅 。

一 SIP会话发起协议 - 先知道是什么

文章插图
通知
  • 用户代理使用NOTIFY来获取特定事件的发生 。通常,当订户和通知程序之间存在订阅时 , NOTIFY将在对话框内触发 。
  • NOTIFY包含指示事件的事件头字段和指示订阅的当前状态的subscriptionstate头字段 。
  • 【一 SIP会话发起协议 - 先知道是什么】始终在订阅的开始和结束时发送NOTIFY 。
发布
  • PUBLISH被用户代理用于向服务器发送事件状态信息 。
  • 当有多个来源的事件信息时 , PUBLISH是非常有用的 。
  • PUBLISH请求类似于NOTIFY,除了它不在对话框中发送 。
  • PUBLISH请求必须包含Expires头字段和Min-Expires头字段 。

一 SIP会话发起协议 - 先知道是什么

文章插图
参考
  • REFER由用户代理用于引用另一个用户代理来访问对话框的URI 。
  • REFER必须包含Refer-To标题 。这是REFER的强制标题 。
  • REFER可以在对话框内部或外部发送 。
  • A 202 Accepted将触发REFER请求,指示其他用户代理已经接受引用 。
信息
  • INFO由用户代理使用,以向其已经建立媒体会话的另一用户代理发送呼叫信令信息 。
  • 这是一个端到端的请求 。
  • 代理将始终转发INFO请求 。
UPDATE
  • 如果会话未建立,则UPDATE用于修改会话的状态 。用户可以使用UPDATE更改编解码器 。
  • 如果会话建立 , 则使用重新邀请来更改/更新会话 。
PRACK