SIP协议

一、SIP协议概念

会话启动协议 SIP(Session Initiation Protocol) 是一个在IP网络上进行多媒体通信的应用层控制协议,被用来创建、修改、和终止一个或多个参加者参加的会话进程。

协议功能:

  • 用户定位:确定参加通信的终端用户位置;
  • 用户通信能力协商:确定通信的媒体类型和参数;
  • 建立呼叫:包括向被叫 "振铃",确定主叫和被叫的呼叫参数;
  • 呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。

SIP是在应用层上的协议,可以使用UDP、TCP,但一般默认使用UDP5060端口进行信令控制

控制流:由上图可以分析到,首先发送方将呼叫送到语音网关上面,再由语音网关送到接收方。

媒体流:媒体流是不需要经过语音网关的,直接是和接收方点对点传输媒体流。

所以可能会出现一种情况,我们信令层面是可以送达的(有振铃音),但是接起来电话没有声音,遇到这种情况需要排查一下 从发送方接收方网络上是否有限制。

二、SIP URL

为了能够正确传送协议消息,SIP还需要解决两个重要问题,第一是 "寻址",即采用什么样的地址形式标识终端用户。第二是 "用户的定位"。

寻址采用 SIP URL,按照RFC2396规定的URL导则定义其语法,特别是用户名字段可以是电话号码,以支持IP电话网关寻址,实现IP电话和PSTN的互通。

SIP URL的一般格式结构为:

  • SIP; 2783862@127.0.0.1:5061; User=phone;
  • SIP;用户名@主机:端口,用户参数;

三、SIP协议消息体

1、请求消息分类

请求消息 消息含义
INVITE 发起会话请求,邀请用户加入一个会话
ACK 对INVITE请求的最终响应;该消息配合INVITE使用
BYE 结束会话
CANCEL 取消尚未完成的请求
REGISTER 注册
OPTIONS 查询服务器的能力

2、请求消息结构

INVITE sip:2783862@47.105.157.168:15060 SIP/2.0   # 消息名称 对端URL 版本

From: <sip:02133195711@27.17.53.100>;tag=XrU4v00Xm6ZrQ # 发送方
To: <sip:2783862@47.105.157.168:15060>                 # 接收方
CSeq: 61369395 INVITE
Call-ID: 977c6c60-fdcf-123b-2e8a-fefcfeabc200           # 唯一标识
Via: SIP/2.0/UDP 27.17.53.100:38890;rport;branch=z9hG4bKByyNQBrUKmy9K  # 标识请求路径
Contact: <sip:mod_sofia@27.17.53.100:38890>
Supported: timer, path, replaces
Max-Forwards: 70                                         # 最大跳转数

3、响应消息分类

对上面请求消息的回应

状态码 解释 表述
1xx 临时响应 表示已经接收到请求,正在处理
2xx 成功响应 表示成功接受请求、处理
3xxx 重定向响应 表示需要采取下一步动作,以完成请求
4xx 客户端出错 表示请求消息中包含错误或SIP服务器不能完成该请求
5xx 服务端出错 表示SIP服务器故障不能完成对正确消息的处理
6xx 全局出错 表示请求不能在任何SIP服务器上实现

四、SIP呼叫流程

posted @ 2022-12-24 19:26  乱七八糟博客备份  阅读(639)  评论(0编辑  收藏  举报