pjsip开发——sip日志分析

pjsip开发——sip日志分析,第1张

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

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

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

上级=sip+源设备

1sip代理或下级向sip服务器发送REGISTER请求+sip编号+IP+端口
2sip服务器回复401+unauthorized
3sip代理或下级向sip服务器发送REGISTER请求+sip编号+IP+端口
4sip服务器回复200

1以message的方法发送一段xml文本,主要通过Catalog命令和DeviceID发送,获取设备,
2设备收到后,马上回复200
3还会回复设备相关信息给服务器
4服务器收到后回复200,给设备

流程描述如下:
a) 1:媒体流接收者向 SIP 服务器发送 Invite 消息,消息头域中携带 Subject 字段,表明点播的视频源 ID、分辨率、媒体流接收者 ID、接收端媒体流序列号等参数,SDP 消息体中 s 字段为“Play”代表实时点播;
b) 2:SIP 服务器收到 Invite 请求后,通过三方呼叫控制建立媒体服务器和媒体流发送者之间的媒体连接。向媒体服务器发送 Invite 消息,此消息不携带 SDP 消息体;
c) 3:媒体服务器收到 SIP 服务器的 Invite 请求后,回复 200 OK 响应,携带 SDP 消息体,消息体中描述了媒体服务器接收媒体流的 IP、端口、媒体格式等内容;
d) 4:SIP 服务器收到媒体服务器返回的 200 OK 响应后,向媒体流发送者发送 Invite 请求,请求中携带消息 3 中媒体服务器回复的 200 OK 响应消息体,并且修改 s 字段为“Play”代表实时点播,增加 y 字段描述 SSRC 值,f 字段描述媒体参数;
e) 5:媒体流发送者收到 SIP 服务器的 Invite 请求后,回复 200 OK 响应,携带 SDP 消息体,消息体中描述了媒体流发送者发送媒体流的 IP、端口、媒体格式、SSRC 字段等内容;
f) 6:SIP 服务器收到媒体流发送者返回的 200 OK 响应后,向媒体服务器发送ACK 请求,请求中携带消息 5 中媒体流发送者回复的 200 OK 响应消息体,完成与媒体服务器的 Invite 会话建立过程;
g) 7:SIP 服务器收到媒体流发送者返回的 200 OK 响应后,向媒体流发送者发送 ACK 请求,请求中不携带消息体,完成与媒体流发送者的 Invite 会话建立过程;
h) 8:完成三方呼叫控制后,SIP 服务器通过 B2BUA 代理方式建立媒体流接收者和媒体服务器之间的媒体连接。在消息 1 中增加 SSRC 值,转发给媒体服务器;
i) 9:媒体服务器收到 Invite 请求,回复 200 OK 响应,携带 SDP 消息体,消息体中描述了媒体服务器发送媒体流的 IP、端口、媒体格式、SSRC 值等内容;
j) 10:SIP 服务器将消息 9 转发给媒体流接收者;
k) 11:媒体流接收者收到 200 OK 响应后,回复 ACK 消息,完成与 SIP 服务器的 Invite 会话建立过程;
l) 12:SIP 服务器将消息 11 转发给媒体服务器,完成与媒体服务器的 Invite 会话建立过程;
m) 13:媒体流接收者向 SIP 服务器发送 BYE 消息,断开消息 1、10、11 建立的同媒体流接收者的 Invite 会话;
n) 14:SIP 服务器收到 BYE 消息后回复 200 OK 响应,会话断开;
o) 15:SIP 服务器收到 BYE 消息后向媒体服务器发送 BYE 消息,断开消息 8、9、12 建立的同媒体服务器的 Invite 会话;
p) 16:媒体服务器收到 BYE 消息后回复 200 OK 响应,会话断开;
q) 17:SIP 服务器向媒体服务器发送 BYE 消息,断开消息 2、3、6 建立的同媒体服务器的 Invite会话;
r) 18:媒体服务器收到 BYE 消息后回复 200 OK 响应,会话断开;
s) 19:SIP 服务器向媒体流发送者发送 BYE 消息,断开消息 4、5、7 建立的同媒体流发送者的Invite 会话;
t) 20:媒体流发送者收到 BYE 消息后回复 200 OK 响应,会话断开。

message(recordinfo+deviceID+time)->200
设备端xml类型码流发给服务器,发完后以bye结束,服务器回复200

a) 1:源设备向 SIP 服务器发送设备控制命令,设备控制命令采用 MESSAGE 方法携带;
b) 2:SIP 服务器收到命令后返回 200 OK;
c) 3:SIP 服务器向目标设备转发设备控制命令,设备控制命令采用 MESSAGE 方法携带;
d) 4:目标设备收到命令后返回 200 OK;
e) 5:目标设备向 SIP 服务器发送设备控制响应命令,设备控制响应命令采用 MESSAGE 方法携带;
f) 6:SIP 服务器收到命令后返回 200 OK;
g) 7:SIP 服务器向源设备转发设备控制响应命令,设备控制响应命令采用 MESSAGE 方法携带;
h) 8:目标设备收到命令后返回 200 OK

应该是设备吧……也有可能是虚拟的,软件模拟的……
汗……
sip服务器,笼统的说,可以实现注册用户功能,建立sip通话功能,等等。比如你用xlite或者sjphone打电话,那个是客户端,当你注册一个compte的时候你的客户端就发送sip协议注册到sip服务器上。通话也是同样原理,至于stun之类的不了解需要你自己查。

要在windows或者linux平台下开发基于SIP的软电话,需要以下软件
服务器端软件: 注册多个客户端到服务器上,可以进行通话测试
SIP客户端软件 :主要用于测试,可以对别人已经完成的客户端进行抓包,以比对自己程序的发包数据
SIP协议栈: 基于某个现成的SIP协议栈来开发会加快开发进度
RTP栈 :传输语言或者视频数据的协议栈
抓包测试工具: 调试网络程序最有效的办法
以下介绍这些软件主要以开源软件为主
一 服务器端软件

1,首先进入"功能表"-"设置"-"连接"-"sip设置"如下图: 默认的服务器为sipoyecallcom 其他服务器微no6oyecallcomno7oyecallcom 2,打开"sip设置"选择"新建sip模式"-"使用默认情景模式": 情景模式名称改为:OYECALL 服务情景模式为:IETF 默认接入点:选择你的wifi搜索到可以使用的无线路由名称(我的为WIFI)联通3g(wcdma)接入点选uninet有的地方为3gnet 公共用户名:你的用户名@sipoyecallcom(我的为22211007@no6oyecallcom) 使用压缩:否 注册:始终注册 使用安全机制:否 代理注册服务器见下面 代理服务器地址:sipoyecallcom 安全域:oyecall 用户名:oyecall的账号(我的为22211007) 密码:oyecall注册时给你的密码(我的就不告诉你了:) 允许宽松路由:是 传输类型:UDP 端口:2080 注册服务设置见下面 注册服务器:sipoyecallcom 安全域:oyecall 用户名:oyecall的账号(我的为22211007) 密码:oyecall注册时给你的密码(我的就不告诉你了:) 允许宽松路由:是 传输类型:UDP 端口:2080 4,"sip电话设置"好后,再返回选择"互联网电话",选"默认"再选择,名称:默认",sip情景模式为oyecall 见下图: 5,返回待机时就可以拨号,拨号后选择"ok"键,在出现的"呼叫"下选择"互联网电话呼叫"如下图: 6,如果要相互免费对打另一个拨号是888的6位数账号,别人用OYECALL打进来时,也可以直接接听。 ,在话机上还可以设置首先默认用网络电话打出去: 设置方式是:"功能表"-"设置"-"手机"-"通话" 发送本手机号码:网络预设 发送互联网电话地址:开 互联网电话呼叫等待:已启动 互联网电话提示:开 默认电话类型:互联网电话(拨出去默认为网络电话,失败后自动转成手机语音通话) 红色的内容是用户要修改的,其它的参数可以直接用 注册失败或者要重新注册时 *** 作:手机的sip设置:注册选择那改为"当需要时"注册后,再改回为"始终注册


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10410872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存