首先配置好SoftCo交換機以後,而後配置SIP軟終端,在配置好以後,會自發向SIP服務器註冊,發送register請求報文,服務器收到後註冊經過,則返回狀態報文OK,表示註冊成功。
8001呼叫8000,向SIP服務器發送INVITE報文,向源發送Trying報文,SIP服務器經過查詢USN,找到對應的分機號碼,而後將INVITE報文轉發給8000,8000收到後向服務器返回Trying報文,若是8000接受INVITE的參數,則8000響鈴,向SIP服務器發送ringing回鈴消息, SIP服務器收到後,將ringing回鈴消息轉發給8001,這時8001提到回鈴聲 ;同時若是8000摘機了,向SIP服務器返回狀態消息OK,表示對方摘機,SIP服務器轉發給8001,8001收到OK後,發送ACK確認,經SIP服務器轉發給8001,這時整個通話鏈接創建起來,用RTP協議來傳輸語音視頻流,雙方便能聽到聲音了。通話一段時間後,若是8001想要結束通話,則掛機,向SIP服務器發送BYE消息,SIP服務器轉發給8000,同時返回狀態消息OK,8000收到BYE則知道對方已掛機,返回Trying和OK消息,最後整個通話結束。
以上內容均爲我的看法,歡迎各位指正!報文詳細格式請參考附件文檔。
sip消息類型和消息格式
SIP是一個基於文本的協議,使用的是UTF-8字符集.
SIP消息主要分爲兩大類:
一類是由客戶端發往服務器的請求消息(Request);
一類是由服務器發往客戶端的應答消息(Response).
一個基本的SIP消息包括起始行、一個或多個頭字段、說明頭字段結束的空行和一個可選的消息體。
消息=起始行(包括請求行/狀態行;請求行規定了請求的類別,而狀態行指出了每一個請求的狀態,好比是成功仍是失敗。若是是失敗的話還要給出失敗的緣由或類型。)
*頭字段
CRLF
[消息體] (消息首部給出了關於請求或應答的更多信息通常包括消息的來源、規定的消息接收方,另外還包括一些其餘方面的重要信息。 消息體一般描述將要創建會議的類型包括所交換媒體的描述,但不具體定義消息體的內容或結構,其結構或內容使用另一個協議來描述,就是會話描述協議 SDP。)
請求消息
請求行=方法 +空格 +請求地址 +SIP版本號 +空行
經過一個請求行做爲起始行,請求行包括了方法名、請求的URL、協議版本號、中間用空格分開。
六種請求方法:
INVITE 發出呼叫會話請求
ACK INVITE請求被最終請求
BYE 釋放一個呼叫會話
CANCEL 取消掛起的呼叫
REGISTER 登記註冊用戶代理
OPTIONS 查詢服務器能力
應答消息
狀態行=SIP版本+空格+狀態碼+空格+相關文本短語+空行
SIP
應答消息狀態碼與功能
類型 狀態碼 狀態說明
臨時應答(1XX) 100 Trying 正在處理中
180 Ringing
振鈴
181 call being forwarder
呼叫正在前向
182 queue
排隊
181* session progress
會話進行
會話成功(2XX) 200 OK 會話成功
重定向(3XX) 300 multiple 多重選擇
301 moved permanently
永久移動
302 moved temporaily
臨時移動
305 use proxy
用戶代理
380 alternative service
替代服務
請求失敗(4XX) 400 bad request 錯誤請求
401unauthorized
未受權
402 payment required
付費要求
403 forbidden
禁止
404 not found
未發現
405 method no allowed
方法不容許
406 not acceptable
不可接受
407 proxy authentication required
代理須要認證
408 request timeout
請求超時
410 gone
離開
413 request entity too large
請求實體太大
414 request-url too long
請求URL太長
415 unsupported media type
不支持的媒體類型
416 unsupported url scheme
不支持的URL計劃
420 bad extension
不良擴展
421 extension required
須要擴展
423 interval too brief 間隔過短
480 temporarily unavailable
臨時失效
481 call/transaction does not exist
呼叫/事務不存在
482 loop detected
發現環路
483 too many hops
跳數太多
484 address incomplete
地址不完整
485 ambiguous
不明朗
486 busy here
這裏忙
487 request terminated
請求終止
488 not acceptable here
這裏請求不可接受
491 request pending
未決請求
493 undecipherable
不可辨識
服務器失敗(5XX) 500 server internal error 服務器內部錯誤
501 not implemented
不可執行
502 bad gateway
壞網關
503 service unavailable
服務無效
504 server time-out
服務器超時
505 version not supported
版本不支持
513 message too large
消息太大
全局性錯誤(6XX) 600 busy everywhere 全忙
603 decline
丟棄
604 does not exist anywhere
不存在
606 not acceptable
不可接受