美文网首页
pjsip开发——sip日志分析

pjsip开发——sip日志分析

作者: samychen | 来源:发表于2018-02-25 12:37 被阅读0次

  这一节将通过一个简单的例子来介绍一些基本的 SIP 操作。先让我们来诊视下图展示的两个用户代理之间的消息顺序。关于SIP协议详细流程,可以参考RFC3261-SIP协议,当然如果不习惯的话可以参考中文翻译版RFC3261-SIP协议中文版

  收到180响应时建立dialog叫做早期对话(early dialog),收到2XX的应答开始才是真正的dialog建立。

sip呼叫.png

当然,这个代理可以有多个代理,其实也就就是多了代理服务器之间的转发过程,如下图:

The SIP dialog flow

发起呼叫流程

//发出 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> 
//呼叫发起方收到200 OK消息,直接发送一个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 
//发送回应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 
//如果接受邀请,则在接受之前发送回应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 
如果决定应答呼叫,则发送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 
//接收到邀请方发来的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 

终止呼叫或拒绝接受邀请

//发送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> 

取消邀请过程

//发出 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> 
//发送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 

相关文章

  • pjsip开发——sip日志分析

      这一节将通过一个简单的例子来介绍一些基本的 SIP 操作。先让我们来诊视下图展示的两个用户代理之间的消息顺序。...

  • 2018-08-16

    Android 语音通话模块介绍(一) PJSIP简介 PJSIP是一个开放源代码的SIP协议栈;官网地址(h...

  • Android - SIP(二) PJSIP

    前言 上一篇文章中,已经说了为什么要使用PJSIP 这个库,这里就说一下,自己的记录,当然也会放上简单的demo ...

  • PJSIP开发VoIP记录3-通话的实现

    PJSIP开发VoIP记录1 - 编译与集成 PJSIP开发VoIP记录2 - 配置 开发工具:Xcode9.2开...

  • PJSIP2.6

    版本号:library_pjsua-20171027 是基于pjsip的基础上再次封装的sip通话功能模块,实现了...

  • 交叉编译pjsip

    说明  PJSIP是一种以C语言编写的免费开源多媒体通信库,实现基于标准的协议,如SIP,SDP,RTP,STUN...

  • Pycharm中配置QT Designer

    1. 先安装SIP 1.1 什么是sip? sip是RiverBank(也就是PyQt的开发商)开发的用于PyQt...

  • android-SIP:实战_Register(3)

    基于SIP点对点视频呼叫视频播放 知识点回顾: Android-SIP_开发介绍(1) Android-SIP库:...

  • pjsip开发——Endpoint

    Endpoint Endpoint类是一个单例类,应用程序必须创建一个,最多只能创建一个此类实例,然后才能执行其他...

  • pjsip开发——Call

    呼叫使用Call来实现,一般根据需要我们需要自定义Call的实现 在具体实现类中,通过重写呼叫回调,用于处理与呼叫...

网友评论

      本文标题:pjsip开发——sip日志分析

      本文链接:https://www.haomeiwen.com/subject/slacxftx.html