1、基本知识点:

该协议是IP网络上进行多媒体通信的应用层控制协议,用来创建、修改、终结一个或多个参加者参加的会话进程

创建:A<------>B

修改:A要给C打电话

终结:结束通话

文本编解码的,采用事务机制(每个请求触发server,请求和响应构成一个事物,事物间彼此独立)

sip独立于底层传输协议:sip协议承载在iP网,网络层协议为IP,传输层协议可用于TCP/UDP (推荐udp)

SDP---》sip----》UDP/tcp---->IPv4/IPv6---->接入网

2、标准

RFC3261 。。。

3、sip逻辑实体-----逻辑意义上的实体,实际不存在

UAS/UAC:用户代理(服务端/用户端)

两个的区分没那么明显:只要谁发起谁就是用户端

代理服务器:

代理服务器接收sip请求并将其路由至其它代理服务器或终端(负载均衡:一个代理服务器连接多个服务器)

重定向服务器

收到请求时,通过应答将路由器信息推送到客户端,客户端收到应答,可以向指定的服务器发起请求

注册服务器

用来接受UAC的注册信息,登记用户的联系方式信息(IP,域名。。。),如果存在定位服务器,把信息写入定位服务器中

注册服务器代理服务器甚至所以的服务器都可以为同一设备-------IPPBX设备

 4、sip消息概述

sip是使用UTF-8字符集的文本协议,协议定义了两类消息格式:【请求消息---应答消息】

//消息类似于http
generic-message = start-line
                  *message-header
                   CRLF
                   [message-body]
start-line      = Request-Line / Status-Line

/*
请求消息和应答消息的开始行不同:Request-Line / Status-Line
message-header:
        ·由一些头域组成,包含那种头域取决于具体的消息和Method
message-body:
        ·由头域中的Content-type组成,一般为session description(SDP)
说明:SP为空格,CRLF为回车换行

Method SP Request-URI SP SIP-Version

Request-Line:请求消息

Request-Line = Method SP Request-URI SP SIP-version CRLF

Method6种:

        REGISTER:用于向注册服务器联系人地址

        INVITE:用于用于发起会话请求或邀请某个用户加入会话,发出invite的一方可以通过message body 携带SDP,指明本次会话的媒体类型及参数。

        ACK:对INVITE的最终响应,该消息仅和INVITE配套使用。

        CANCEL:取消尚未完成的invite请求

        BYE:结束会话

        OPTIONS:查询服务器能力

扩展定义:

PRACK(保证零时应答的可靠性),INFO,MESSAGE,UPDATE,NOFIFY,REFER

(支持哪些Method可通过头域中的ALLOW指示)

Request-URI:代表请求涉及的用户或者服务的地址。
格式:sip:user:password@host:port;uri-parameters?headers
user:用户地址标识,可以是标准的电话号码、文本形式的用户名
password:可选,不推荐用户密码明文传输
host:代表提供SIP服务的地址标识,可以是域名或者IP地址
port:和host配对,指明提供sip服务的TCP/udp端口号
uri-parameters:uri参数,格式类似http,采用name=alue格式。。。
header:请求的头域

STATUS-Line:

status-line  = SIP-VERSION SP STATUS-CODE SP Reason-Phrase CRLF
STATUS-CODE:3位数字组成,代表请求处理结果,第一个数字代表大类:,后两个数字代表具体应答子类型
Reason-Phrase:为code对应的文本解释
//---------服务器应答返回-----
1xx:临时应答,代表请求收到,正在处理这个请求
2xx:最终应答,请求处理成功
3xx:重定向应答,转到请求到其它服务器
4xx:客户端错误,消息格式错误或服务器无法接受,或者服务器不能处理
5xx:服务器错误,请求合法,但服务器处理不了
6xx:请求不能被任何服务器处理

100:正在尝试

180:请求成功执行

300:在请求的地址进行解析时出现多个请求

401:在进行此项请求之前需要进行授权

407:在进行之前,首先需要用户代理授权

501;没有实现该服务

603:拒绝服务的黑名单

From

请求发起者

To

请求接收者

Call-ID

唯一区别一个特定的邀请或者一个特定的客户端的所以注册项

Cseq

请求中的Cseq头域,包含一个单个的数字序列号、请求的方法,Cseq头域是为了在会话中对事务进行排序的,提供事务的唯一标志,并且区分请求和请求的重发

Contact

会话参与者的联系方式