<h5>一、SIP注册流程</h5>
(1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求;
(2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401 Unauthorized 质询信息,其中包含安全认证所需的令牌;
(3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用 REGISTER 消息报告给代理服务器;
(4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后, 将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK
<h5>二、注销流程</h5>
(1)终端向代理服务器发送Register消息注销,其头中expire字段置0。
(2)代理服务器收到后回送200响应,并将数据库中的用户有关信息注销。
<h5>基本呼叫建立过程</h5>
首先代理终端A向代理服务器发送Invite请求,这时代理服务器向代理终端B转送A的Invite,同时服务器向代理终端A发送100Trying(处理中的答应信息),终端代理B也会向服务器发送100Trying(处理中的答应信息),此时终端B被提示响铃(180Ringing)并向服务器发送180Ringing信息,然后服务器回像终端A发送终端B已响铃信息,如果终端B接听来电则B向服务器发送OK,服务器转发OK到A,A返回ACK(确认)到服务器,服务器并转发到B,然后开始通话。
我的理解SIP的流程类似于HTTP的协议请求,有终端有请求,服务端就需要反馈,如果终端接到反馈没有下一步操作了必须确认到服务器才能结束请求。
<h5>sip示例</h5>
SIP-GW#debug ccsip messages
Sent:INVITE sip:3401@10.6.2.10:5060 SIP/2.0 //这里是 UAS 的地址
Via: SIP/2.0/UDP 10.6.3.1:5060;branch=z9hG4bKA1798 //每一跳都会在 Via 中写上自己的地址 From: <sip:4105553501@10.6.3.1>;tag=105741C-1D5E //这里 UAC 的地址To: <sip:3401@10.6.2.10>
Date: Fri, 06 Jan 2006 05:35:01 GMTCall-ID: E937365B-2C0C11D6-802FA93D-4772A3BB@10.6.3.1 //这个呼叫的唯一标识
Supported: 100rel, timer //支持的 extension Min-SE: 1800 //minimum session interval
Cisco-Guid: 3892269682-738988502-2150410557-1198695355 //唯一标识发起 INVITE 的 UAC User-Agent: Cisco-SIPGateway/IOS-12.xAllow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER //支持的 methods
CSeq: 101 INVITE //call sequence numberMax-For wards: 70 //最多有多少个 proxy 或 gateway 可以 for ward 这个呼叫
Remote-Party-ID: <sip:4105553501@10.6.3.1>;party=calling;screen=no;privacy=off Timestamp: 1014960901Contact: <sip:4105553501@10.6.3.1:5060>
Expires: 180Allow-Events: telephone-event
Content-Type: application/sdp //包含 SDP message Content-Length: 202
<h5>SIP的优缺点</h5>
**1. 优点 **
Session 呾 Media 间的处理彼此独立,因此 SIP 更加灵活。
SIP 是开放、标准协议。
SIP messages 是明文的,利亍 trouble shooting。
拥有不同 capability 的用户见一样 可以通讯。例如:在一个 video conference 中,video 用户呾 audio 用户一样可以通讯,只不过是 audio 看不到视频而已。
2. 缺点
由亍 SIP messages 是明文的,router 必须将明文的 message 翻译为
路由器语言,这就导致了 router 产生更高的负载。
SIP 是个较新的协议,懂得人丌多。
如果在同一个网络中同时有 SIP Phone 和 SCCP Phone,必须在 in-band DTMF 和 out-band DTMF 间进行转换。
SIP 仍然是一个处亍开发中的协议。
DialPlan:
SIP 的默认行为是把 Dial Plan 分发至所有的 endpoint,当用户拧号时, SIPPhone 会对比拧入的号码呾 Dial Plan,如果能匹配上才发送 INVITE。使 用这个模式时必须要配置 SIP Dial Rule。 或者也可以使用 Key Press Markup Language(KPML)。这个类似亍早期 版本 CallManger 所使用的 SCCP 协议,SIP Phone 会把拧出的号码发送至 CallManager,由 CallManger 对比 Dial Plan。