概述
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点 [1]。想要完整的学习sip协议, 可以参考RFC3261.
- SIP呼叫基本流程
[2]
上图是RFC3261给出的例子,在抓包学习的时候, 实际情况更为简单, 没有proxy的环节。
首先将192.168.1.4定义为device1, 192.168.1.5定义为device2。从抓包的截图中, 我们可以发现:
- device1 发送INVITE命令给device2, 在INVITE中包含了SDP信息, 如下图, 第一部分是SIP相关内容, 第二部分是SDP相关内容
其中SDP部分主要描述了device1的media能力, 包括audio、video、双流share。包括具体支持哪些编码类型,编码参数等。video能力中profile、level等参数可以参考h241文档。 - device2 回复device1 100 trying 和180 ringing
100 trying是通知device1收到INVITE请求了, 180 Ringing是正在响铃的意思,即正在做一些initialization 的动作 - device1 向device2发送PRACK (provisional ack),用来回复180, 终止该应答重发。device2 回复200 OK回应PRACK。这一过程非必需。
- device2 回复200 OK(针对INVITE请求)给device1, 并附带SDP, device2回复ACK。到此双方media能力交换完成,可以互发RTP数据。
- 中间我们可以看到device1 又给device2 发送了INVITE request,这个是会话途中调整参数的方式,在查看第二个INVITE message细节的时候, 我们可以发现SDP中多了desktop share具体的解码能力。之后的200 OK和ACK走下流程。
6.BYE请求和200 OK, 结束会话。
[1] https://baike.baidu.com/item/SIP/33921
[2] https://tools.ietf.org/html/rfc3261
最后
以上就是生动楼房为你收集整理的SIP 协议抓包学习笔记的全部内容,希望文章能够帮你解决SIP 协议抓包学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复