pjsip開發(fā)——sip日志分析

??這一節(jié)將通過一個簡單的例子來介紹一些基本的 SIP 操作。先讓我們來診視下圖展示的兩個用戶代理之間的消息順序。關于SIP協議詳細流程,可以參考RFC3261-SIP協議,當然如果不習慣的話可以參考中文翻譯版RFC3261-SIP協議中文版

??收到180響應時建立dialog叫做早期對話(early dialog),收到2XX的應答開始才是真正的dialog建立。

sip呼叫.png

當然,這個代理可以有多個代理,其實也就就是多了代理服務器之間的轉發(fā)過程,如下圖:

The SIP dialog flow

發(fā)起呼叫流程

//發(fā)出 INVITE請求
Request: INVITE sip:100@172.20.16.107 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54..
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107> 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22243 INVITE 
Content-Type: application/sdp..

//返回響應 100 Trying
Response: SIP/2.0 100 Trying 
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22243 INVITE 
Contact: <sip:100@172.20.16.146> 

//如果被邀請方收到INVITE 請求,在應答呼叫之前接收到響應180 Ringing
Response: SIP/2.0 180 Ringing 
Via: SIP/2.0/UDP 
172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22243 INVITE 
Contact: <sip:100@172.20.16.146> 
//收到被邀請方應答呼叫的響應 200 OK
Response: SIP/2.0 200 OK 
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22243 INVITE 
Contact: <sip:100@172.20.16.146> 
//呼叫發(fā)起方收到200 OK消息,直接發(fā)送一個ACK確認消息給被邀請方
Request: ACK sip:100@172.20.16.146 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK30F7F7B47E45499BAC441059EFA2DEA2 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22243 ACK 

接受呼叫過程

//接收到 INVITE請求
Request: INVITE sip:300@172.20.16.107 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8 
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71 
To: <sip:300@172.20.16.107> 
Contact: <sip:100@172.20.16.146> 
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146 
CSeq: 102 INVITE 
Date: Tue, 15 Mar 2005 05:41:21 GMT 
//發(fā)送回應100 Trying
Response: SIP/2.0 100 Trying 
Via: SIP/2.0/UDP 172.20.16.146:5060;f=z9hG4bK5490f4d8 
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71 
To: <sip:300@172.20.16.107>;tag=3363667257 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146 
CSeq: 102 INVITE 
//如果接受邀請,則在接受之前發(fā)送回應180 Ringing
Response: SIP/2.0 180 Ringing 
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8 
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71 
To: <sip:300@172.20.16.107>;tag=3363667257 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146 
CSeq: 102 INVITE 
如果決定應答呼叫,則發(fā)送200 Ok消息
Response: SIP/2.0 200 Ok 
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8 
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71 
To: <sip:300@172.20.16.107>;tag=3363667257 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146 
CSeq: 102 INVITE 
//接收到邀請方發(fā)來的ACK確認消息
Request: ACK sip:300@172.20.16.107:5060 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK74cf8e58 
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71 
To: <sip:300@172.20.16.107>;tag=3363667257 
Contact: <sip:100@172.20.16.146> 
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146 
CSeq: 102 ACK 

終止呼叫或拒絕接受邀請

//發(fā)送BYE消息
Request: BYE sip:100@172.20.16.146 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK2CF3B0C22620465D988E1CC2C8A71C56 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22244 BYE 
返回200 OK消息
Response: SIP/2.0 200 OK 
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK2CF3B0C22620465D988E1CC2C8A71C56 
From: 300 <sip:300@172.20.16.107>;tag=2549473886 
To: <sip:100@172.20.16.107>;tag=as30112a7b 
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107 
CSeq: 22244 BYE 
Contact: <sip:100@172.20.16.146> 

取消邀請過程

//發(fā)出 INVITE請求
Request: INVITE sip:100@172.20.16.107 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107> 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 INVITE 
//返回響應 100 Trying
Response: SIP/2.0 100 Trying 
Via: SIP/2.0/UDP 
172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107>;tag=as3324adcc 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 INVITE 
Contact: <sip:100@172.20.16.146> 
//返回響應180 Ringing
Response: SIP/2.0 180 Ringing 
Via:SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107>;tag=as3324adcc 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 INVITE 
Contact: <sip:100@172.20.16.146> 
取消INVITE請求
Request: CANCEL sip:100@172.20.16.107 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107> 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 CANCEL 
返回487請求終止應答
Response: SIP/2.0 487 Request Terminated 
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107>;tag=as3324adcc 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 INVITE 
Contact: <sip:100@172.20.16.146> 
//返回應答200 OK
Response: SIP/2.0 200 OK 
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107>;tag=as3324adcc 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 CANCEL 
Contact: <sip:100@172.20.16.146> 
//發(fā)送ACK確認消息
Request: ACK sip:100@172.20.16.107 SIP/2.0 
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6 
From: 300 <sip:300@172.20.16.107>;tag=1829163469 
To: <sip:100@172.20.16.107>;tag=as3324adcc 
Contact: <sip:300@172.20.16.107:5060> 
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107 
CSeq: 41305 ACK 
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,678評論 19 139
  • SIP呼叫流程 注冊注銷過程 ??SIP為用戶定義了注冊和注銷過程,其目的是可以動態(tài)建立用戶的邏輯地址和其當前聯系...
    samychen閱讀 5,281評論 0 2
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,271評論 25 708
  • 關鍵詞: SIPLifesize華為對通 摘要: 在使用SIP協議與外廠商終端對通過程中遇到諸多問題,特在此總結。...
    johney_zhou閱讀 1,675評論 0 1
  • 寫在他鄉(xiāng)的夢想 □巴山雪兒 ...
    巴山雪兒閱讀 208評論 0 1

友情鏈接更多精彩內容