SIP 协议抓包学习笔记

SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点 [1]。想要完整的学习sip协议, 可以参考RFC3261.

  • SIP呼叫基本流程
    SIP 协议抓包学习笔记_第1张图片
    [2]

上图是RFC3261给出的例子,在抓包学习的时候, 实际情况更为简单, 没有proxy的环节。

SIP 协议抓包学习笔记_第2张图片
首先将192.168.1.4定义为device1, 192.168.1.5定义为device2。从抓包的截图中, 我们可以发现:

  1. device1 发送INVITE命令给device2, 在INVITE中包含了SDP信息, 如下图, 第一部分是SIP相关内容, 第二部分是SDP相关内容
    SIP 协议抓包学习笔记_第3张图片
    SIP 协议抓包学习笔记_第4张图片
    其中SDP部分主要描述了device1的media能力, 包括audio、video、双流share。包括具体支持哪些编码类型,编码参数等。video能力中profile、level等参数可以参考h241文档。
  2. device2 回复device1 100 trying 和180 ringing
    100 trying是通知device1收到INVITE请求了, 180 Ringing是正在响铃的意思,即正在做一些initialization 的动作
  3. device1 向device2发送PRACK (provisional ack),用来回复180, 终止该应答重发。device2 回复200 OK回应PRACK。这一过程非必需。
  4. device2 回复200 OK(针对INVITE请求)给device1, 并附带SDP, device2回复ACK。到此双方media能力交换完成,可以互发RTP数据。
  5. 中间我们可以看到device1 又给device2 发送了INVITE request,这个是会话途中调整参数的方式,在查看第二个INVITE message细节的时候, 我们可以发现SDP中多了desktop share具体的解码能力。之后的200 OK和ACK走下流程。
    SIP 协议抓包学习笔记_第5张图片
    6.BYE请求和200 OK, 结束会话。
    [1] https://baike.baidu.com/item/SIP/33921
    [2] https://tools.ietf.org/html/rfc3261

你可能感兴趣的:(协议学习)