<h5>一、SIP注冊流程</h5>
(1)用戶首次試呼時,終端代理A 向代理服務器發(fā)送REGISTER 注冊請求;
(2)代理服務器通過后端認證/計費中心獲知用戶信息不在數據庫中,便向終端代理回送401 Unauthorized 質詢信息,其中包含安全認證所需的令牌;
(3)終端代理提示用戶輸入其標識和密碼后,根據安全認證令牌將其加密后,再次用 REGISTER 消息報告給代理服務器;
(4)代理服務器將REGISTER 消息中的用戶信息解密,通過認證/計費中心驗證其合法后, 將該用戶信息登記到數據庫中,并向終端代理A 返回成功響應消息200 OK
<h5>二、注銷流程</h5>
(1)終端向代理服務器發(fā)送Register消息注銷筋搏,其頭中expire字段置0翔始。
(2)代理服務器收到后回送200響應诈茧,并將數據庫中的用戶有關信息注銷刨仑。
<h5>基本呼叫建立過程</h5>
首先代理終端A向代理服務器發(fā)送Invite請求努释,這時代理服務器向代理終端B轉送A的Invite拷泽,同時服務器向代理終端A發(fā)送100Trying(處理中的答應信息)疫鹊,終端代理B也會向服務器發(fā)送100Trying(處理中的答應信息)袖瞻,此時終端B被提示響鈴(180Ringing)并向服務器發(fā)送180Ringing信息,然后服務器回像終端A發(fā)送終端B已響鈴信息拆吆,如果終端B接聽來電則B向服務器發(fā)送OK聋迎,服務器轉發(fā)OK到A,A返回ACK(確認)到服務器,服務器并轉發(fā)到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 //唯一標識發(fā)起 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的優(yōu)缺點</h5>
**1. 優(yōu)點 **
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 仍然是一個處亍開發(fā)中的協議墩邀。
DialPlan:
SIP 的默認行為是把 Dial Plan 分發(fā)至所有的 endpoint,當用戶擰號時, SIPPhone 會對比擰入的號碼呾 Dial Plan,如果能匹配上才發(fā)送 INVITE掌猛。使 用這個模式時必須要配置 SIP Dial Rule。 或者也可以使用 Key Press Markup Language(KPML)眉睹。這個類似亍早期 版本 CallManger 所使用的 SCCP 協議,SIP Phone 會把擰出的號碼發(fā)送至 CallManager,由 CallManger 對比 Dial Plan荔茬。